Unity中Excel的写入
撰写于 2019-07-03 修改于 2019-07-03 分类 Unity
Unity中Excel的写入
Excel读取
在Unity中读取Excel有很多种方法,对应的插件也很多,NPOI,COM,EPPlus等等,都可以读取,不在赘述
Excel写入
NPOI
Excel写入时,我遇到了一些问题,原来的项目中使用的是NPOI,这个插件的好处就是,不依赖于Office,无论你是否安转了Office,都可以对Excel进行读写操作。原来项目中,只是使用NPOI读取Excel,没有写入的操作,本以为没有问题,But竟然不能用!一直在报一个异常:Type NPOI.OpenXmlFormats.ItemChoiceType is missing enumeration value 'stream' for element 'stream from namespace
,无论怎么尝试都不行!浪费了好长时间,放弃!
COM
后来搜了一个方法,使用Office自带的Excel.dll,这总行了吧,果断试了以下,没有在Unity中尝试,自建了一个C#工程,使用方法很简单,添加引用->COM,找到 Microsoft Office 16.0 Object Library
和 Microsoft Excel 16.0 Object Libray
,添加到引用,然后使用方法如下:1
2
3
4
5
6
7
8
9
10
11
12Excel.Application xApp = new Excel.Application();
xApp.Visible = true;
xApp.UserControl = true;
Excel.Workbook xBook = null;
try
{
xBook = xApp.Workbooks.Open(@"E:\hxl22.xlsx");
}
catch (Exception ex)
{
throw ex;
}
读写都没有问题,是不是以为要成功了?!
But,在Unity工程中,按以上步骤和代码来操作
先是dll引入出错
在Unity中不能用以上方式来引入库,需要手动添加上面两个dll到Assets/Plugins
中,不是很简单么,直接拷过去不就行了,But当你打开程序集目录C:\Windows\assembly
,傻了眼,哪里有什么dll文件啊,根本不能拷贝!一通乱搜,在网上找到了方法
在VS中打开 程序包管理控制台,输入:
copy C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll E:\
copy C:\Windows\assembly\GAC_MSIL\Microsoft.Vbe.Interop\15.0.0.0__71e9bce111e9429c\Microsoft.Vbe.Interop.dll E:\
copy C:\Windows\assembly\GAC_MSIL\office\15.0.0.0__71e9bce111e9429c\OFFICE.DLL E:\
然后E盘下面就会出现三个dll文件 Microsoft.Office.Interop.Excel.dll、 Microsoft.Vbe.Interop.dll 、 OFFICE.DLL
,
拷进 Assets/Plugins
,dll文件解决了!
严重的Crash
接着是写逻辑代码,一通乱写!Run! Crash! WTF!,修改代码!Run! Crash!…不折腾了,也不开源,无法调试,网上也没有方法解决!放弃!