要解决Apache Poi中单元格中错误值不会重新计算的问题,可以使用以下代码示例:
import org.apache.poi.ss.usermodel.*;
public class RecalculateFormula {
public static void main(String[] args) {
// 读取现有的工作簿
Workbook workbook = WorkbookFactory.create("existing_workbook.xlsx");
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 获取单元格
Cell cell = sheet.getRow(0).getCell(0);
// 检查单元格是否包含公式
if (cell.getCellType() == CellType.FORMULA) {
// 强制执行公式重新计算
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateFormulaCell(cell);
}
// 保存工作簿
try {
workbook.write(new FileOutputStream("existing_workbook.xlsx"));
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的示例中,我们首先使用WorkbookFactory.create
方法读取现有的工作簿。然后,我们获取第一个工作表并获取要重新计算的单元格。
接下来,我们检查单元格的类型是否为公式。如果是公式,我们创建一个FormulaEvaluator
对象,并使用evaluateFormulaCell
方法强制执行公式重新计算。
最后,我们使用FileOutputStream
将工作簿保存到磁盘,并关闭工作簿。
请注意,这个示例假设现有的工作簿名称为“existing_workbook.xlsx”。您需要根据实际情况更改文件名。此外,您需要确保您的项目中包含了Apache Poi的依赖项。