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

时间:2014-11-18 22:31:04

标签: java excel apache-poi

我正在使用POI将数字单元格写入新的Excel文件'Test.xlsx'。 我首先插入2行,每行2列,每行包含值:

  • Row 1 --> 10 (Cell A1), 20
  • Row 2 --> 15, 20 (Cell B2)

对于第3行第1列,我设置了公式SUM(A1:B2)

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.
    }
}

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

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

当我关闭excel时,我是否遗漏了一些东西以摆脱提示?任何指针将不胜感激。

0 个答案:

没有答案