---
title: 'Insel: Apache Commons CSV'
url: 'https://www.tutego.de/blog/javainsel/2018/07/insel-apache-commons-csv'
markdown: 'https://www.tutego.de/blog/javainsel/2018/07/insel-apache-commons-csv.md'
date: '2018-07-15'
description: 'Eine freie Java-Bibliothek zum Lesen und Schreiben von CSV-Dokumenten ist Apache Commons CSV (https://commons.apache.org/proper/commons-csv/). Sie verwaltet unterschiedliche CSV-Formate wie Microsoft Excel, RFC 4180. Auf der Webseite gibt es einen Download-Link für das Java-Archiv, doch am einfachs…'
taxonomy:
  category:
    - Insel
---

# Insel: Apache Commons CSV

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Insel: Apache Commons CSV

15.07.2018 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Eine freie Java-Bibliothek zum Lesen und Schreiben von CSV-Dokumenten ist Apache Commons CSV (<https://commons.apache.org/proper/commons-csv/>). Sie verwaltet unterschiedliche CSV-Formate wie Microsoft Excel, RFC 4180.

Auf der Webseite gibt es einen Download-Link für das Java-Archiv, doch am einfachsten ist die Einbindung über die Maven-POM-Datei – wir fügen folgende Abhängigkeit hinzu:

```
<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-csv</artifactId>

<version>1.5</version>

</dependency>
```

Über die Abhängigkeit bekommen wir neue Typen im Paket `org.apache.commons.csv`. Mit dem CSVPrinter lassen sich CSV-Dokumente korrekt erzeugen, und er behandelt auch Fluchtsymbole korrekt. Erzeugen wir ein CSV-Dokument im Speicher:

```java
StringBuilder appendable = new StringBuilder();

CSVFormat csvFormat = CSVFormat.EXCEL.withHeader( "DisplayName", "ISO3Language" );

try ( CSVPrinter csvPrinter = new CSVPrinter( appendable, csvFormat ) ) {

for ( Locale l : Arrays.copyOf( Locale.getAvailableLocales(), 5 ) )

csvPrinter.printRecord( l.getDisplayName(), l.getISO3Language() );

}
```

Starten wir das Programm erscheint auf der Konsole:

DisplayName,ISO3Language

„“,

Norwegisch Nynorsk,nno

Arabisch (Jordanien),ara

Bulgarisch,bul

Kabuverdianu,kea

Lesen wir das Dokument wieder ein und greifen dazu auf die Klasse CSVParser zurück. Es gibt zwei Ansätze:

1. Da CSVParser ein `Iterable`<CSVRecord> ist, können wir direkt die Zeilen mit dem erweiterten for Das bietet sich für größere Datenmengen an.
2. Ist die Anzahl der Daten überschaubar, liefert `getRecords()` eine gefüllte util.`List`<CSVRecord> mit alle Zeilen. Das kann praktisch sein, denn eine `List` hat eine `stream()`-Methode, sodass die Zeilen praktisch als `Stream`<CSVRecord> weiterverarbeitet werden können.

Zum Programm:

```java
try ( StringReader reader = new StringReader( appendable.toString() );

CSVParser csvParser = new CSVParser( reader,

CSVFormat.EXCEL.withFirstRecordAsHeader() ) ) {

for ( CSVRecord csvRecord : csvParser )

System.out.printf( "Record=%d – %s, %s%n",
```

`csvRecord.getRecordNumber()`,

```java
csvRecord.get( 0 ), csvRecord.get( 1 ) );

}
```

Die Ausgabe ist:

Record=1 – ,

Record=2 – Norwegisch Nynorsk, nno

Record=3 – Arabisch (Jordanien), ara

Record=4 – Bulgarisch, bul

Record=5 – Kabuverdianu, kea

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/)

## 1 Kommentare

**Martin Schröder** · [16.07.2018 00:04](#comment-657780)

IMHO sehr viel schöner ist jackson-dataformat-csv, vor allem mit Mixins. Jackson will man sowieso.

Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Spring Tool Suite 3.9.5 erschienen](https://www.tutego.de/blog/javainsel/2018/07/spring-tool-suite-3-9-5-erschienen.md)
- Next: [JSON-Serialisierung mit JSR 353/374 und JSR 367](https://www.tutego.de/blog/javainsel/2018/07/json-serialisierung-mit-jsr-353-374-und-jsr-367.md)
