我有作为一个模板,将几个用户的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