Java 如何摆脱;要将更改保存到';Test.xlsx'&引用;使用POI将公式单元格插入Excel并从文件系统打开/关闭时

Java 如何摆脱;要将更改保存到';Test.xlsx'&引用;使用POI将公式单元格插入Excel并从文件系统打开/关闭时,java,excel,apache-poi,Java,Excel,Apache Poi,我正在使用POI将数字单元格写入新的excel文件“Test.xlsx”。 我首先插入两行,其中两列各有值: 第1行-->10(单元格A1),20 第2行-->15、20(单元格B2) 对于第3行第1列,我设置了公式SUM(A1:B2) 在我的实际实现中,我使用用户输入和循环动态创建这些表、行和单元格,我在这里没有使用这些循环。这是我的代码的基本版本 现在,在我运行这个程序之后,我看到文件被创建了。我打开文件,看到单元格A3(公式单元格)对应的单元格的值为65。但是,当我关闭该文件时,会得到

我正在使用POI将数字单元格写入新的excel文件“Test.xlsx”。 我首先插入两行,其中两列各有值:

  • 第1行-->10(单元格A1),20
  • 第2行-->15、20(单元格B2)
对于第3行第1列,我设置了公式
SUM(A1:B2)

在我的实际实现中,我使用用户输入和循环动态创建这些表、行和单元格,我在这里没有使用这些循环。这是我的代码的基本版本

现在,在我运行这个程序之后,我看到文件被创建了。我打开文件,看到单元格A3(公式单元格)对应的单元格的值为65。但是,当我关闭该文件时,会得到提示“是否要将更改保存到create.xlsx?”? 我在单击上面提示的保存之前和之后解压了create.xlsx,并看到公式单元格在MySheet.xml中的标记F和V具有相同的值。 我还注意到,在手动保存excel文件之前,xml文件calcChain.xml已丢失,并且在手动保存后会出现

当我关闭excel时,是否遗漏了一些可以消除提示的内容?任何指点都将不胜感激

XSSFWorkbook wb = null;
String absPath = "C:\excel\Test.xlsx";
File f2 = createFileIfDirExist(absPath); //method will return handle if file created successfully
if (f2 != null) {
    wb = new XSSFWorkbook();
    XSSFSheet sheet = wb.createSheet("MySheet");
    if (sheet != null) {
        XSSFRow row0 = sheet.createRow(0);
        XSSFCell cell0 = row0.createCell(0);
        cell0.setCellValue(10);
        XSSFCell cell1 = row0.createCell(1);
        cell1.setCellValue(20);

        XSSFRow row1 = sheet.createRow(0);
        XSSFCell cell2 = row1.createCell(0);
        cell2.setCellValue(15);
        XSSFCell cell3 = row1.createCell(1);
        cell3.setCellValue(20);

        XSSFRow row2 = sheet.createRow(0);
        XSSFCell cell4 = row2.createCell(0);
        cell4.setCellType(Cell.CELL_TYPE_FORMULA);
        cell4.setCellFormula("SUM(A1:B2)");

        FileOutputStream outFile = new FileOutputStream(new File(f2));
        wb.write(outFile);
        outFile.close();
        f2.close();
        // call method to evaluate formulaEval.evaluateFormulaCell(cell) on every cell in sheet.
    }
}