因为项目中需要用到Unity3d读取Excel,网上找的资料,大多是Excel.dll +ICSharpCode.SharpZipLib这种解决方案。但是读取xlsx(2019版)总是报错。后面想到了一种更简便的方法。
1.通过NuGet下载并安装ExcelDataReader.dll、ExcelDataReader.DataSet.dll。
随便建个C#.net工程,比如新建一个控制台应用(.NET Framework)。
选择菜单【工具】【NuGet包管理器】【管理解决方案的NuGet程序包...】
在【浏览】中输入Excel,即可找到ExcelDataReader、ExcelDataReader.DataSet,点击【安装】
在解决方案中查看dll所在位置
打开两个dll所有文件夹,可以看到net20、net45等多版本dll,注意选择与unity3d的.net版本匹配,我这里使用net45版本。
2.Unity3d读取Excel
新建Unity3d工程(我这里用的2018.4.14),
创建Plugins文件夹,并将两个dll复制到Plugins下(经测试在unity2017下还需要添加System.Data.dll)
新建脚本Test.cs,并附加到Camera上,代码如下
using ExcelDataReader;
using System.IO;
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
using (var stream = File.Open(@"C:\Users\wslng\Documents\测试表格.xlsx", FileMode.Open, FileAccess.Read))
{
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
var result = reader.AsDataSet();
if (result.Tables.Count > 0)
{
for (int i = 0; i < result.Tables[0].Rows.Count; i++)
{
Debug.Log(result.Tables[0].Rows[i][0].ToString());
Debug.Log(result.Tables[0].Rows[i][1].ToString());
}
}
}
}
}
}
运行结果