Loading ...

Creare file CSV in Java

Creare file CSV in Java

Il formato CSV è ancora molto usato, e quindi può essere importante prenderlo in considerazione.

Per creare e leggere file CSV in Java possiamo usare la libreria Apache Commons CSV!

Come vedremo è molto facile da usare.

Oggi vediamo la parte di creazione, prendendo i dati da una List.

Se usate Maven:

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

Questo la classe POJO con cui riempiamo la lista:

import java.io.Serializable;

public class Nota implements Serializable {

    private int id;
    private String gruppo;
    private String titolo;
    private String testo;
    private String aggiunta;
    private String modifica;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getGruppo() {
        return gruppo;
    }

    public void setGruppo(String gruppo) {
        this.gruppo = gruppo;
    }

    public String getTitolo() {
        return titolo;
    }

    public void setTitolo(String titolo) {
        this.titolo = titolo;
    }

    public String getTesto() {
        return testo;
    }

    public void setTesto(String testo) {
        this.testo = testo;
    }

    public String getAggiunta() {
        return aggiunta;
    }

    public void setAggiunta(String aggiunta) {
        this.aggiunta = aggiunta;
    }

    public String getModifica() {
        return modifica;
    }

    public void setModifica(String modifica) {
        this.modifica = modifica;
    }
}

Questo un esempio di codice per la creazione del CSV:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.io.FilenameUtils;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class CsvDb {

    public void create(String inputFile, String[] header, List<Nota> list) 
			throws IOException {
        try (BufferedWriter bw = Files.newBufferedWriter(Paths.get(inputFile))) {
            try (CSVPrinter csvPrinter = new CSVPrinter(bw, 
							CSVFormat.DEFAULT.withHeader(header))) {
                for (Nota n : list) {
                    csvPrinter.printRecord(
						n.getTitolo(), n.getGruppo(), n.getTesto(), 
						n.getAggiunta(), n.getModifica());
                }
                csvPrinter.flush();
            }
        }
    }
}

Come vedete passiamo tre parametri:

  • il path di salvataggio del file
  • un array con cui riempiamo l'header del CSV
  • la lista

L'header non è obbligatorio, dipende da voi se usarlo o meno; provate senza per capire le differenze.

Non ho messo codice relativo al riempimento della lista, ma confido che sappiate come fare!!

Enjoy!