使用以下代码,不会保存对我的 Excel 电子表格所做的单元格值更改:
OPCPackage pkg = OPCPackage.open(inputFile);
XSSFWorkbook wb = new XSSFWorkbook(pkg);
ModifyWorkbook();
pkg.close();
以下是我写的解决方法,但我不明白为什么它是必要的。
OPCPackage pkg = OPCPackage.open(inputFile);
XSSFWorkbook wb = new XSSFWorkbook(pkg);
ModifyWorkbook();
File tmp = File.createTempFile("tempSpreadsheet", ".xlsx");
FileOutputStream newExcelFile = new FileOutputStream(tmp);
wb.write(newExcelFile);
newExcelFile.close();
tmp.deleteOnExit();
pkg.close();
该主题的 javadocs 和指南表明 .close() 方法应该保存并关闭。在关闭之前检查修改的单元格的值表明已进行更改,但仅 pkg.close() 方法不足以在关闭时将这些更改写入文件。