遇到問題
在做編輯器開發時,需要在Unity Editor下直接讀取Excel源文件,首先想到的是通過npoi去讀取,但是遇到無法讀取xlsx格式,只能讀取xls格式的問題。
我的環境
unity 2018.3.6f1
npoi 2.4.1
xlsx指excel 2007格式 ,xls指excel2003格式
資料issues: https://github.com/tonyqus/npoi/issues/182
解決方案
在vs工程中安裝npoi,找到依賴項sharpziplib,在packages/目錄下
(注:nuget安裝包【npoi.nupkg】並不包含sharpzip.dll)
使用npoi對應版本的SharpZipLib,放到unity中,就可解決,比如:
NPOI.2.4.1/net40/*.dll
SharpZipLib.0.86.0
注意:一定要使用npoi對應版本的sharpziplib,如果原unity工程中有sharpziplib,則替換掉。
無法創建xlsx格式
如果遇到npoi創建出來的xlsx無法打開,可嘗試以下方法(注:wps可以打開,但ms office無法打開)
應該數據流寫入的 是 .xlsx 的數據模式但是 用的是.xls的后綴名,導致數據識別錯誤
創建xlsx格式和xls格式 使用不同的接口
xls 2003格式: HSSFWorkbook wk = new HSSFWorkbook(fs);
xlsx 2007格式: XSSFWorkbook wk = new XSSFWorkbook(fs); 就可以了
C#配置表解析器
使用C#+npoi編寫的配置表解析器:TableML Excel編譯/解析工具
開源代碼
在npoi的基礎之上,又封裝了一層,便於簡單地讀取excel
https://github.com/mr-kelly/KSFramework
查找 ExcelFile.cs