Leggere file CSV in Java

Mattepuffo's logo
Leggere file CSV in Java

Leggere file CSV in Java

In questo articolo abbiamo visto come creare un file CSV in Java e Apache Commons CSV.

Oggi agigungiamo il metodo per leggerli!

Partiamo da Maven:

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

E dalla nostra classe POJO:

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 invece il metodo per leggere il file:

public class CsvDb {

    public List<Nota> read(String inputFile) throws IOException {
        List<Nota> list = new ArrayList<>();
        try (Reader reader = Files.newBufferedReader(Paths.get(inputFile))) {
            try (CSVParser csvParser = new CSVParser(reader,
                    CSVFormat.DEFAULT.
                            withFirstRecordAsHeader().
                            withIgnoreHeaderCase().
                            withTrim())) {
                for (CSVRecord csvRecord : csvParser) {
                    Nota n = new Nota();
                    n.setTitolo(csvRecord.get("titolo"));
                    n.setGruppo(csvRecord.get("gruppo"));
                    n.setTesto(csvRecord.get("testo"));
                    n.setAggiunta(csvRecord.get("aggiunta"));
                    n.setModifica(csvRecord.get("modifica"));
                    list.add(n);
                }
            }
        }
        return list;
    }
}

Come vedete restituisce una lista della nostra classe.

Noi abbiamo settato il primo record come header; ma avete anche l'opzione manuale, o senza header.

Sotto prendiamo i campi passando il nome; ma potete passare anche l'indice.

A voi un pò di sperimentazione!

Enjoy!


Condividi

2 Commenti

  • java_lover

    ma forse con canvas intendi javascript, non java?!

    23/03/2020
  • daniele

    Salve la contatto perchè il file è motlo utile.Grazie mille. Vole chiederle un aiuto.Io devo partide da un file csv ed vorei esprimerlo in una tabella per poi con canvas fare un aereogramma e un compito per le mie lezioni.Non so veramente come muovermi. Mi dia una mano se ha tempo perfavore.ùOvviamente non è obbligata ma vedo la sua grossa esperienza.

    22/03/2020

Commentami!