Unity中Excel的写入

撰写于 2019-07-03 修改于 2019-07-03 分类 Unity 标签 Excel

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 LibraryMicrosoft Excel 16.0 Object Libray,添加到引用,然后使用方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
Excel.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!…不折腾了,也不开源,无法调试,网上也没有方法解决!放弃!

EPPlus

这个方法,早就看到了,刚开始很不屑,不想使用,用了一下,真香!一个方法 ExcelPackage.Save()搞定!

Site by ZHJ using Hexo & Random

Hide