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

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: OpenCSV und Apache Commons CSV



CSV (Comma-Separated Values) ist eines der gängigsten Formate zum Speichern und Austauschen von Tabellendaten. Java verfügt über keine integrierte Bibliothek für die komfortable Arbeit mit CSV (nur manuelles Parsing über BufferedReader), daher verwenden Entwickler externe Werkzeuge. In diesem Artikel betrachten wir zwei beliebte Bibliotheken: OpenCSV und Apache Commons CSV. Sie erfahren, wie Sie CSV-Dateien mit Codebeispielen lesen, schreiben und verarbeiten.



1. OpenCSV: Einfaches Parsing und Annotationen



OpenCSV ist eine einfache und effiziente Bibliothek für die Arbeit mit CSV. Sie unterstützt zeilenweises Lesen, Mapping auf Java-Objekte (über Annotationen @CsvBindByName) sowie das Schreiben von Daten.



Einbindung (Maven)

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


CSV in eine Liste von Zeilen lesen

import com.opencsv.CSVReader;import java.io.FileReader;import java.util.List;

public class OpenCsvExample { public static void main(String[] args) throws Exception { try (CSVReader reader = new CSVReader(new FileReader("data.csv"))) { List<String[]> rows = reader.readAll(); for (String[] row : rows) { System.out.println(String.join(" | ", row)); } } }}


Mapping auf ein Java-Objekt

import com.opencsv.bean.CsvBindByName;import com.opencsv.bean.CsvToBean;import com.opencsv.bean.CsvToBeanBuilder;import java.io.FileReader;import java.util.List;

public class User { @CsvBindByName(column = "name") private String name;

@CsvBindByName(column = "email") private String email;

// Getter und Setter}

// Lesentry (FileReader reader = new FileReader("users.csv")) { CsvToBean<User> csvToBean = new CsvToBeanBuilder<User>(reader) .withType(User.class) .withIgnoreLeadingWhiteSpace(true) .build(); List<User> users = csvToBean.parse(); users.forEach(u -> System.out.println(u.getName() + " - " + u.getEmail()));}


CSV schreiben

import com.opencsv.CSVWriter;import java.io.FileWriter;

try (CSVWriter writer = new CSVWriter(new FileWriter("output.csv"))) { String[] header = {"Name", "Age", "City"}; writer.writeNext(header); writer.writeNext(new String[]{"Alice", "30", "Moscow"}); writer.writeNext(new String[]{"Bob", "25", "SPb"});}


2. Apache Commons CSV: Flexibilität und Leistung



Apache Commons CSV ist Teil des Apache Commons-Ökosystems. Es zeichnet sich durch hohe Leistung, Unterstützung verschiedener Formate (CSV, TSV, Excel) und anpassbare Trennzeichen aus.



Einbindung (Maven)

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


CSV mit Kopfzeilen lesen

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;

try (Reader in = new FileReader("data.csv"); CSVParser parser = CSVFormat.DEFAULT .withFirstRecordAsHeader() .parse(in)) { for (CSVRecord record : parser) { String name = record.get("name"); String email = record.get("email"); System.out.println(name + " : " + email); }}


CSV mit benutzerdefiniertem Trennzeichen schreiben

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

Empfehlungen