2009-04-06 17 views
11

Wie kann ich CSV-Daten mit Apache POI effizient importieren? Wenn ich eine sehr große CSV-Datei habe, die ich gerne in meiner Excel-Tabelle speichern möchte, dann kann ich mir nicht vorstellen, dass das Gehen von Zelle zu Zelle der beste Weg zum Importieren ist ...?Importieren von CSV-Daten mit Apache POI

Antwort

1

Die effizienteste Möglichkeit zum Hinzufügen von Informationen zu Ihrer Excel-Tabelle besteht in der Verwendung eines Arrays. Dieser Code:

Sheets(1).Range("A1").Resize(uBound(myArray),uBound(myArray,2)).Value = myArray 

füllt das Blatt Bereich von einer zweidimensionalen Anordnung, wobei die untere Grenze 1.

In Ihrer Situation ist, würde ich die CSV-Datei in ein Array zuerst lesen und dann Syntax wie oben, um es auf dem Arbeitsblatt zu platzieren.

Stan Scott

15

Apache POI wurde nie auf CSV-Dateien aufrufen entworfen. Während eine CSV-Datei in Excel geöffnet werden kann, verfügt Excel über einen eigenen Leser, der einen automatischen Import durchführt. Dies setzt voraus, dass Ihre CSV-Datei anstelle des Suffix .txt die CSV-Datei enthält. Wenn es das Suffix .txt hat, speichern Sie es als .csv. Alles, was Sie dann tun müssen, ist mit der rechten Maustaste auf die CSV und Öffnen mit Excel. Presto, die CSV wurde in Excel importiert.

Ich gehe davon aus, dass Sie die Daten aus einer TXT-Datei in die Excel-Datei analysieren möchten. Wenn das der Fall ist, würde ich vorschlagen, dass Sie eine Bibliothek verwenden, die SuperCSV statt versucht, POI zu bekommen, etwas zu tun, für das es nie entworfen wurde. Es lädt alles in eine Bean, Karte oder Liste Ihrer Wahl, während es die Daten analysiert und Sie können es dann entweder in das von Ihnen gewählte Format in eine .csv-Datei schreiben oder eine JDBC-ODBC Bridge oder Apache POI zum Schreiben verwenden es direkt in und .XLS Format. Fügt einen zusätzlichen Schritt hinzu, aber Sie haben dann die vollständige Kontrolle über die Daten.

SuperCSV trägt die Apache2-Lizenz, also sollte es für alles, was Sie damit tun, gut sein.

Oder verwenden Sie einfach die .split() - Funktion in Java und parsen Sie die CSV in Arrays und laden Sie die Arrays in .xls mit POI.