国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

UNITY--讀取Excel的幾種方式

這篇具有很好參考價值的文章主要介紹了UNITY--讀取Excel的幾種方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一.DLL插件讀取

1.1.Excel存放位置

1.2.使用示例

1.3.Excel格式

?1.4.輸出顯示?

1.5.所需插件

二.Excel轉(zhuǎn)成Asset文件,再進行讀取

2.1Excel文件存放位置

2.2 編輯模式生成Asset文件,并保存到指定位置?

2.3創(chuàng)建ExcelRead腳本,讀取Excel內(nèi)容

2.4 創(chuàng)建數(shù)據(jù)存儲腳本

2.5? 編輯器生成Asset 與屬性面板詳情

?2.6 Asset數(shù)據(jù)的使用方式

?三:Excel文件轉(zhuǎn)成json 再以json的方式讀取


一.DLL插件讀取

1.1.Excel存放位置

UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

如圖 將命名為cook的excel文件存放在Assets根目錄下

1.2.使用示例

using System.Data;
using System.IO;
using Excel;
using UnityEngine;

public class ExcelTool : MonoBehaviour
{
    void Start()
    {
        ReadExcel("/cook.xlsx");
    }

    public void ReadExcel(string xmlName)
    {
        FileStream stream = File.Open(Application.dataPath + xmlName, FileMode.Open, FileAccess.Read, FileShare.Read);
        //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);//讀取 Excel 1997-2003版本
        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);//讀取 2007及以后的版本

        DataSet result = excelReader.AsDataSet();

        if (stream != null)
        {
            stream.Close();
        }

        int[] counts = GetCount(result.Tables[0]);
        int rows = counts[0];
        int columns = counts[1];
        Debug.LogError("row:" + rows + "...col:" + columns);
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < columns; j++)
            {
                Debug.LogError(result.Tables[0].Rows[i][j].ToString());
            }
        }
    }

    private int[] GetCount(DataTable dt)
    {
        int i = dt.Rows.Count;
        for (int m = 0; m < dt.Rows.Count; m++)
        {
            if (string.IsNullOrEmpty(dt.Rows[m][0].ToString()))
            {
                i = m;
                break;
            }
        }

        int j = dt.Columns.Count;
        for (int n = 0; n < dt.Columns.Count; n++)
        {
            if (string.IsNullOrEmpty(dt.Rows[0][n].ToString()))
            {
                j = n;
                break;
            }
        }
        return new int[] { i, j };
    }
}

1.3.Excel格式

UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

?1.4.輸出顯示?

UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

1.5.所需插件

需導(dǎo)入3個dll文件到Plugins文件夾下。

分別是:Excel.dll EPPlus.dll 和 ICSharpCode.SharpZipLib.dl

插件下載https://download.csdn.net/download/lalate/87401837UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

??注意:上述示例在安卓真機上運行是讀取不到的,有解決了的同學(xué)歡迎評論補充,或者私信我

二.Excel轉(zhuǎn)成Asset文件,再進行讀取

2.1Excel文件存放位置

UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

2.2 編輯模式生成Asset文件,并保存到指定位置?

using System;
using System.Reflection;
using UnityEditor;
using UnityEngine;

public class ExcelReadEditor : Editor
{
    [MenuItem("Excel/批量讀表")]
    public static void ReadAllExcel()
    {
        Type typeInfo = typeof(ExcelReadEditor);

        MethodInfo[] methodInfo = typeInfo.GetMethods();
        foreach (MethodInfo mInfo in methodInfo)
        {
            if (mInfo.ToString().StartsWith("Void Create"))
            {
                mInfo.Invoke(null, null);
            }
        }
        Debug.Log("讀取全部表成功");
    }

    [MenuItem("Excel/讀取Decoration數(shù)據(jù)")]
    public static void CreateChapterData()
    {
        GetLocalData<LocalSheBei, Entity_SheBei>("SheBei");
        Debug.Log("讀取Decoration數(shù)據(jù)成功");
    }

    //泛型創(chuàng)建 保存本地數(shù)據(jù)
    public static void GetLocalData<T, W>(string fileName) where T : LocalDataBase<W>
    {
        T t = CreateInstance<T>();
        string filePath = Application.dataPath + "/Excel/" + "cook-en" + ".xlsx";
        //string filePath = Path.GetFullPath(".") + "\\Excel\\" + "cook-en" + ".xlsx";
        t.data = ExcelRead.GetExcelData<W>(filePath, fileName);
        if (t.data == null) Debug.LogError("數(shù)據(jù)讀取錯誤");

        string savePath = "Assets/Excel/Data/EN/" + fileName + ".asset";
        AssetDatabase.CreateAsset(t, savePath);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();

        GetLocalDataCH<T, W>(fileName);
    }
    public static void GetLocalDataCH<T, W>(string fileName) where T : LocalDataBase<W>
    {
        T t = CreateInstance<T>();
        string filePath = Application.dataPath + "/Excel/" + "cook-ch" + ".xlsx";
        //string filePath = Path.GetFullPath(".") + "\\Excel\\" + "cook-ch" + ".xlsx";
        t.data = ExcelRead.GetExcelData<W>(filePath, fileName);
        if (t.data == null) Debug.LogError("數(shù)據(jù)讀取錯誤");

        string savePath = "Assets/Excel/Data/CH/" + fileName + ".asset";
        AssetDatabase.CreateAsset(t, savePath);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
    }
}

??注意:要先在指定位置創(chuàng)建好父文件夾,此腳步要放在Editor文件夾下

UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

2.3創(chuàng)建ExcelRead腳本,讀取Excel內(nèi)容

using System.Collections.Generic;
using UnityEngine;
using System.Data;
using System.IO;
using Excel;

public class ExcelRead
{

    public static T[] GetExcelData<T>(string filePath, string name)
    {
        switch (name)
        {
            case "Entity_SheBei":
                return GetEntity_SheBei(filePath) as T[];
               //。。。
        }

        return null;
    }

    //設(shè)備
    private static Entity_SheBei[] GetEntity_SheBei(string filePath)
    {
        int columnNum = 0, rowNum = 0;
        DataRowCollection collect = ReadExcel(filePath, ref columnNum, ref rowNum, 1);
        List<Entity_SheBei> list = new List<Entity_SheBei>();

        for (int i = 1; i < rowNum; i++)
        {
            if (string.IsNullOrEmpty(collect[i][0].ToString()) || string.IsNullOrEmpty(collect[0][i].ToString())) break;
            Entity_SheBei data = new Entity_SheBei();
            data.name = collect[i][0].ToString();

            for (int j = 1; j < columnNum; j++)
            {
                //Debug.LogError(collect[i][j].ToString());
                data.parts.Add(collect[i][j].ToString());
            }

            list.Add(data);
        }

        return list.ToArray();
    }

    /// <summary>
    /// 讀取excel文件內(nèi)容 
    /// </summary>
    /// <param name="filePath">文件路徑</param>
    /// <param name="columnNum">行數(shù)</param>
    /// <param name="rowNum">列數(shù)</param>
    /// <param name="table">第幾張表</param>
    /// <returns></returns>
    static DataRowCollection ReadExcel(string filePath, ref int columnNum, ref int rowNum, int table = 0)
    {
        FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

        DataSet result = excelReader.AsDataSet();
        //Tables[0] 下標(biāo)0表示excel文件中第一張表的數(shù)據(jù)
        int[] counts = GetRowColumns(result.Tables[table]);
        //columnNum = result.Tables[table].Columns.Count;
        //rowNum = result.Tables[table].Rows.Count;
        rowNum = counts[0];
        columnNum = counts[1];
        Debug.LogError("行:" + rowNum + "...列:" + columnNum);
        return result.Tables[table].Rows;
    }


    private static int[] GetRowColumns(DataTable dt)
    {
        int i = dt.Rows.Count;
        for (int m = 0; m < dt.Rows.Count; m++)
        {
            if (string.IsNullOrEmpty(dt.Rows[m][0].ToString()))
            {
                i = m;
                break;
            }
        }

        int j = dt.Columns.Count;
        for (int n = 0; n < dt.Columns.Count; n++)
        {
            if (string.IsNullOrEmpty(dt.Rows[0][n].ToString()))
            {
                j = n;
                break;
            }
        }
        return new int[] { i, j };
    }
}

2.4 創(chuàng)建數(shù)據(jù)存儲腳本

基類:

using UnityEngine;

public class LocalDataBase<T> : ScriptableObject
{
    public T[] data;
}

?子類:

public class LocalSheBei : LocalDataBase<Entity_SheBei>
{

}

?子類對應(yīng)的實體類:

using System.Collections.Generic;

[System.Serializable]
public class Entity_SheBei
{
    public string name;
    public List<string> parts = new List<string>();
}

2.5? 編輯器生成Asset 與屬性面板詳情

UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

?UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

?UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

?UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

?2.6 Asset數(shù)據(jù)的使用方式

??Resources.Load方式

UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

?也可以定義一個單例類,直接拖拽:

UNITY--讀取Excel的幾種方式,Unity,unity-excel,unity讀Excel,Excel文件讀取,unity excel

public LocalSheBei Data_SheBei;
    //數(shù)據(jù)讀取
    public void GetLocalData()
    {
        Debug.LogError(Data_SheBei.name + "..." + Data_SheBei.data.Length);
    }

?三:Excel文件轉(zhuǎn)成json 再以json的方式讀取

unity--json讀取與解析文章來源地址http://www.zghlxwxcb.cn/news/detail-807899.html

到了這里,關(guān)于UNITY--讀取Excel的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Unity物體移動的幾種方式

    主要是Vector3的內(nèi)置函數(shù)以及CharacterController的Move 還有一個固定的每幀進行移動的操作

    2024年02月12日
    瀏覽(20)
  • Unity——數(shù)據(jù)存儲的幾種方式

    Unity——數(shù)據(jù)存儲的幾種方式

    PlayerPrefs適合用于 存儲簡單的鍵值對數(shù)據(jù) 存儲的數(shù)據(jù)會在游戲關(guān)閉后依然保持,并且可以在不同場景之間共享,適合用于需要在游戲不同場景之間傳遞和保持的數(shù)據(jù)。 它利用key-value的方式將數(shù)據(jù)保存到本地,跟字典類似。然后通過代碼進行保存、讀取、更新操作。值得注意

    2024年02月03日
    瀏覽(29)
  • Unity中人物移動的幾種方式

    Unity中人物移動的幾種方式

    1.使用Transform組件 ? ? ? ? (1)transform.position(最基礎(chǔ),最常用): 這是通過上下左右鍵控制人物運動的方法 ?????????//獲取水平按鍵,左鍵或A 則值為-1f,右鍵或D 則值為1f ? ? ? ? horizontal = Input.GetAxis(\\\"Horizontal\\\"); ? ? ? ? //獲取垂直按鍵,上鍵或W 則值為-1f,下鍵或S 則

    2023年04月15日
    瀏覽(27)
  • Unity按鈕事件的幾種綁定方式

    Unity按鈕事件的幾種綁定方式

    許久沒有寫C#代碼了,對于一些東西自己給整忘了,在此記錄下,方便以后自己查閱 獲取到按鈕組件,我是將代碼掛載在其父節(jié)點上。 在代碼中獲取此按鈕,并對他就進行綁定。一般都是使用的這類情況。 在腳本中寫一個public函數(shù),作為按鈕的監(jiān)聽函數(shù),在按鈕的Inspector面

    2024年02月11日
    瀏覽(23)
  • Unity中獲取游戲?qū)ο蟮膸追N方式

    Unity中獲取游戲?qū)ο蟮膸追N方式

    在學(xué)習(xí)如何獲取物體和組件時先明白說明什么是物體,組件和對象。 物體:unity中在層級顯示的東西都可以叫做物體 組件:unity中提供了大量已經(jīng)寫好的組件,比如剛體,碰撞體等,自己 編寫的腳本也是一種組件類 對象:掛載到物體上的腳本是一個實例化的組件,也就是一

    2024年01月17日
    瀏覽(23)
  • Unity 常用的幾種存檔讀檔方式

    一、PlayerPrefs:數(shù)據(jù)持久化方案 常見的方法如下: ?參考功能及代碼: 通過單選框是否被勾選上,從而來決定是否播放背景音樂,代碼如下: 二、二進制存儲(字節(jié)流存儲) 序列化:新建或打開一個二進制文件,通過二進制格式器將對象寫入該二進制文件。 反序列化:打開

    2023年04月08日
    瀏覽(23)
  • Unity筆記:數(shù)據(jù)持久化的幾種方式

    主要方法: ScriptableObject PlayerPrefs JSON XML 數(shù)據(jù)庫(如Sqlite) PlayerPrefs 存儲的數(shù)據(jù)是 全局共享 的,它們存儲在用戶設(shè)備的本地存儲中,并且可以被應(yīng)用程序的所有部分訪問。這意味著,無論在哪個場景、哪個腳本中,只要是同一個應(yīng)用程序中的代碼,都可以讀取和修改 Playe

    2024年02月19日
    瀏覽(23)
  • 【unity】關(guān)于unity3D攝像機視角移動的幾種方式詳解

    【unity】關(guān)于unity3D攝像機視角移動的幾種方式詳解

    目錄 一、前言 二、Transform基礎(chǔ) 1、幾種坐標(biāo)系 2、position和localPosition屬性 3、rotation屬性 三、攝像機的平移 1、鍵盤控制平移 2、鼠標(biāo)控制平移 3、整合? 四、攝像機的旋轉(zhuǎn) 1、繞自身旋轉(zhuǎn) 2、繞目標(biāo)物體旋轉(zhuǎn) 3、整合? 五、優(yōu)化功能 1、調(diào)整速率 2、切換目標(biāo)物體 3、設(shè)置常用攝

    2024年02月04日
    瀏覽(21)
  • Unity物體移動的幾種方式與表現(xiàn)(Lerp,SmoothDamp,MoveTowards的區(qū)別)

    Unity物體移動的幾種方式與表現(xiàn)(Lerp,SmoothDamp,MoveTowards的區(qū)別)

    看看Lerp,SmoothDamp,MoveTowards的區(qū)別。 Lerp用于插值,本身不是用于移動的API。但可以和協(xié)程配合用于移動。 SmoothDamp用于移動,是阻尼移動,從不超過。 MoveTowards用于移動,是勻速移動,也不會超過。 Lerp最簡單的用法如下: 效果是非勻速的(逐漸逼近),可以看到在接近終

    2024年02月03日
    瀏覽(26)
  • C# 讀取Excel的幾種常見方式及實現(xiàn)步驟

    目錄 1.使用 Microsoft Office Interop Excel 庫 2.使用 OLEDB 數(shù)據(jù)庫連接方式 3. 使用 EPPlus 庫 在 C# 中,我們可以使用以下幾種方式將 Excel 文件中的數(shù)據(jù)讀取到 DataTable 中: 1.使用 Microsoft Office Interop Excel 庫 這種方法需要安裝 Microsoft Office,并且性能較低。具體實現(xiàn)步驟如下: 2.使用 O

    2024年02月12日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包