CSV , o Comma Separated Value , i file sono comunemente usati come un formato universale per lo scambio di dati semplici , soprattutto tra le applicazioni di foglio di calcolo . Il formato è semplice . Prendere una tabella di dati e inserire il nome di ogni colonna nella prima riga , con ogni nome separato dagli altri da una virgola . Quindi , passare attraverso la tabella completa , ponendo ogni riga su una riga con ogni colonna separati da virgole. Java non ha un costruito nel programma di utilità per la lettura di file CSV , ma questo non dovrebbe impedirvi di utilizzare nella vostra applicazione Java . Il formato semplicistica rende facile creare il proprio Java parser di file CSV . Istruzioni
1
Creare una nuova classe denominata CSVParser.java incollando il seguente in un file di testo vuoto :
import java.io.File ; java.io.FileNotFoundException importazione; importazione java.util.ArrayList ; importazione java.util.Scanner , l'importazione javax.swing.table.DefaultTableModel ; javax.swing.table.TableModel importazione;
class CSVParser pubblico { }
2 < p > Incolla il seguente metodo "parse " in esso tra le parentesi della classe :
pubblico parse TableModel statico ( File f ) throws FileNotFoundException {
intestazioni ArrayList = new ArrayList < , String > (); ArrayList oneDdata = new ArrayList ();
//Ottiene le intestazioni del LineScan = new Scanner table.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 al ArrayListwhile ( lineScan.hasNextLine ( ) ) { s = new Scanner ( lineScan.nextLine ()); s.useDelimiter ( " *") , mentre ( s.hasNext ( ) ( ) { oneDdata.add s.next ( ) );} } String [] [ ] dati = new String [ headers.size ()] [ oneDdata.size ( ) /headers.size ( ) ] ; //spostare i dati in una matrice di vaniglia in modo che possa essere messo in un table.for ( int x = 0; x < headers.size (); x + + ) {for ( int y = 0; . y < dati [ 0 ] lunghezza ; y + + ) { dati [ x ] [ y ] = oneDdata.remove ( 0 ) ; } } //Creazione di un tavolo e di ritorno it.return nuovo DefaultTableModel ( dati , headers.toArray ());
} < br >
3
Incollare il seguente metodo principale appena sotto il metodo parse dal Punto 2 :
public static void main ( String [] args ) throws FileNotFoundException { //Chiama il metodo parse e mettere i risultati in un table.TableModel t = CSVParser.parse ( new File ( " test.csv "));
//Stampa tutte le colonne della tabella , seguito da un nuovo line.For (int x = 0; x < t.getColumnCount (); x + + ) { System.out.print ( t.getColumnName ( x ) + " ");} System.out.println ( ) ;
< p > //Stampa tutti i dati dal table.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 (); } }