我正在使用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时,我是否遗漏了一些东西以摆脱提示?任何指针将不胜感激。