经常在项目中会涉及到读取数据,通常的做法是Unity读取csv文件。但是csv文件如果不是UTF-8格式,中文会乱码。
下面记录一下如何在Unity项目中读取Excel中的数据。
首先在Plugis目录下导入使用到的库文件:
使用代码:
using Excel;
using System.Data;
using System.IO;
using UnityEngine;
public class UnityReadExcelExample : MonoBehaviour
{
private void Start()
{
DataRowCollection dataRowCollection = ReadExcel(Application.streamingAssetsPath + "/Woker.xlsx");
for (int i = 1; i < dataRowCollection.Count; i++)
{
Debug.Log(string.Format("工号:{0} 姓名:{1} 工龄:{2}", dataRowCollection[i][0], dataRowCollection[i][1], dataRowCollection[i][2]));
}
}
/// <summary>
/// 读取 Excel
/// </summary>
/// <param name="_path">Excel 表路径</param>
/// <param name="_sheetIndex">读取的 Sheet 索引</param>
/// <returns></returns>
private 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;
}
}
将此脚本一挂载在游戏物体上,自动去读取Woker.xlsx文件
控制台打印出的结果: