unity读取Excel

时间:2023-01-05 12:58:15


使用unity5.6的和Excel是2016版本。

新建工程,新建文件夹Plugins,然后导入两个dll,一个是EXCEL一个system.Data。

 

unity读取Excel

 

读取脚本如下:

using System.Collections.Generic;
using UnityEngine;
using System.Data;
using System.IO;
using Excel;
public class DoExcel {

public static DataSet ReadExcel(string path)
{
FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

DataSet result = excelReader.AsDataSet();
excelReader.Close();
return result;

}

public static List<string> Load(string path)
{

DataSet resultds = ReadExcel(path);
int column = resultds.Tables[0].Columns.Count;
int row = resultds.Tables[0].Rows.Count;

Debug.Log("总行数:" + row+" 总列数:" +column);

List<string> saveall = new List<string>();

//获得每行的名字,并添加到数组里
for (int i=1;i< row; i++)
{
string getnames;
getnames = resultds.Tables[0].Rows[i][1].ToString();
Debug.Log("第"+i+"行:" + getnames.ToString());
saveall.Add(getnames.ToString());

}

return saveall;
}

}

只要调用上面代码里的Load(string path)方法就可以。

把要读取的Excel的路径作为参数传入即可。如下:

void Start()
{

string ak = System.Environment.CurrentDirectory;
print(ak);
//savename = DoExcel.Load(Application.dataPath + "\\Data\\" + "yg.xlsx");
savename = DoExcel.Load(ak + "\\yg.xlsx");

allsavedvalue = savename.Count;
}

在当前文件目录下存在名为yg的Excel表格

unity读取Excel

然后运行unity即可看到数据已经读取完成,输出了log

unity读取Excel

-------------注意一点,yg这个Excel表格里的第一行必须是string类型的--------如下:

unity读取Excel

如果第一行不是string会出现如下错误:就说类型是无法转化的。

unity读取Excel