繁体   English   中英

如何从 JTable 保存到 CSV 或 Excel

[英]How to save from JTable to CSV or Excel

有没有办法将 JTable 数据保存到 Excel 中? 我想保存我从程序输入的数据,从 JTable 然后保存到 CSV 文件。

我想要它,以便有一个按钮可以将输入的数据从 jform 保存到 jtable 中,然后保存到 CSV 文件中。

这可能会帮助您:-

写入 csv 文件的方法。

public static void exportToCSV(JTable table,
        String path) {

    try {

        TableModel model = table.getModel();
        FileWriter csv = new FileWriter(new File(path));

        for (int i = 0; i < model.getColumnCount(); i++) {
            csv.write(model.getColumnName(i) + ",");
        }

        csv.write("\n");

        for (int i = 0; i < model.getRowCount(); i++) {
            for (int j = 0; j < model.getColumnCount(); j++) {
                csv.write(model.getValueAt(i, j).toString() + ",");
            }
            csv.write("\n");
        }

        csv.close();
    } catch (IOException e) {
       System.out.println("Error "+e);
    }
}

要阅读并将其显示给 JTable,您可以使用OpenCSV

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

你可以试试这个代码:

public static boolean convertToCSV(JTable table,
                                   String path) {
try {
    TableModel model = table.getModel();
    FileWriter csv = new FileWriter(new File(path));

    for (int i = 0; i < model.getColumnCount(); i++) {
        csv.write(model.getColumnName(i) + ",");
    }
    csv.write("\n");

    for (int i = 0; i < model.getRowCount(); i++) {
        for (int j = 0; j < model.getColumnCount(); j++) {
            csv.write(model.getValueAt(i, j).toString() + ",");
        }
        csv.write("\n");
    }
    csv.close();
    return true;
} catch (IOException e) {
    e.printStackTrace();
}
return false;
}

据我所知,没有 JTable 的“神奇功能”可以做到这一点。 JTable 是一个 UI 组件,您要求的是数据功能,而不是用户界面功能。 并且它与 eclipse 没有太大关系,它只是用于编写代码的 IDE。

我认为您可能正在寻找的是 JTable 所基于的模型 我想到的第一个解决方案是更改该模型代码,使其具有一种以您想要的格式写出数据的方法; 然后 UI 上的(另一个)按钮将在模型上调用此方法以在用户选择时写出数据。 可能还有其他方法可以完成此操作,但这似乎是最直接和最简单的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM