csv in xlsx umwandeln

Morinho

Aktives Mitglied
Hallo zusammen,
ich bräuchte Hilfe bei meinem Projekt.
Ich habe nämlich eine csv Datei mit ungefähr 15 Spalten und 38000 Zeilen und ich möchte gern diese Daten der csv-Datei sozusagen kopieren und in eine Exceltabelle schreiben also möchte ich eine csv-Datei in eine xlsx-Datei konvertieren.

Mein Code sieht bis jetzt folgender Maßen aus:

Java:
package testconvert;


//alle benötigten imports
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class exelim_test {
 
 public void createExcelfile(String fileName) throws IOException{
 
	 String currentLine = null; //die Variable currentLine wird auf null gesetzt
	 Workbook wb = new XSSFWorkbook(); //Ein Excelworkbook wird gebildet
	 FileOutputStream fos = new FileOutputStream(/*outDirectory*/"D:\\" + fileName +".xlsx"); //Dies ist der Pfad mit Dateiname wo die ausgewerteten xlsx-Dateien hingespeichert werden sollen
	 wb.createSheet("Diagramm"); //Hier wird eine Tabelle im Excelfile erzeugt und benannt
	 wb.createSheet("Metadaten"); //Hier wird eine Tabelle im Excelfile erzeugt und benannt
	 File myFile = new File(/*inDirectory*/"D:\\test.csv"); //Hier wird/ werden die ausgewählte/n.csv-Datei/en angegeben
	 Scanner reader = new Scanner (myFile); //Scanner wird erzeugt mit der Varibalen myFile
 while (reader.hasNextLine() == true){ //Scanner liest solange Zeilen vorhanden sind
	 currentLine = reader.nextLine();
	 String[] getrennteDaten = currentLine.split(";");//Daten werden bei ";" gesplittet und in das Array getrennteDaten geschrieben
	 FileWriter writer = new FileWriter(); //Hier sollen die gesplitteten  Daten des Arrays "getrennteDaten" in das Excelfile geschrieben werden
	 
	 writer.write("Go!");
	 writer.close();
 }
 reader.close(); //schließen von Scanner
 wb.write(fos); //schließen von FileWriter
 fos.close(); //schließen von FileOutputStream
 System.out.println("Done!"); //Ausgabe um das Programmende zu zeigen
 }
}

Ich bedanke mich gleich im Voraus für alle Bemühungen.

Mit freundlichen Grüßen
Morinho
 
Zuletzt bearbeitet von einem Moderator:

Morinho

Aktives Mitglied
Also habe inzwischen meinen Code umgeschrieben so dass es fast funktioniert nur ich bekomme die Fehlermeldung ArrayIndexOutOfBounceException doch ich weis nicht wo das Problem liegt denn die Fehlermeldung kommt sogar wenn die csv-Datei leer ist.

Also hier die spezifische Frage:
Wieso ArrayIndextOutOfBounce? Wo liegt mein Fehler kann mir da jemand bitte helfen?

Java:
package excel;


//alle benötigten imports
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import au.com.bytecode.opencsv.CSVReader;


public class exelim {
 
 public void createExcelfile(String fileName) throws IOException{
 
	 Workbook wb = new XSSFWorkbook(); //Ein Excelworkbook wird gebildet
	 FileOutputStream fos = new FileOutputStream(/*outDirectory*/"D:\\" + fileName +".xlsx"); //Dies ist der Pfad mit Dateiname wo die ausgewerteten xlsx-Dateien hingespeichert werden sollen
	 wb.createSheet("Diagramm"); //Hier wird eine Tabelle im Excelfile erzeugt und benannt
	 Sheet sheet = wb.createSheet("Metadaten"); //Hier wird eine Tabelle im Excelfile erzeugt und benannt
     String inputCSVFile = "D:\\hallo.csv"; //Hier wird/ werden die ausgewählte/n.csv-Datei/en angegeben
     CSVReader reader = new CSVReader(new FileReader(inputCSVFile));
     String [] nextLine;
     int lnNum = 0;
     Map<String, Object[]> excel_data = new HashMap<String, Object[]>();
     while ((nextLine = reader.readNext()) != null) {
		lnNum++;                        
         excel_data.put(Integer.toString(lnNum), new Object[] {nextLine[0],nextLine[1]});                        
 }
 /* Step -5: Create Excel Data from the map using POI */
 Set<String> keyset = excel_data.keySet();
 int rownum = 0;
 for (String key : keyset) { //loop through the data and add them to the cell
         Row row = sheet.createRow(rownum++);
         Object [] objArr = excel_data.get(key);
         int cellnum = 0;
         for (Object obj : objArr) {
                 Cell cell = row.createCell(cellnum++);
                 if(obj instanceof Double)
                         cell.setCellValue((Double)obj);
                 else
                         cell.setCellValue((String)obj);
                 }
 }
 reader.close(); //schließen von Scanner
 wb.write(fos); //schließen von FileWriter
 fos.close(); //schließen von FileOutputStream
 System.out.println("Done!"); //Ausgabe um das Programmende zu zeigen
 }
}
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Normalerweise kommt eine Exception immer mit einem StackTrace! Dieser verrät dir genau die Zeile in der die Exception geworfen wird.

ArrayIndexOutOfBound wird dann geworfen wenn auf einen Index zugegriffen werden soll den es nicht gibt.
Beispiel:
Java:
int[] ziffern = new int[10];
// das array hat zwar eine größe von 10, aber da arrays 0-index basiert sind ist der höchste verfügbare index => größe des arrays - 1!
int zifferA = ziffern[0]; // funktioniert
int zifferB = ziffern[9]; // funktioniert
int zifferC = ziffern[10]; // wird dir eine entsprechende Exception werfen
 

Morinho

Aktives Mitglied
Der StackTrace ist diese Zeile:

Code:
excel_data.put(Integer.toString(lnNum), new Object[] {nextLine[0],nextLine[1]});

Doch meine Frage ist wie groß muss ich das Array denn machen wenn ich eine Datei mit 100 Spalten und 56000 Zeilen größtenfalls einlesen und in eine xlsx-Datei schreiben will?
 

Thallius

Top Contributor
Was ich nicht ganz kapiere ist warum du dafür überhaupt ein Programm schreiben willst. Warum öffnest du die CSV nicht direkt mit Excel oder einem derivat?
 

Morinho

Aktives Mitglied
Weil ich diese Daten dann bestimmten Formeln unterziehen muss und zu den ausgerechneten Werten muss ein Diagramm erstellt werden.
 

Joose

Top Contributor
Naja du liest deine CSV Datei zeilenweise ein und willst dann im Object[] die einzelnen Werte der Spalten speichern.
Sprich das Object[] muss eine größe von 100 haben. Natürlich musst du bei jeder Zeile die du liest auch kontrollieren ob diese wirklich richtig gesplittet wurde und du ein Array mit 100 Elementen hast.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Java xlsx zu csv Java Basics - Anfänger-Themen 19
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
R int in Ascci umwandeln Java Basics - Anfänger-Themen 7
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
S JAR zu EXE umwandeln Java Basics - Anfänger-Themen 22
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
C Rekursive Methode in Interative Methode umwandeln Java Basics - Anfänger-Themen 17
J Dezimalzahl in Bruch Umwandeln und Kürzen Java Basics - Anfänger-Themen 8
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
S String umwandeln Java Basics - Anfänger-Themen 6
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
O von Basis 10 in Basis x umwandeln Java Basics - Anfänger-Themen 5
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
I JSON Datei in Array umwandeln Java Basics - Anfänger-Themen 1
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
S \n nicht in Zeilenumbruch umwandeln Java Basics - Anfänger-Themen 5
W Dezimalzahlen in Binärzahl umwandeln. Wie möglich ? Java Basics - Anfänger-Themen 9
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
P 32 Bit Binärzahl Umwandeln in Dezimal Java Basics - Anfänger-Themen 8
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
geekex Double zu String umwandeln in einer Methode Java Basics - Anfänger-Themen 28
MiMa String in Gross und Kleinbuchstaben umwandeln Java Basics - Anfänger-Themen 10
H JCalendar in String umwandeln Java Basics - Anfänger-Themen 9
P Wie kann ich mein Programm zu einer App umwandeln? Java Basics - Anfänger-Themen 4
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
L String in Binär umwandeln Java Basics - Anfänger-Themen 4
G .java in .jar umwandeln Eclipse Java Basics - Anfänger-Themen 12
W String auf char[] umwandeln Java Basics - Anfänger-Themen 3
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
C Array in String umwandeln Java Basics - Anfänger-Themen 5
K Methoden Zahlensysteme umwandeln mittels Rekursion Java Basics - Anfänger-Themen 5
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
G Bilddaten in Matrix umwandeln Java Basics - Anfänger-Themen 1
L Java CMD Console in String umwandeln? Java Basics - Anfänger-Themen 2
D String zu int umwandeln Java Basics - Anfänger-Themen 2
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
K Wie .java in .jar umwandeln? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
G double in float umwandeln Java Basics - Anfänger-Themen 2
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
D String in FileInputStream umwandeln Java Basics - Anfänger-Themen 2
J Mit Eclipse PLZ in Koordinaten umwandeln und ausgeben Java Basics - Anfänger-Themen 3
A Erste Schritte Buchstaben in zahlen umwandeln Java Basics - Anfänger-Themen 4
T opengl Dreick in einen Würfel umwandeln Java Basics - Anfänger-Themen 0
S Groß bzw. Klein Buchstaben umwandeln (gemischt) Java Basics - Anfänger-Themen 1
D Methode mit mehren Rekursiven aufrufen in Methode mit einem Rekursiven Aufruf umwandeln! Java Basics - Anfänger-Themen 1
V String in Byte umwandeln Java Basics - Anfänger-Themen 11
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
N Unsymmetrisches mehrdimensionales Array in eindimensionales umwandeln Java Basics - Anfänger-Themen 2
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
W Umwandeln von Dezimal in Dual - Ausgabe incl. Rechenschritte Java Basics - Anfänger-Themen 11
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
J array in String umwandeln Java Basics - Anfänger-Themen 1
J array in String umwandeln Java Basics - Anfänger-Themen 3
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
1 Binärdarstellung (als String) in Dezimalzahl umwandeln Java Basics - Anfänger-Themen 8
J subStrings zu int Array umwandeln? Java Basics - Anfänger-Themen 19
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
C '.java' in '.exe' umwandeln. Java Basics - Anfänger-Themen 2
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
P Datum umwandeln Java Basics - Anfänger-Themen 5
P [B@6a435f in normalen Zahlen umwandeln, wie? Java Basics - Anfänger-Themen 14
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
J C++ Bitmanipulations-Programm in Java umwandeln Java Basics - Anfänger-Themen 10
B Zahl Basis 10 in DualDezimal 16bit umwandeln Java Basics - Anfänger-Themen 8
X Datentypen Int oder String in Bits/Bytes umwandeln Java Basics - Anfänger-Themen 10
W Datentypen String in Quellcode umwandeln Java Basics - Anfänger-Themen 25
J int mit führenden Nullen in String umwandeln Java Basics - Anfänger-Themen 5
B datentyp in binär umwandeln Java Basics - Anfänger-Themen 5
A String in Double umwandeln mit Tests Java Basics - Anfänger-Themen 3
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
S Datumsstring in datetime umwandeln Java Basics - Anfänger-Themen 2
T int als 100% umwandeln? Java Basics - Anfänger-Themen 7
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3
A String(Ascii ) in String umwandeln Java Basics - Anfänger-Themen 3
walker23m C++ Listen iteratoren in Java umwandeln Java Basics - Anfänger-Themen 3
V Zahl zu Text Umwandeln Java Basics - Anfänger-Themen 52
E Object in eigene Klasse umwandeln? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben