Ich muss große Excel-Dateien lesen und ihre Daten in meine Anwendung importieren.Apache POI Streaming (SXSSF) zum Lesen
Da POI eine große Menge an Heap in Anspruch nimmt, oft zu arbeiten werfen OutOfMemory
Fehler, fand ich heraus, dass es eine Streaming API für Daten auf serielle Weise excel Handling (anstatt die Datei vollständig in den Speicher geladen)
ich habe eine xlsx
Arbeitsmappe mit einem einzelnen Arbeitsblatt und in mehr Werten in Zellen eingegeben und kam mit dem folgenden Code, um es zu lesen, um zu versuchen:
public static void main(String[] args) throws Throwable {
SXSSFWorkbook wb = new SXSSFWorkbook(new XSSFWorkbook(new FileInputStream("C:\\test\\tst.xlsx"))); // keep 100 rows in memory, exceeding rows will be flushed to disk
SXSSFSheet sheet = (SXSSFSheet) wb.getSheetAt(0);
Row row = sheet.getRow(0);
//row is always null
while(row.iterator().hasNext()){ //-> NullPointerException
System.out.println(row.getCell(0).getStringCellValue());
}
}
, trotz der Lage ist, seine Arbeitsblatt zu erhalten richtig, es immer kommt mit leeren (null) Zeilen.
Ich habe recherchiert und einige Beispiele der Streaming-API im Internet gefunden, aber keine von ihnen sind Lesen vorhandenen Dateien, sie sind alle über Generieren von Excel-Dateien.
Ist es tatsächlich möglich, Daten von bestehenden .xlsx
Dateien in einem Stream zu lesen?
Verwenden Sie Eclipse IDE dafür? –
Ja, ich bin, warum? –
coz Ich habe eine Lösung, wenn Sie den Heap-Speicherplatz erhöhen möchten. –