Excel lesen wie CSV

OnDemand

Top Contributor
Hi! Wir lesen aktuell CSV Dateien mit Univocity ein. Gibt es iiirgendeine Libary mit der ich Excel Dateien genau so einfach einlesen kann, wie ich es mit CSV Dateien mache? Finde nur sehr komplizierte Frameworks, vermutlich ist es auch einfach kompliziert.

Hiermit kenne ist es, aber das ist zellenweise, nich zeilenweise https://www.baeldung.com/java-microsoft-excel
 

Robert Zenz

Top Contributor
Apache POI ist glaube ich so ziemlich das einzige in der Java Welt das Microsoft Excel gut lesen kann. Die Eigenheiten vom Format schlagen halt doch durch, ganz so einfach wie eine CSV lesen wird es nicht werden.

Oder wenn du ganz, ganz, ganz mutig bist, ich glaube es gab einen ODBC Treiber mit dem man Excel Dateien wie Datenbanken ansprechen konnte.
 

KonradN

Super-Moderator
Mitarbeiter
Also ich kenne die Funnktionalität von Univocity nicht, aber CSV Dateien einlesen kann ein ganz schöner Murks sein und gerade wenn Du Excel Dateien konvertierst kann das problematisch werden.

a) CSV (comma separated values) baut Excel mit ; statt , - Du kannst also unterschiedliche Formate bekommen.
b) Du hast Strings in Quotes, aber was ist, wenn in dem Text ein Quote vorkommt?
c) Darstellung - was ist denn 2/3/2022 - ist das der Kommende 2. März oder der vergangene 3. Februar? Ist das 1.000 eine 1000 mit tausenderpunkt oder ist es ein 1,0 nur eben mit 3 Nachkommastellen. Ok, letzteres ist an den Haaren herbei gezogen, den bei Excel kommt das nicht vor - ersteres ist nur eine Darstellung und kein Bestandteil vom Wert und letzteres wäre einfach eine 1 ... Aber das ist Excel typisch. Das Datum wird nach regionalen Settings in die csv geschrieben meine ich. Der Fall bleibt also.

Ich hatte mir daher vor langer Zeit einmal einen eigenen CSV Reader geschrieben, der halt erst die Zeilen analsysiert hat um zu schauen, ob da , oder ; verwendet werden. Dann habe ich bei Feldern, die mit einem Quote anfangen, immer nach dem schließenden Quote gesucht (das ist ein Quote mit Trenner danach). Nicht perfekt aber hat die Einlesequote deutlich verbessert.
Aber gewisse Fälle durften nicht vorkommen wie z.B.: "Ich sagte "Tschüss", ging ich nach Hause und legte mich ins Bett."

Bei Datenübertragungen haben wir immer versucht eben auf CSV zu verzichten. Von Excel (Einem Format, dass Felder sauber trennt und Dir sogar den Typ sicher sagt!) hin zu einem reinen text Format.

(Und ja - mir ist bewusst, dass ich da mal wieder alleine stehen werde. Die Diskussionen hatten wir alle schon und man wird mir Unverständnis zeigen, da es ja eine CSV Standard gibt, der irgendwann lange nach Excel und Co geschrieben wurde und nur sehr wenig Leute interessiert. Aber ich hatte da diverse Erlebnisse in der Vergangenheit mit nicht auswertbaren Dateien und da war ich dann froh, dass da dann schnell nach Excel umgestellt wurde.)

Und wenn Du wirklich nur die Excel Datei wie eine CSV Datei auslesen willst, dann mach das doch einfach. Auch mit POI ist das keine wirkliche Fummelei sondern Code, der sehr einfach und schnell geschrieben werden kann. (Im Gegensatz zu der Fummelei bei CSV, die ich erlebt habe!)
Wobei das ja evtl. diese erwähnte Library ja schon für Dich macht.
 

OnDemand

Top Contributor
HI, Univocity macht das mega einfach. Es erkennt Quotes und Trennzeichen automatisch, man kann es aber auch als Parameter übergeben usw. Wirklich extrem easy und zuverlässig. Habe zuvor auch immer per Hand geparsed aber das ist ne Katastrophe gewesen. Wir verarbeiten jeden Tag mindestens 10 verschiedene CSV Dateien und haben nie Probleme - ausser die CSV ist mal kaputt.
Excel muss ich mir mal ansehen mit POI, danke. Aber der Aufwand ist vermutlich zu hoch, da komm ich besser alle paar Wochen die Excel als CSV zu speichern und einzulesen.

Mit Datum hast du Recht, das ist murks. Aber brauchen wir zum Glück nicht.
 

mihe7

Top Contributor
Aber der Aufwand ist vermutlich zu hoch, da komm ich besser alle paar Wochen die Excel als CSV zu speichern und einzulesen.
POI ist vom Aufwand her überschaubar. Das Beispiel unter 3.1 von Baeldung zeigt ja schon das Grundgerüst. Das Lesen der Zelle (switch) noch in eine Methode auslagern, dann sollte das schon sehr gut passen.

Allerdings muss man ein wenig aufpassen, was leere Zeilen und Spalten betrifft (s. auch https://www.baeldung.com/java-excel-find-last-row).
 

mihe7

Top Contributor
Und ja - mir ist bewusst, dass ich da mal wieder alleine stehen werde. Die Diskussionen hatten wir alle schon und man wird mir Unverständnis zeigen, da es ja eine CSV Standard gibt, der irgendwann lange nach Excel und Co geschrieben wurde und nur sehr wenig Leute interessiert. Aber ich hatte da diverse Erlebnisse in der Vergangenheit mit nicht auswertbaren Dateien und da war ich dann froh, dass da dann schnell nach Excel umgestellt wurde.
Halt Dich fest: das beste ist XML.

Ja, ich weiß, XML ist "out" aber mir zeige mal einer ein Standardtextformat, das Schemadefinitionen à la XSD ermöglicht. JSON-Schema geht in die Richtung, ist aber in bestimmten Bereichen (Datentypen) nicht so stark wie XSD. Und XML kann man mit Java sehr schön verarbeiten, insbesondere wenn man sich die Klassen generieren lässt.
 

KonradN

Super-Moderator
Mitarbeiter
Halt Dich fest: das beste ist XML.
Jaaaaaa!!!

Da rennst Du bei mir offene Türen ein. Wir haben mal ein Produkt entwickelt, das massiv mit XML und xslt gearbeitet hat. Da wurde in erster Linie aus mehr oder weniger beliebigen Quellen Daten in XML eingelesen und dann mit xslt verarbeitet. Um dann halt im Endeffekt Dinge umzusetzen.

Es gab dann schlicht etwas, das wir Policies genannt haben, was aber unter dem Strich ein xslt war, das Daten aus Quellen abgeglichen hat um dann etwas zu machen. Wenn also ein User existiert im AD, dann muss er gewisse Dinge haben ... teilweise in Abhängigkeit von Gruppen. Die User wurden also einfach abgeglichen mit einem Identity System und das, was dann in dem AD Umfeld gemacht werden musste, wurde automatisch gemacht. Wenn es da Probleme gab: Kein Thema - beim nächsten Durchlauf wurde es erneut probiert ...

Und das halt nicht als Script auf irgend einem System eines Admins, von dem außer ihm niemand etwas weiss oder so sondern zentral in einem System, das die Automatisierung gemacht hat.

Das nur als ein Beispiel, wobei sich sehr viele Policies um AD / User und deren Gruppen drehten. Das ist halt etwas, das große Firmen als Prozess haben: User braucht eine Gruppe oder muss da raus. Da gibt es die User Administration und den Passierschein A38 und damit geht alles. Und statt immer neue Prozesse zu erfinden hat man sich da einfach mit vielen Dingen drangehängt.

Ach ja - es gibt so Projekte, an die erinnert man sich gerne :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Excel Tabelle lesen und in neue Excel Tabelle einfügen Allgemeine Java-Themen 11
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
H POI Excel lesen und schreiben Allgemeine Java-Themen 10
MQue Excel bzw. *.csv-Datei lesen Allgemeine Java-Themen 12
E Excel Dateien mit Java lesen? Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
D ODS.Datei öffnet leider in Excel Allgemeine Java-Themen 3
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
Trèfle Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt. Allgemeine Java-Themen 3
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
C Aus MEHREREN Excel Tabellen bestimmte Zelle addieren Allgemeine Java-Themen 1
offi Excel mit Inhalten aus DB öffnen ohne zu speichern Allgemeine Java-Themen 8
C Zeilen-"Vektor" aus Excel-Tabelle suchen Allgemeine Java-Themen 0
R EXCEL Range und HSSF POI CellRangeAddress Allgemeine Java-Themen 1
J Apache POI Excel- Blattschutz aufheben Allgemeine Java-Themen 2
ms_cikar Java Excel bearbeiten spalten werden überschrieben. Allgemeine Java-Themen 4
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
U Java Excel export Allgemeine Java-Themen 1
M Excel Formel in Java Allgemeine Java-Themen 7
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
T Java Excel Drop Down Formularsteuerelement Allgemeine Java-Themen 0
C Benutzereingabe von EXCEL-Funktionen parsen Allgemeine Java-Themen 4
T Excel - mit jxf sprachabhängige Formeln schreiben Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
J Ausgabe nach Excel Allgemeine Java-Themen 1
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
Todesbote Excel Zellen umranden Allgemeine Java-Themen 1
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
G Langtexte - Cellformat import in Excel Allgemeine Java-Themen 3
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
R Variablen per HSSF geheime Werte von JAVA an EXCEL Allgemeine Java-Themen 2
J excel einbinden Allgemeine Java-Themen 2
M Threads Excel files bearbeiten Allgemeine Java-Themen 4
S Java & Excel Allgemeine Java-Themen 4
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6
C Java Excel Button Allgemeine Java-Themen 2
M Bilder aus Excel auslesen Allgemeine Java-Themen 6
A Excel nach bestimmten Inhalt durchsuchen Allgemeine Java-Themen 8
P Absatz im String / Excel / /n geht nicht Allgemeine Java-Themen 2
P java tabelle auslesen - xls (excel) fehler Allgemeine Java-Themen 5
H Excel Ausdrucken per Knopfdruck Allgemeine Java-Themen 6
P Excel-Sheets erzeugen aus Report Allgemeine Java-Themen 2
E Excel Datei weiter verarbeiten Allgemeine Java-Themen 4
A Excel Tabelle in JFrame darstellen Allgemeine Java-Themen 6
M POI Excel Cell copie Allgemeine Java-Themen 4
J Zeilenumbruch - Excel Export HSSF Allgemeine Java-Themen 10
C Strings in Excel einlesen! Allgemeine Java-Themen 2
G Input/Output Apache POI Excel Allgemeine Java-Themen 5
N POI Passwortgeschützte Excel-Datei bearbeiten Allgemeine Java-Themen 3
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
M POI Excel Problem mit akt. der Summenfelder aus Vorlage Allgemeine Java-Themen 4
T DLL in Java einbinden (Quelltext aus Excel VBA) Allgemeine Java-Themen 5
S Excel -> Webseiten Formular -> Excel Allgemeine Java-Themen 5
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
V Apache POI Excel Sheet auslesen Allgemeine Java-Themen 5
C Datum in Excel auslesen Allgemeine Java-Themen 13
B Excel Datei in einem Java Programm mit GUI darstellen Allgemeine Java-Themen 9
G Excel Menüsteuerung ansprechen Allgemeine Java-Themen 3
M Rein informativ - Daten aus Excel-Tabelle in Java-Programm importieren Allgemeine Java-Themen 3
M Poi-Excel: vorhandene Formatierung verwenden Allgemeine Java-Themen 2
T OLE-Automation mit Excel (Wert übergabe) Allgemeine Java-Themen 1
T Jakarta Objekt (Excel Sheet) in Swing/SWT einbetten Allgemeine Java-Themen 3
T Apache POI Export EXCEL - [Zahlen-Werte] Allgemeine Java-Themen 1
S Excel in mySQL importieren Allgemeine Java-Themen 3
B JEE Excel Kalkulation Allgemeine Java-Themen 5
J Java-Neuling und Excel - autsch! Allgemeine Java-Themen 16
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
mh Excel mit POI auslesen Allgemeine Java-Themen 5
S Passwort geschützte Excel Datei öffnen (POI) Allgemeine Java-Themen 4
S Java Excel bestimmte Zellen auslesen (POI HSSF) Allgemeine Java-Themen 11
J Mit POI Zeile in Excel löschen Allgemeine Java-Themen 5
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
M Formattierung von Excel Spalten mit jxl Allgemeine Java-Themen 4
G Daten von Excel kopieren - sinnvolle Datenstruktur? Allgemeine Java-Themen 3
A CSV-Datei (Spalt A -> Excel) in Array packen und auslesen Allgemeine Java-Themen 25
G Excel Werte / Zellen formatieren Allgemeine Java-Themen 5
F Formatieren von Zellen in Excel mit Java POI Allgemeine Java-Themen 5
R Excel Export Allgemeine Java-Themen 5
A Excel-Datei öffnen Allgemeine Java-Themen 9
T JCom Beispeil mit Excel Allgemeine Java-Themen 4
S Daten extrahieren aus Excel Dateien (auch 2k7) Allgemeine Java-Themen 4
M JAVA und Excel Allgemeine Java-Themen 8
R Excel auslesen Allgemeine Java-Themen 4
G Java POI HSSF Excel Datei Gruppierung und Gliederung Allgemeine Java-Themen 2
S Anzahl der Stunden in Excel Datei schreiben Allgemeine Java-Themen 2
S In excel Datei schreiben Allgemeine Java-Themen 1
V (Excel-) Datei geöffnet? Allgemeine Java-Themen 4
M Excel Massaker Allgemeine Java-Themen 3
G mit Apache-Jakarta-POI auch Graphiken aus Excel einlesen? Allgemeine Java-Themen 3
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F Xml-datei zu Excel exportieren Allgemeine Java-Themen 5
ARadauer Excel Datei in Excel aus Java heraus öffnen Allgemeine Java-Themen 10
X excel daten auslesem Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben