Textdatei auslesen -> In Excel speichern (Java POI)
Hey Leute,
ich schilder euch kurz mein Problem. Ich habe eine Textdatei mit über 850.000 Zeilen (nur Zahlen). Gibt es eine elegante Variante mittels der Java POI z.B. 700 Zeilen auszulesen und diese dann in eine Excel-Tabelle zu schreiben, danach wieder 700 Zeilen auslesen und in die nächste Spalte der Excel-Tabelle schreiben.
Mein Problem bis hier ist nicht das Auslesen von immer 700 Zeilen aus der Textdatei, sondern mehr das schreiben in die Excel-Datei. Das Auslesen läuft bisher über eine For-Schleife bis zum Ende der Datei - aber egal wie und was ich versuche.. über den FileOutputStream wird die Excel-Datei jedes mal neu angelegt und überschrieben. Somit stehen am Ende des Programmablaufs immer nur die letzten 700 Zeilen der Txt-Datei in meiner Excel-Tabelle (genauer in Spalte A)..
Dabei will ich einfach nur 700 Zeilen kopieren, dieses in Spalte A schreiben, wieder 700 Zeilen kopieren und in Spalte B schreiben (Eigentlich genauso wie die Funktion .append() - nur scheint es die nicht in der Java POI zu geben..) ohne das die alte Excel-Tabelle jedes mal überschrieben wird.
Vielleicht hatte ja jemand ein ähnliches Problem und eine Lösung gefunden? Sonst bleibt mir nur das händiche kopieren der ganzen Zeilen in die jeweilige Spalte und das scheint mir eine Mammutt-Aufgabe. Da es nicht nur eine Text-Datei gibt sondern 56 und alle haben ca. die selbe Anzahl an Zeilen...
3 Antworten
Du könntest auch einfach alle 850.000 Zeilen in Excel Spalte A kopieren und dann auf einem neuen Tabellenblatt in A1 eintragen:
=INDEX(Tabelle1!$A:$A;(SPALTE(A1)-1)*700+ZEILE(A1))
Diese Formel ziehst du runter bis A700. Danach markierst du A1:A700 und ziehst es soweit wie nötig nach rechts (ca. 1.200 Spalten).
Evtl. zum Schluss diese Tabelle kopieren, Inhalte einfügen, Nur Werte (damit du das Tabellenblatt mit der langen A-Spalte löschen kannst).
Achso vielleicht gibt es auch eine Möglichkeit die 850.000 Zeilen aus der Txt-Datei in die Excel-Datei in Spalte A zu kopieren und Excel soll diese dann in 700er Blöcke auf die ganzen Spalten automatisch aufteilen?
Danke schonmal!
Du kannst eine einfache csv-Datei schreiben, Zahlen durch Semikolon getrennt. Also alle 850k Zeilen in den Arbeitsspeicher einzulesen, sollte ja kein Speicherproblem darstellen. Diese Zeilen kannst Du dann ja bequem durchlaufen, um daraus eine csv-Datei zu erstellen.
So funktioniert es prima! An sowas einfaches hätte ich nie gedacht, danke! :)