Unity3d 使用NPOI读写Excel 遇到的问题
开发环境:unity5.3 NPOI(.net 2.0版 http://npoi.codeplex.com/)
运行环境:PC版, 其他平台没有测试
先上效果图:
实现步骤:
1、新建一个Excel模板(CompareTemplate.xls, .xlsx格式的无法读取),用来设置表头、颜色、字体样式等。
2、使用npoi读取模板文件
- using (FileStream file = new FileStream(Path.Combine(tempFolder, "CompareTemplate.xls"), FileMode.Open, FileAccess.ReadWrite))
- {
- book = new HSSFWorkbook(file);
- sheet = book.GetSheetAt(); //获取工作表
file.Close();- }
3、保存数据到HSSFWorkbook中,部分代码如下:
- // 保存老师测距答案
- for (int i = ; i < teacherData.Count; i++)
- {
- IRow sRow = sheet.GetRow(meaStartRow) ?? sheet.CreateRow(meaStartRow);
- IRow eRow = sheet.GetRow(meaStartRow + ) ?? sheet.CreateRow(meaStartRow + );
- var data = teacherData[i] as MeasureLineCompareData;
- sRow.CreateCell().SetCellValue(data.Describe);
- sRow.CreateCell().SetCellValue("起点");
- sRow.CreateCell().SetCellValue(string.Format("{0} , {1} , {2}", Math.Round(data.StartPoint.x, ).ToString(),
- Math.Round(data.StartPoint.y, ).ToString(), Math.Round(data.StartPoint.z, ).ToString()));
- eRow.CreateCell().SetCellValue("终点");
- eRow.CreateCell().SetCellValue(string.Format("{0} , {1} , {2}", Math.Round(data.EndPoint.x, ).ToString(),
- Math.Round(data.EndPoint.y, ).ToString(), Math.Round(data.EndPoint.z, ).ToString()));
- // 合并单元格
- CellRangeAddress range = new CellRangeAddress(meaStartRow, meaStartRow + , , );
- sheet.AddMergedRegion(range);
- meaStartRow += ;
- }
4、保存到Excel文件中
- using (MemoryStream ms = new MemoryStream())
- {
- book.Write(ms); // 保存HSSFWorkbook到数据流中
- string file = GetNewPathForDupes(filePath); // 获取excel文件路径
- // 写入excel文件
- using (FileStream fs = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite))
- {
- byte[] data = ms.ToArray();
- fs.Write(data, , data.Length);
- fs.Flush();
- }
- System.Diagnostics.Process.Start(file);// 打开excel文件
- book = null;
- }
发布项目时设置:
1、api compatibility level : .net 2.0;
2、在unity安装目录:C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0中找到 System.Drawing.dll放到项目Plugins文件夹下;
==============================
上面两个设置在网上都能方便的找到。But,发布成exe后,保存excel报错
- System.NotSupportedException: CodePage not supported
- at System.Text.Encoding.GetEncoding (Int32 codepage) [0x00000] in <filename unknown>:
- at NPOI.HPSF.CodePageString.GetJavaValue (Int32 codepage) [0x00000] in <filename unknown>:
- at NPOI.HPSF.VariantSupport.Read (System.Byte[] src, Int32 offset, Int32 length, Int64 type, Int32 codepage) [0x00000] in <filename unknown>:
- at NPOI.HPSF.Property..ctor (Int64 id, System.Byte[] src, Int64 offset, Int32 Length, Int32 codepage) [0x00000] in <filename unknown>:
- at NPOI.HPSF.Section..ctor (System.Byte[] src, Int32 offset) [0x00000] in <filename unknown>:
- at NPOI.HPSF.PropertySet.init (System.Byte[] src, Int32 offset, Int32 Length) [0x00000] in <filename unknown>:
- at NPOI.HPSF.PropertySet..ctor (System.IO.Stream stream) [0x00000] in <filename unknown>:
- at NPOI.HPSF.PropertySetFactory.Create (System.IO.Stream stream) [0x00000] in <filename unknown>:
- at NPOI.POIDocument.GetPropertySet (System.String setName) [0x00000] in <filename unknown>:
- at NPOI.POIDocument.ReadProperties () [0x00000] in <filename unknown>:
- at NPOI.POIDocument.get_DocumentSummaryInformation () [0x00000] in <filename unknown>:
- at NPOI.HSSF.UserModel.HSSFWorkbook.Write (System.IO.Stream stream) [0x00000] in <filename unknown>:
- at CompareHelper.SaveWorkbook (System.String filePath, NPOI.HSSF.UserModel.HSSFWorkbook book) [0x00000] in <filename unknown>:
解决办法:
同样在C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0中找到I18N*.dll 开头的程序集放到Plugins文件夹下,搞定!!!!
Unity3d 使用NPOI读写Excel 遇到的问题的更多相关文章
- NPOI读写Excel
1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...
- 【转】NPOI读写Excel
1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...
- NPOI读写Excel【转载】
参考示例:https://www.cnblogs.com/luxiaoxun/p/3374992.html 感谢! 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表): ...
- 使用NPOI读写Excel、Word
NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...
- C#使用NPOI读写excel
本帖内容来自网络+自己稍作整理,已找不到原贴,侵删 个人比较习惯用NPOI操作excel,方便易理解.在宇宙第一IDE(笑)——VS2017中插入NPOI就很方便: 首先安装NPOI: 然后在.cs文 ...
- NPOI读写Excel组件封装Excel导入导出组件
后台管理系统多数情况会与Excel打交道,常见的就是Excel的导入导出,对于Excel的操作往往是繁琐且容易出错的,对于后台系统的导入导出交互过程往往是固定的,对于这部分操作,我们可以抽离出公共组件 ...
- NPOI 读写Excel
实例功能概述: 1.支持Excel2003以及2007 2.支持Excel读取到DataTable(TableToExcel) 3.支持DataTable导出到Excel(TableToExcel) ...
- C#使用NPOI读写Excel的注意事项
NPOI的基本使用参照:https://www.cnblogs.com/lixiaobin/p/NPOI.html 既存文档读取修改方法 *既存Excel文档修改保存注意使用FileMode.Crea ...
- 用插件NPOI读写excel
1.用插件NPOIusing NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HSSF.UserModel; public class E ...
随机推荐
- MapReduce编程系列 — 2:计算平均分
1.项目名称: 2.程序代码: package com.averagescorecount; import java.io.IOException; import java.util.Iterator ...
- WinCE NAND flash - FAL
http://blog.csdn.net/renpine/article/details/4572347 http://msdn.microsoft.com/en-US/library/ee48203 ...
- poj2482Stars in Your Window(线段树+离散化+扫描线)
http://poj.org/problem?id=2482 类似于上一篇 这题转化的比较巧妙 将一个点转化为一个矩形(x,y, x+w,y+h),扫描线入值为正 出值为负 也就是一根线过去 每进入一 ...
- 正确认识Android的内存管理机制,合理关闭进程 (一)
随着大家收货后会有很多乐粉晒内存,为啦方便大家,在网上搜集了一些相关Andriod管理的相关机制合理管理内存,整理下发个贴. 首先要知道Android系统是基于Linux 2.6内核开发的开源操作系统 ...
- extends:类似于java中的继承特征,extends="struts-default"
extends:类似于java中的继承特征,extends="struts-default"就是继承struts-default.xml,它里面定义了许多跳转类型.拦截器等一些常用 ...
- Fody
Fody https://github.com/Fody/Fody/ 有空还要看下怎么实现的.
- 8.8-8.10 usaco
summary:44 没救了...整天刷水迟早药丸! ❤bzoj3892: 区间dp.我原来的思路是dp[i][j]表示前i个数跳过了j次,那么转移可以前k个数转移了j-1次,枚举k就好了,但是这样是 ...
- BZOJ2150: 部落战争
题解: 把每个点拆成入点和出点,因为必须经过一次且只能经过一次.所以在两个点之间连一条上界=下界=1的边. 然后再s到每个入点连边,每个出点向t连边,点与点之间... 求最小流就可以过了... (感觉 ...
- CentOS6.5_Nginx1.40_Php5.57_MySQL5.5.35编译安装全记录
环境说明:CentOS 6.5 32位 PHP Version 5.5.7 mysql version _5.6.16 一.准备工作 配置防火墙,允许防火墙通过22(sshd).80(WEB).3 ...
- 精简版、GHOST版win7,arduino驱动安装失败的解决方法分享
arduino组件安装驱动不成功,总是提示系统找不到指定文件. 原因是因为精简版缺少了两个关键的系统文件,导致无法安装.mdmcpq.inf 和 usbser.sys 解决方案详见帖子http:// ...