首页 > 解决方案 > 如何在使用 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)

标签: exceljavafxjava-8apache-poi

解决方案


我在我的项目中遇到了类似的问题。我可以通过检查其他工作表中的单元格来解决它,看看它们是否引用了正在删除的工作表中的表格或单元格。在修改所有单元格以使它们对要删除的工作表没有任何依赖关系后,问题已解决。

例如:

正在删除的工作表在单元格中有以下公式。

=IF(ISNUMBER([@XYZ]),[@deg]/[@XYZ],"")

其他表(可能是上述表的复制粘贴)具有公式。

=IF(ISNUMBER(Table726245820619242[@XYZ]),Table726245820619242[@deg]/Table726245820619242[@XYZ],"")

如果您注意到导致问题的公式中有Table 726...。

一旦我更正了公式以使其不具有任何此类依赖性,那么问题就解决了。


推荐阅读