我有作爲一個模板,將幾個用戶的Apache POI寫入臨時文件,而不是真正的文件
我使用的Apache POI這樣做
的問題進行創作的,並下載一個excel文件,當一個用戶填寫excel(使用gui客戶端)它將直接寫入模板,但作爲模板,它應該保持未修改,否則下一個用戶將有以前的用戶更改....
我認爲最好的解決方案是寫到臨時文件將在用戶的行動出口刪除
非常感謝您
File excelFile = openTemplate();
OPCPackage pkg = OPCPackage.open(excelFile ,PackageAccess.READ_WRITE);
XSSFWorkbook book = new XSSFWorkbook(pkg);
book.setWorkbookType(XSSFWorkbookType.XLSX);
book.setForceFormulaRecalculation(true);
// excel treatments (sheet , styles etc..)
FileOutputStream out =
new FileOutputStream(TempFile.createTempFile("Export" , ".xlsx"));
book.write(out);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bos.writeTo(out);
bytes = bos.toByteArray();
out.close();
bos.close();
book.close();
return bytes;
你應該叫'bos.close()''之前bos.toByteArray()'。 –
您似乎正在寫入'ByteArrayOutputStream'而不是作爲臨時文件創建的'File' - 當您更改代碼以實際寫入臨時文件時會發生什麼? – Gagravarr
@beckyang謝謝,代碼已更新 – ulquiorra