utilizzando il seguente codice, le variazioni di valore delle cellule apportate al mio foglio di calcolo di Excel non sono salvati:Perché il metodo close() di Apache POI OPCPackage close() non salva/scrive il contenuto per aprire il file scrivibile?
OPCPackage pkg = OPCPackage.open(inputFile);
XSSFWorkbook wb = new XSSFWorkbook(pkg);
ModifyWorkbook();
pkg.close();
La seguente è una soluzione che ho scritto, ma non capisco il motivo per cui è necessario.
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();
Le javadocs e guide sull'argomento indicano che il metodo .close() deve salvare e chiudere. Controlla i valori delle celle modificate, prima della chiusura, indica che le modifiche sono state apportate, ma il metodo pkg.close() da solo non è sufficiente per scrivere quelle modifiche al file quando è chiuso.