java - 使用 Apache poi 在 Excel 中计算公式

标签 java apache-poi

我正在尝试读取 Excel 2007 工作表。读取Excel工作表的问题是它的所有单元格都有公式类型的值。

单元格的值如下:

='C:\\**\[***.xlsx]*'!G23

当我尝试使用公式评估来阅读它们时,它给出了以下错误:

Exception in thread "main" java.lang.RuntimeException: Could not resolve external workbook name '/**/**.xlsx'. Workbook environment has not been set up.
at org.apache.poi.ss.formula.OperationEvaluationContext.createExternSheetRefEvaluator(OperationEvaluationContext.java:109)
at org.apache.poi.ss.formula.OperationEvaluationContext.createExternSheetRefEvaluator(OperationEvaluationContext.java:84)
at org.apache.poi.ss.formula.OperationEvaluationContext.getRef3DEval(OperationEvaluationContext.java:309)
at org.apache.poi.ss.formula.WorkbookEvaluator.getEvalForPtg(WorkbookEvaluator.java:634)
at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateFormula(WorkbookEvaluator.java:505)
at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:263)
at org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:205)
at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateFormulaCellValue(XSSFFormulaEvaluator.java:267)
at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateFormulaCell(XSSFFormulaEvaluator.java:154)
at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateAllFormulaCells(HSSFFormulaEvaluator.java:346)
at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateAllFormulaCells(HSSFFormulaEvaluator.java:337)
at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateAllFormulaCells(XSSFFormulaEvaluator.java:241)
at com.kiodex.ExcelWorkbook2007.parse(ExcelWorkbook2007.java:26)
at ExcelTest.main(ExcelTest.java:24)
    Caused by: org.apache.poi.ss.formula.CollaboratingWorkbooksEnvironment$WorkbookNotFoundException: Could not resolve external workbook name '/**/**.xlsx'. Workbook environment has not been set up.
at org.apache.poi.ss.formula.CollaboratingWorkbooksEnvironment.getWorkbookEvaluator(CollaboratingWorkbooksEnvironment.java:194)
at org.apache.poi.ss.formula.WorkbookEvaluator.getOtherWorkbookEvaluator(WorkbookEvaluator.java:156)
at org.apache.poi.ss.formula.OperationEvaluationContext.createExternSheetRefEvaluator(OperationEvaluationContext.java:107)
... 13 more

该工作表具有正确的值,但由于它们是公式类型,当我们尝试对其进行评估时,它会给出公式中引用的 Excel 的错误。

我尝试了以下链接中给出的所有可能的方法。 Formula Evaluation Apache但它不起作用。

请帮忙。

最佳答案

我今天也遇到了同样的错误。因为由于一些数据丢失问题,我从旧的 Excel 文件创建了新的 Excel 文件并更改了其名称。当我在新的 Excel 文件中计算公式时,它以其旧名称给出了此错误。下面的行像魅力一样解决了问题:

wb.setForceFormulaRecalculation(true)

希望它能对某人有所帮助。

关于java - 使用 Apache poi 在 Excel 中计算公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31400541/

相关文章:

java - Apache POI - 无法将格式应用于单元格

java - 必需的: variable Found:value Error Java Text-Based Calculator

java - 是否可以强制 JButton 始终为正方形?

java - 在 java 中导入 .xlsx 文件时出现 OutOfMemoryException

java - 如何使用 Apache POI 重写 .xlsm 文件?

java - Apache poi XSSF 创建 Excel 文件 - 创建返回空文件,格式或文件扩展名无效?

java - 我需要批量后台删除服务/软件

java - 如何使用 @JsonAlias 注释将嵌套值映射到属性?

java - 公开 JSP 文件中未使用的属性 (Spring)

java - 为什么 Apache poi 的 Workbook.close() 方法将内容写入输入文件?