开发环境:unity5.3  NPOI(.net 2.0版  http://npoi.codeplex.com/)

运行环境:PC版, 其他平台没有测试

先上效果图:

    

实现步骤:

  1、新建一个Excel模板(CompareTemplate.xls, .xlsx格式的无法读取),用来设置表头、颜色、字体样式等。

  2、使用npoi读取模板文件

  

  1. using (FileStream file = new FileStream(Path.Combine(tempFolder, "CompareTemplate.xls"), FileMode.Open, FileAccess.ReadWrite))
  2. {
  3. book = new HSSFWorkbook(file);
  4. sheet = book.GetSheetAt(); //获取工作表
       file.Close();
  5. }

  3、保存数据到HSSFWorkbook中,部分代码如下:

  

  1. // 保存老师测距答案
  2. for (int i = ; i < teacherData.Count; i++)
  3. {
  4. IRow sRow = sheet.GetRow(meaStartRow) ?? sheet.CreateRow(meaStartRow);
  5. IRow eRow = sheet.GetRow(meaStartRow + ) ?? sheet.CreateRow(meaStartRow + );
  6.  
  7. var data = teacherData[i] as MeasureLineCompareData;
  8. sRow.CreateCell().SetCellValue(data.Describe);
  9. sRow.CreateCell().SetCellValue("起点");
  10. sRow.CreateCell().SetCellValue(string.Format("{0} , {1} , {2}", Math.Round(data.StartPoint.x, ).ToString(),
  11. Math.Round(data.StartPoint.y, ).ToString(), Math.Round(data.StartPoint.z, ).ToString()));
  12. eRow.CreateCell().SetCellValue("终点");
  13. eRow.CreateCell().SetCellValue(string.Format("{0} , {1} , {2}", Math.Round(data.EndPoint.x, ).ToString(),
  14. Math.Round(data.EndPoint.y, ).ToString(), Math.Round(data.EndPoint.z, ).ToString()));
  15.  
  16. // 合并单元格
  17. CellRangeAddress range = new CellRangeAddress(meaStartRow, meaStartRow + , , );
  18. sheet.AddMergedRegion(range);
  19.  
  20. meaStartRow += ;
  21. }

  4、保存到Excel文件中

  

  1. using (MemoryStream ms = new MemoryStream())
  2. {
  3. book.Write(ms); // 保存HSSFWorkbook到数据流中
  4.  
  5. string file = GetNewPathForDupes(filePath); // 获取excel文件路径
  6. // 写入excel文件
  7. using (FileStream fs = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite))
  8. {
  9. byte[] data = ms.ToArray();
  10. fs.Write(data, , data.Length);
  11. fs.Flush();
  12. }
  13.  
  14. System.Diagnostics.Process.Start(file);// 打开excel文件
  15.  
  16. book = null;
  17. }

发布项目时设置:

  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报错

  

  1. System.NotSupportedException: CodePage not supported
  2. at System.Text.Encoding.GetEncoding (Int32 codepage) [0x00000] in <filename unknown>:
  3. at NPOI.HPSF.CodePageString.GetJavaValue (Int32 codepage) [0x00000] in <filename unknown>:
  4. at NPOI.HPSF.VariantSupport.Read (System.Byte[] src, Int32 offset, Int32 length, Int64 type, Int32 codepage) [0x00000] in <filename unknown>:
  5. at NPOI.HPSF.Property..ctor (Int64 id, System.Byte[] src, Int64 offset, Int32 Length, Int32 codepage) [0x00000] in <filename unknown>:
  6. at NPOI.HPSF.Section..ctor (System.Byte[] src, Int32 offset) [0x00000] in <filename unknown>:
  7. at NPOI.HPSF.PropertySet.init (System.Byte[] src, Int32 offset, Int32 Length) [0x00000] in <filename unknown>:
  8. at NPOI.HPSF.PropertySet..ctor (System.IO.Stream stream) [0x00000] in <filename unknown>:
  9. at NPOI.HPSF.PropertySetFactory.Create (System.IO.Stream stream) [0x00000] in <filename unknown>:
  10. at NPOI.POIDocument.GetPropertySet (System.String setName) [0x00000] in <filename unknown>:
  11. at NPOI.POIDocument.ReadProperties () [0x00000] in <filename unknown>:
  12. at NPOI.POIDocument.get_DocumentSummaryInformation () [0x00000] in <filename unknown>:
  13. at NPOI.HSSF.UserModel.HSSFWorkbook.Write (System.IO.Stream stream) [0x00000] in <filename unknown>:
  14. 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 遇到的问题的更多相关文章

  1. NPOI读写Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  2. 【转】NPOI读写Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  3. NPOI读写Excel【转载】

    参考示例:https://www.cnblogs.com/luxiaoxun/p/3374992.html 感谢! 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表): ...

  4. 使用NPOI读写Excel、Word

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...

  5. C#使用NPOI读写excel

    本帖内容来自网络+自己稍作整理,已找不到原贴,侵删 个人比较习惯用NPOI操作excel,方便易理解.在宇宙第一IDE(笑)——VS2017中插入NPOI就很方便: 首先安装NPOI: 然后在.cs文 ...

  6. NPOI读写Excel组件封装Excel导入导出组件

    后台管理系统多数情况会与Excel打交道,常见的就是Excel的导入导出,对于Excel的操作往往是繁琐且容易出错的,对于后台系统的导入导出交互过程往往是固定的,对于这部分操作,我们可以抽离出公共组件 ...

  7. NPOI 读写Excel

    实例功能概述: 1.支持Excel2003以及2007 2.支持Excel读取到DataTable(TableToExcel) 3.支持DataTable导出到Excel(TableToExcel) ...

  8. C#使用NPOI读写Excel的注意事项

    NPOI的基本使用参照:https://www.cnblogs.com/lixiaobin/p/NPOI.html 既存文档读取修改方法 *既存Excel文档修改保存注意使用FileMode.Crea ...

  9. 用插件NPOI读写excel

    1.用插件NPOIusing NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HSSF.UserModel; public class E ...

随机推荐

  1. MapReduce编程系列 — 2:计算平均分

    1.项目名称: 2.程序代码: package com.averagescorecount; import java.io.IOException; import java.util.Iterator ...

  2. WinCE NAND flash - FAL

    http://blog.csdn.net/renpine/article/details/4572347 http://msdn.microsoft.com/en-US/library/ee48203 ...

  3. poj2482Stars in Your Window(线段树+离散化+扫描线)

    http://poj.org/problem?id=2482 类似于上一篇 这题转化的比较巧妙 将一个点转化为一个矩形(x,y, x+w,y+h),扫描线入值为正 出值为负 也就是一根线过去 每进入一 ...

  4. 正确认识Android的内存管理机制,合理关闭进程 (一)

    随着大家收货后会有很多乐粉晒内存,为啦方便大家,在网上搜集了一些相关Andriod管理的相关机制合理管理内存,整理下发个贴. 首先要知道Android系统是基于Linux 2.6内核开发的开源操作系统 ...

  5. extends:类似于java中的继承特征,extends="struts-default"

    extends:类似于java中的继承特征,extends="struts-default"就是继承struts-default.xml,它里面定义了许多跳转类型.拦截器等一些常用 ...

  6. Fody

    Fody  https://github.com/Fody/Fody/ 有空还要看下怎么实现的.

  7. 8.8-8.10 usaco

    summary:44 没救了...整天刷水迟早药丸! ❤bzoj3892: 区间dp.我原来的思路是dp[i][j]表示前i个数跳过了j次,那么转移可以前k个数转移了j-1次,枚举k就好了,但是这样是 ...

  8. BZOJ2150: 部落战争

    题解: 把每个点拆成入点和出点,因为必须经过一次且只能经过一次.所以在两个点之间连一条上界=下界=1的边. 然后再s到每个入点连边,每个出点向t连边,点与点之间... 求最小流就可以过了... (感觉 ...

  9. 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 ...

  10. 精简版、GHOST版win7,arduino驱动安装失败的解决方法分享

    arduino组件安装驱动不成功,总是提示系统找不到指定文件. 原因是因为精简版缺少了两个关键的系统文件,导致无法安装.mdmcpq.inf  和 usbser.sys 解决方案详见帖子http:// ...