将csv导入JTable

Luc*_*ucy 2 java swing jtable

我有一个csv文件,我想将它导入JTable.

是否有一个简单的示例显示如何将csv文件导入JTable?

DaT*_*oop 8

使用OpenCSV:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv")); 
List myEntries = reader.readAll();
JTable table = new JTable(myEntries.toArray());
Run Code Online (Sandbox Code Playgroud)


pca*_*ins 5

最后一个答案对我不起作用,因为JTable想要一个Object [] []和一个String [](具有列名)...我必须做这样的事情:

import com.opencsv.CSVReader;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTable; 
import java.io.FileReader;

Object[] columnnames;
transient CSVReader CSVFileReader;
CSVFileReader = new CSVReader(new FileReader(csvFile));
List myEntries = CSVFileReader.readAll();
columnnames = (String[]) myEntries.get(0);
DefaultTableModel tableModel = new DefaultTableModel(columnnames, 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++;
        }
    }
}

JTable MyJTable = new JTable(tableModel);
Run Code Online (Sandbox Code Playgroud)

另外,如果您想在数据中保留反斜杠字符,请将其用作构造函数:

CSVFileReader = new CSVReader(new FileReader(csvFile), ',', '"', '\0');
Run Code Online (Sandbox Code Playgroud)

这会将“ \ 0”设置为转义字符。我认为将转义字符设置为空。看到这个线程:java中的opencsv会忽略字段值中的反斜杠