excel - 如何在使用 Apache POI 打开 Excel 时修复错误。错误提示“我们发现 xyz.xlsm 中的某些内容存在问题。您想要...”吗?
问题描述
我正在使用 Apache POI 和 Java 8 从现有模板中生成 excel,该模板中有多个工作表。这是一个简单的基于 JavaFX 的桌面应用程序,它读取 excel 文件模板并根据用户输入删除工作表。出于某种原因,当我的代码删除特定工作表时,当我在程序完成创建 Excel 文件后尝试打开 Excel 文件时出现以下错误:
We found a problem with some content in xyz.xlsm. Do you want us to try to recover as much as we can? If you trust the source of this workbook, click Yes.
Errors were detected in file 'C:\LTDrive2_4\Excel\TwoPieceOBS_2019_08_15_12_01_33.xlsm'
removedRecords:
Removed Records: Table from /xl/tables/table79.xml part (Table)
Removed Records: Table from /xl/tables/table103.xml part (Table)
解决方案
我在我的项目中遇到了类似的问题。我可以通过检查其他工作表中的单元格来解决它,看看它们是否引用了正在删除的工作表中的表格或单元格。在修改所有单元格以使它们对要删除的工作表没有任何依赖关系后,问题已解决。
例如:
正在删除的工作表在单元格中有以下公式。
=IF(ISNUMBER([@XYZ]),[@deg]/[@XYZ],"")
其他表(可能是上述表的复制粘贴)具有公式。
=IF(ISNUMBER(Table726245820619242[@XYZ]),Table726245820619242[@deg]/Table726245820619242[@XYZ],"")
如果您注意到导致问题的公式中有Table 726...。
一旦我更正了公式以使其不具有任何此类依赖性,那么问题就解决了。
推荐阅读
- android - RecyclerView 适配器在设备旋转后不更新视图
- mysql - 我应该为任何异步操作调用单独的 goroutine 吗?
- java - 通过API获取所有corda账号
- makefile - Makefile 模式将所有源文件编译为可执行文件
- sql - 未定义类型的案例语句?或为什么约会?
- php - 接受协议中的任何数字类似
- c++ - C++;如何在函数中写入opencv的Vect3b指针
- php - 无法从表名中的大写字母替换为小写字母的 mySQL 表中读取数据 (PHP) (Wo_Langs -> wo_langs)
- c - 如何获取 *chars 并返回非整数?
- javascript - 有一种方法可以解决“警告:列表中的每个孩子都应该有一个唯一的“键”?