Im Code lädt der Client eine Standarddatei .xlsx über Struts hoch.Erstellen einer XSSF-Arbeitsmappe aus einer hochgeladenen .xlsx-Datei (Excel-Datei 2007)
In der Aktion nehmen wir die Datei
FormFile myfile = ABCForm.getTheFile();
Meine Abfrage ist, wie würde ich eine XSSFWorkbook aus dieser Datei erstellen.
Ich habe auch einen parallelen Prozess für den Zugriff auf 2003 excel
FormFile myfile = ABCForm.getTheFile();
byte[] fileData = myFile.getFileData();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileData);
in the Helper class
POIFSFileSystem fs = new POIFSFileSystem(byteArrayInputStream);
HSSFWorkbook wb = new HSSFWorkbook(fs);
und dann die weitere Verarbeitung der Arbeitsmappe auf diese Weise einreichen.
Ich würde gerne wissen, wie ein XSSFWorkbook erstellen, wie ich das HSSFWorkbook oben erstellt habe.
Ich habe alle ooxml und verwandte Gläser in den Klassenpfad und lib-Ordner.
XSSFWorkbook kann nicht aus byteArrayInputStream erstellt werden. Apache XSSF Workbook. Es kann nur aus Inputstream und OPCPackage erstellt werden.
Irgendwelche Ideen/Hinweise, wie man weiter geht. Ich werde gerne weitere Details über andere Code-Snippets geben, die helfen würden.
Gute Erklärung. Gibt es eine Möglichkeit zu sagen, mit welcher Art von Datei Sie arbeiten, nachdem Sie die Arbeitsmappe mit der Arbeitsmappenfactory erstellt haben? Ich habe in dieser Factory-Klasse nur create-Methoden gesehen. – berto77
Verwenden Sie 'instanceof', um zu testen, ob es sich um ein HSSFWorkbook oder XSSFWorkbook handelt. – Gagravarr
Dies ist ein Problem, da App Engine über eine begrenzte Speicherkapazität verfügt und das Laden des gesamten Eingabestreams in den Speicher Java verursacht. lang.outofmemory Probleme für mich leider. Sie müssen herausfinden, wie Sie beim Lesen aus einem Eingabestream puffern können, da in der Welt der App-Engine keine lokale Dateistruktur vorhanden ist. – anon58192932