Display CSV files in a JTable with OpenCSV

Viewed 47

I want to import a CSV file into a JTable using the OpenCSV library. All the examples found on the net are related to command line display, the only code found here does not work because JTable needs Object[][] and a String[]:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv")); 
List myEntries = reader.readAll();
JTable table = new JTable(myEntries.toArray());

Source: import csv to JTable

Is there any way to display these files in a table with this library?

1 Answers

I solved it with this code

import com.opencsv.*;

private Object[] dataColumn;
private DefaultTableModel tableModel = new DefaultTableModel();

try{
    tableModel = (DefaultTableModel) JTable.getModel();

            CSVReader reader = new CSVReaderBuilder(new FileReader(CSV_file))
                    .withCSVParser(new CSVParserBuilder()
                            .withQuoteChar('\'')
                            .withSeparator('\t')
                            .build())
                    .build();
            List myEntries = reader.readAll();
            dataColumn = (String[]) myEntries.get(0);
            tableModel = new DefaultTableModel(dataColumn, myEntries.size()-1); 
            int rowcount = tableModel.getRowCount();
            for (int x = 0; x<rowcount+1; x++){
                int columnnumber = 0;
                // if x = 0 this is the first row...skip it... data used for columnnames
                if (x>0){
                    for (String thiscellvalue : (String[])myEntries.get(x)){
                        tableModel.setValueAt(thiscellvalue, x-1, columnnumber);
                        columnnumber++;
                    }
                }
            }
            reader.close();
} catch (Exception ex) {
    ex.printStackTrace();
}
JTable.setModel(tableModel);
Related