ich habe eine Excel-Datei, die als Vorlage dienen und wird von mehreren BenutzernApache poi Schreiben auf temporäre Datei statt echte Datei
Ich verwende Apache Poi, dies zu tun
Das Problem writted und heruntergeladen werden, wenn eine Benutzer füllen die Excel (mit einem GUI-Client) wird es direkt in die Vorlage geschrieben werden, aber als Vorlage sollte es unverändert bleiben, sonst wird der nächste Benutzer vorherige Benutzeränderungen haben ....
Die beste Lösung, die ich denke, ist zu schreiben zu einer Temp-Dateien, die bei Aktion Aktion des Benutzers
gelöscht werden Vielen Dank
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;
wollte sollten Sie rufen 'bos.close()' 'vor bos.toByteArray()'. –
Sie scheinen in den 'ByteArrayOutputStream' zu schreiben anstatt in' Datei', die Sie als temporäre Datei erstellt haben - was passiert, wenn Sie den Code so ändern, dass er tatsächlich in Ihre temporäre Datei schreibt? – Gagravarr
@beckyang danke, Code aktualisiert – ulquiorra