Come leggere il file CSV in Java

January 18

Come leggere il file CSV in Java


CSV o Comma Separated Value, i file vengono comunemente usati come un formato universale per lo scambio di dati semplici, in particolare tra le applicazioni di foglio di calcolo. Il formato è semplice. Prendere una tabella di dati e inserire il nome di ogni colonna della prima riga, con ciascun nome separato dagli altri da una virgola. Poi, passare attraverso il tavolo pieno, ponendo ogni riga su una linea con ogni colonna separati da virgole. Java non ha costruito in programma di utilità per la lettura di file CSV, ma che non si dovrebbe smettere di servirsi di esse nella vostra applicazione Java. Il formato semplicistica rende facile creare il proprio file di parser Java CSV.

istruzione

1 Creare una nuova classe denominata CSVParser.java incollando il seguente in un file di testo vuoto:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class CSVParser {

}

2 Incollare il metodo "parse" seguito in esso tra le parentesi nella classe:

public static TableModel parse(File f) throws FileNotFoundException {

ArrayList & lt; String> intestazioni = new ArrayList & lt; String> ();
ArrayList & lt; String> oneDdata = new ArrayList & lt; String> ();

// Ottenere le intestazioni della tabella.

Scanner lineScan = new Scanner(f);
Scanner s = new Scanner(lineScan.nextLine());
s.useDelimiter(",");
while (s.hasNext()) {
headers.add(s.next());
}

// Passare attraverso ogni riga della tabella e aggiungere ogni cella all'ArrayList

while (lineScan.hasNextLine()) {
s = new Scanner(lineScan.nextLine());
s.useDelimiter(", *");
while (s.hasNext()) {
oneDdata.add(s.next());
}
}
String[][] data = new String[headers.size()][oneDdata.size()/headers.size()];

// Spostare i dati in una matrice di vaniglia in modo che possa essere messo in una tabella.

for (int x = 0; x < headers.size(); x++) {
for (int y = 0; y < data[0].length; y++) {
data[x][y] = oneDdata.remove(0);
}
}

// Creare una tabella e restituirlo.

return new DefaultTableModel(data, headers.toArray());

}

3 Incollare il seguente metodo principale appena sotto il metodo parse da Fase 2:

public static void main(String[] args) throws FileNotFoundException {
// Call the parse method and put the results in a table.
TableModel t = CSVParser.parse(new File("test.csv"));

// Stampa tutte le colonne della tabella, seguito da una nuova linea.

for (int x = 0; x < t.getColumnCount(); x++) {
System.out.print(t.getColumnName(x) + " ");
}
System.out.println();

// Stampare tutti i dati dalla tabella.

for (int x = 0; x < t.getRowCount(); x++) {
for (int y = 0; y < t.getColumnCount(); y++) {
System.out.print(t.getValueAt(x, y) + " ");
}
System.out.println();
}

}