美景之屋5在线观看_成人区精品一区二区婷婷_91av在线视频播放_午夜影院在线_一本久久综合亚洲鲁鲁五月天_国产精品一区在线观看

  • 您的位置:首頁 > 新聞動態(tài) > Unity3D

    unity3d讀寫EXCEL文件的方法

    2019/11/12??????點(diǎn)擊:

    對 Excel 表的操作少不了要引入第三方庫,首先我們需要引入 Excel.dll 和 ICSharpCode.SharpZipLib.dll,這兩個(gè)類庫在網(wǎng)上都能找到;然后我們還需要引入 System.Data.dll,這個(gè)類庫在 Unity3D 的安裝路徑下的 Editor\Data\Mono\lib\mono\unity 文件夾下能找到。wiseglove數(shù)據(jù)手套客戶,可以在我們提供的數(shù)據(jù)手套FOR UNITY3D演示項(xiàng)目下找到。

    using Excel;
    using System.Data;
    using System.IO;
    using UnityEngine;
    public class Test : MonoBehaviour 
    {
        #region -- 變量定義
        #endregion
        #region -- 系統(tǒng)函數(shù)
        private void Start()
        {
            DataRowCollection _dataRowCollection = ReadExcel(Application.streamingAssetsPath + "/手套錄制數(shù)據(jù).xlsx");
            //這里從 1 開始循環(huán),因?yàn)榈谝恍斜槐眍^占據(jù)了。所以具體解析數(shù)據(jù)的時(shí)候需要根據(jù)具體情況來定。
            for (int i = 1; i < _dataRowCollection.Count; i++)
            {
                Debug.Log("拇指" + _dataRowCollection[i][0] + "--" + "食指" + _dataRowCollection[i][1] + "--" + "中指" + _dataRowCollection[i][2])+ "--" + "無名指" + _dataRowCollection[i][2])+ "--" + "小指" + _dataRowCollection[i][2]);
            } }
        #endregion
    
        #region -- 自定義函數(shù)
        ////// 讀取 Excel 表并返回一個(gè) DataRowCollection 對象
        //////手套錄制數(shù)據(jù)的Excel 表路徑///讀取的 Sheet 索引。Excel 表中是有多個(gè) Sheet 的///private static DataRowCollection ReadExcel(string _path, int _sheetIndex = 0)
        {
            FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.Read);
            //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);//讀取 Excel 1997-2003版本
            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);//讀取 2007及以后的版本
            DataSet result = excelReader.AsDataSet();
            return result.Tables[_sheetIndex].Rows;
        }
        ////// 讀取 Excel 表并返回一個(gè) DataRowCollection 對象
        //////Excel 表路徑///讀取的 Sheet 名稱。Excel 表中是有多個(gè) Sheet 的///private static DataRowCollection ReadExcel(string _path, string _sheetName)
        {
            FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.Read);
            //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);//讀取 Excel 1997-2003版本
            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);//讀取 2007及以后的版本
            DataSet result = excelReader.AsDataSet();
            return result.Tables[_sheetName].Rows;
        }
        #endregion
    }

    這里需要注意的是,根據(jù) Excel 表的版本不同,使用的方法也不一致,我在代碼中也有注釋,大家看一下就行。還有就是 Sheet ,在讀取的時(shí)候,我們可以根據(jù)索引去讀取,也可以根據(jù)名稱去讀取,我也寫了重載方法。
     如果這樣寫,發(fā)布后運(yùn)行,也許會報(bào)錯(cuò),這時(shí)我們就又需要引入第三方庫了,去 Unity3D 安裝路徑下的Editor\Data\Mono\lib\mono\unity,找到所有 I18N 開頭的類庫導(dǎo)入U(xiǎn)nity中,就不會報(bào)錯(cuò)了。

    OK, 現(xiàn)在Excel 表的讀取功能解決了,那我們?nèi)绾紊梢粡?Excel 表,并寫入數(shù)據(jù)呢?這時(shí)我們需要導(dǎo)入一個(gè)叫 EPPlus.dll 的類庫,網(wǎng)上也有,大家可以自己下載。
    代碼如下:

    private void Start()
        {
            string _filePath = Application.streamingAssetsPath + "/錄制數(shù)據(jù).xlsx";
            string _sheetName = "詳情";
    
            FileInfo _excelName = new FileInfo(_filePath);
            if (_excelName.Exists)
            {
                //刪除舊文件,并創(chuàng)建一個(gè)新的 excel 文件。
                _excelName.Delete();
                _excelName = new FileInfo(_filePath);
            }
    
            //通過ExcelPackage打開文件
            using (ExcelPackage package = new ExcelPackage(_excelName))
            {
                //在 excel 空文件添加新 sheet,并設(shè)置名稱。
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(_sheetName);
                //添加列名
                worksheet.Cells[1, 1].Value = "時(shí)間";
                worksheet.Cells[1, 2].Value = "拇指";
                worksheet.Cells[1, 3].Value = "中指";
                worksheet.Cells[1, 4].Value = "無名指";
                worksheet.Cells[1, 5].Value = "小指";
                //添加一行數(shù)據(jù)
                worksheet.Cells[2, 1].Value = 10; //ms
                worksheet.Cells[2, 2].Value = 33.0f;
                worksheet.Cells[2, 3].Value = 34.0f;
                worksheet.Cells[2, 4].Value = 35.0f;
                worksheet.Cells[2, 5].Value = 36.0f;
                //添加一行數(shù)據(jù)
                worksheet.Cells[3, 1].Value = 20; //ms
                worksheet.Cells[3, 2].Value = 33.0f;
                worksheet.Cells[3, 3].Value = 34.0f;
                worksheet.Cells[3, 4].Value = 35.0f;
                worksheet.Cells[3, 5].Value = 36.0f;
                //添加一行數(shù)據(jù)
                worksheet.Cells[4, 1].Value = 30; //ms
                worksheet.Cells[4, 2].Value = 33.0f;
                worksheet.Cells[4, 3].Value = 34.0f;
                worksheet.Cells[4, 4].Value = 35.0f;
                worksheet.Cells[4, 5].Value = 36.0f;
                //保存excel
                package.Save();
            }
        }

    Excel 表的讀寫操作大致就是這樣的。因?yàn)?Excel 表 包含太多的格式信息,好是將 Excel 表另存為純文本的 CSV 文件再去讀取,我們另一篇技術(shù)文章討論關(guān)于 CSV 文件的讀取。

    主站蜘蛛池模板: 客厅享受丝袜人妻张雅婷 | 欧美一区二区观看 | 中文国语毛片高清视频 | 国内精品久久久久影院日本 | 日韩中文字幕三级 | 国产精品yjizz视频网 | 亚洲AV一般男女在线 | 91日本欧美高清人术艺术 | 亚洲无线码高清在线观看 | 亚洲第一福利专区 | 中文字幕人妻在线中文乱码怎么解决 | 用舌头去添高潮无码AV在线观看 | 欧美日韩国产三级 | 高清hd写真福利在线播放 | 亚洲男人天堂2017 | 亚洲欧洲AV综合一区二区三区 | 91在线视频一区 | 久久久久久妓女精品影院 | 极品少妇xxxx精品少妇偷拍 | 精品国产鲁一鲁一区二区张丽 | 狠狠躁天天躁无码中文字幕 | 成人性生交大片兜免费看r 性欧美VIDEO另类HD | 日本韩国视频一区二区 | 久久亚洲AⅤ精品网站 | 看片一区二区三区 | 香蕉视频久久久 | 女人被草视频 | 国产三区在线观看 | 色综合免费 | 日韩精品免费一区二区三区四区 | 免费观看在线午夜影视 | 最近中文字幕免费高清mv视频 | 一区二区三区午夜无码视频 | 91精品国产综合久久久久久粉嫩 | 亚洲A∨精品无码一区二区 日日摸天天做天天添天天欢 | 小早川怜子一区二区的演员表 | 国精产品一品二品国精在线观看 | 成人高潮a毛片免费观看网站 | 日韩欧美 | 午夜国产亚洲欧美 | 91精品国产闺蜜国产在线闺蜜 |