Arbeiten mit CSV in Java: Bibliotheken OpenCSV, Apache Commons CSV und Java Scanner

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit CSV in Java: Überblick über Bibliotheken und Beispiele



CSV (Comma-Separated Values) ist eines der am weitesten verbreiteten Formate für den Austausch von Tabellendaten. Trotz der scheinbaren Einfachheit kann manuelles CSV-Parsing in Java aufgrund von Escape-Sequenzen für Anführungszeichen, verschachtelten Kommas und unterschiedlichen Kodierungen zu Fehlern führen. In diesem Artikel betrachten wir drei Hauptansätze: die Verwendung von OpenCSV, Apache Commons CSV und dem standardmäßigen java.util.Scanner.



1. OpenCSV – flexible und beliebte Bibliothek



OpenCSV ist eine leichte Open-Source-Bibliothek, die das Lesen und Schreiben von CSV, TSV und anderen Trennzeichen unterstützt. Sie verarbeitet automatisch Escape-Sequenzen, Anführungszeichen und mehrzeilige Felder.



Einbindung (Maven)

<dependency>    <groupId>com.opencsv</groupId>    <artifactId>opencsv</artifactId>    <version>5.9</version></dependency>


Beispiel: CSV in eine Liste von Objekten lesen

import com.opencsv.CSVReader;import com.opencsv.bean.CsvToBean;import com.opencsv.bean.HeaderColumnNameMappingStrategy;import java.io.FileReader;import java.util.List;

public class OpenCSVExample { public static void main(String[] args) throws Exception { try (FileReader reader = new FileReader("users.csv")) { // Manuelles Parsing CSVReader csvReader = new CSVReader(reader); String[] line; while ((line = csvReader.readNext()) != null) { System.out.println("Name: " + line[0] + ", E-Mail: " + line[1]); } } }}


Beispiel: Mapping auf Java Bean

public class User {    private String name;    private String email;    // Getter und Setter}

// Lesen mit Mappingtry (FileReader reader = new FileReader("users.csv")) { HeaderColumnNameMappingStrategy<User> strategy = new HeaderColumnNameMappingStrategy<>(); strategy.setType(User.class);

CsvToBean<User> csvToBean = new CsvToBeanBuilder<User>(reader) .withMappingStrategy(strategy) .build();

List<User> users = csvToBean.parse();}


2. Apache Commons CSV – Standard von Apache



Apache Commons CSV ist Teil des Apache Commons-Ökosystems. Es bietet vorgefertigte Formate (RFC 4180, Excel, MySQL) und Stream-Verarbeitung.



Einbindung (Maven)

<dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-csv</artifactId>    <version>1.11.0</version></dependency>


Beispiel: Lesen mit Kopfzeilen

import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVParser;import org.apache.commons.csv.CSVRecord;import java.io.FileReader;import java.io.Reader;

public class CommonsCSVExample { public static void main(String[] args) throws Exception { try (Reader reader = new FileReader("data.csv"); CSVParser parser = CSVFormat.DEFAULT .withFirstRecordAsHeader() .parse(reader)) {

for (CSVRecord record : parser) { String id = record.get("ID"); String value = record.get("Value"); System.out.println(id + " -> " + value); } } }}


CSV schreiben

import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVPrinter;import java.io.FileWriter;import java.io.Writer;

try (Writer writer = new FileWriter("output.csv"); CSVPrinter printer = CSVFormat.DEFAULT .withHeader("Name", "Age") .print(writer)) {

printer.printRecord("Alice", 30); printer.printRecord("Bob", 25);}

Empfehlungen