当前位置: 首页 > news >正文

Unity用NPOI创建Exect表,保存数据,和修改删除数据。以及打包后的坑——无法打开新创建的Exect表

先说坑花了一下午才找到解决方法解决,

在Unity编辑模式下点击物体创建对应的表,获取物体名字与在InputText填写的注释数据。然后保存。创建Exect表可以打开,打包PC后,点击物体创建的表,打不开文件破损

解决方法:到unity编辑器所在路径中去找这个路径
\Editor\Data\MonoBleedingEdge\lib\mono\unityaot 或者 unityjit 文件夹或者unityaot-win32
找到里边以”I18N“开头的这四个dll文件

 

在这里感谢大佬:LAIALAIA

解决方法思路原版链接:unity 使用EPPlus对Excel的创建、写入、读取操作 - 哒哒哒~~~ - 博客园 (cnblogs.com)

创建读取删除Execel

 // 初始化 Excel 文件
 

 // 初始化 Excel 文件public void InitializeExcelFile(string ExcelFileName){// 获取应用的数据文件夹路径string dataPath = Application.streamingAssetsPath + "/Data";// 合并路径,得到完整的 Excel 文件路径excelFilePath = Path.Combine(dataPath, ExcelFileName + ".xls");// 创建一个文件信息对象来检查 Excel 文件是否存在FileInfo excelFile = new FileInfo(excelFilePath);// 隐藏输入框inputField.gameObject.SetActive(false);// 如果 Excel 文件不存在,创建一个新的 Excel 工作簿,并添加一个工作表if (!excelFile.Exists){// 创建一个新的 Excel 工作簿对象workbook = new XSSFWorkbook();// 在工作簿中创建一个名为 "Comments" 的工作表sheet = (XSSFSheet)workbook.CreateSheet(ExcelFileName);// 在工作表的第一行(行索引为0)上创建一个新的行对象,并在该行中创建一个新的单元格对象(列索引为0)// 然后将 "Object Name" 这个字符串设置为单元格的值sheet.CreateRow(0).CreateCell(0).SetCellValue("Object Name");// 获取工作表的第一行(行索引为0),然后在该行中创建一个新的单元格对象(列索引为1)// 然后将 "Comment" 这个字符串设置为单元格的值sheet.GetRow(0).CreateCell(1).SetCellValue("Comment");}else{using (FileStream fs = new FileStream(excelFilePath, FileMode.Open, FileAccess.Read)){workbook = new XSSFWorkbook(fs);sheet = (XSSFSheet)workbook.GetSheetAt(0);}}}

删除

   private void DeleteObjectFromExcel(){if (workbook == null || lastClickedObject == null){Debug.LogError("Excel workbook is not initialized or no object clicked.");return;}string objectName = lastClickedObject.name;int rowIndex = FindRowIndexByObjectName(objectName);if (rowIndex >= 0){// 删除选定的行sheet.RemoveRow(sheet.GetRow(rowIndex));// 清空 InputField 的文本内容inputField.text = "";for (int i = rowIndex + 1; i <= sheet.LastRowNum; i++){IRow currentRow = sheet.GetRow(i);// 跳过已删除的行if (currentRow == null){continue;}IRow newRow = sheet.CreateRow(i - 1); // 创建一个新行for (int j = 0; j < currentRow.LastCellNum; j++){ICell currentCell = currentRow.GetCell(j);ICell newCell = newRow.CreateCell(j); // 创建一个新单元格if (currentCell != null){newCell.SetCellValue(currentCell.ToString());}}}// 清除最后一行sheet.RemoveRow(sheet.GetRow(sheet.LastRowNum));// 保存修改后的文件using (FileStream fs = new FileStream(excelFilePath, FileMode.Create, FileAccess.Write)){workbook.Write(fs);}}}

http://www.lryc.cn/news/128547.html

相关文章:

  • 记一次fegin调用的媒体类型问题
  • 在Hive/Spark上运行执行TPC-DS基准测试 (ORC和TEXT格式)
  • 如何仿写简易tomcat 实现思路+代码详细讲解
  • 如何提高深度学习性能
  • ECMAScript版本对比:从ES1到ES2021
  • 设计HTML5表格
  • 神经网络基础-神经网络补充概念-60-卷积步长
  • 怎么开通Tik Tok海外娱乐公会呢?
  • Java接口压力测试—如何应对并优化Java接口的压力测试
  • Coremail参与编制|《信创安全发展蓝皮书——系统安全分册(2023年)》
  • 分布式 - 消息队列Kafka:Kafka 消费者消息消费与参数配置
  • 批量爬虫采集大数据的技巧和策略分享
  • Springboot 实践(7)springboot添加html页面,实现数据库数据的访问
  • Go中带标签的break/continue以及goto的差别
  • SaaS当然是一门好生意了啊
  • ZooKeeper单机服务器启动
  • Jenkins自动发送飞书消息
  • Centos 7 出现 write error (disk full?)
  • 音视频实时通话解决方案
  • WPF的范围控件Slider
  • 前端框架Vue
  • 基于Servlet实现的管理系统(包含服务器源码+数据库)
  • Android JUnit测试完成程序自动退出决方法
  • 【FAQ】安防监控视频云存储平台EasyNVR频繁离线的原因排查与解决
  • ClickHouse(二十二):Clickhouse SQL DML操作及导入导出数据
  • Vue 2自定义指令入门
  • 【Sklearn】基于AdaBoost算法的数据分类预测(Excel可直接替换数据)
  • Docker+Selenium Grid搭建自动化测试平台
  • Django图书商城系统实战开发-总结经验之后端开发
  • LeetCode[1288]删除被覆盖区间