2016-04-07 11 views
0

ich verwende BibliothekLesen große Excel-Datei .xlsx

org.apache.poi 


XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); 

Ich versuche

org.xml.sax 

Bibliothek, kann aber nicht in der Lage zu konvertieren es in Arbeitsmappe

HINWEIS: am Endergebnis Ich möchte, dass XSSFWorkbook zurückgegeben wird

der obige Code wird aus dem Speicher gehen, wird jede Hilfe geschätzt werden Vielen Dank im Voraus

+1

"HINWEIS: am Ende Ergebnis möchte ich XSSFWorkbook zurückgegeben werden": Das ist nicht möglich. XSSFWorkbook muss vollständig im Speicher vorhanden sein. Verwenden Sie das SXSSFWorkbook https://poi.apache.org/spreadsheet/how-to.html#sxssf. –

+0

Die Frage bezieht sich auf Lesen, nicht auf Schreiben, worum es bei SXSSFWorkbook geht. – centic

Antwort

1

Wenn die Eingabedaten für den verfügbaren Speicher zu groß sind, haben Sie zwei Möglichkeiten.

a) mehr Speicher über die Option Java-Kommandozeile -Xmx Geben

b) die Streaming-API of POI.

Option a) wird leicht zu machen sein, wenn die Dateien schließlich in den Speicher passen. Wenn die Datei zu groß für den verfügbaren physischen Speicher ist, müssen Sie sich die Streaming-Optionen ansehen, insbesondere zeigt das Beispiel XLSX2CSV, wie Sie Daten aus beliebig großen .xlsx-Dateien lesen können, allerdings mit einigen Funktionen, die auf mehrere zugreifen müssen Zellen sind nicht standardmäßig verfügbar.

Verwandte Themen