繁体   English   中英

如何将JTable数据导出到CSV文件

[英]How to Export JTable data into a CSV File

我正在寻找一种方法,将带有数据的JTable导出到.csv文件 但是我没有找到一个好的方法。 它可以工作并生成csv文件 但有一个问题。 当jTable列中有这样的数据时,

|column 1|column 2|
-------------------
|Java, C#|PHP     |

结果是

column 1,column2,
Java,C#,PHP,

因此,问题ID只有2列2个数据列,但是对于CSV文件,则有3个数据列 当将该CSV文件导入Excel工作表时,这是完全错误的。 数据到达了不同的位置。

那么,是否有另一种方法可以用Java或避免这种问题的任何方式呢?

我在这里先向您的帮助表示感谢! 最好的祝福。

我使用以下代码。

public void ExportToCSVfile(JTable table) throws IOException, ClassNotFoundException
    {
            Writer writer = null;
            DefaultTableModel defaultTableModel = (DefaultTableModel) table.getModel();
            int Row = defaultTableModel.getRowCount();
            int Col = defaultTableModel.getColumnCount();
            try {
                writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file.csv"), "utf-8"));

                StringBuffer bufferHeader = new StringBuffer();
                for (int j = 0; j < Col; j++) {
                    bufferHeader.append(defaultTableModel.getColumnName(j));
                    if (j!=Col) bufferHeader.append(", ");
                }
                writer.write(bufferHeader.toString() + "\r\n");

                for (int i = 0 ; i < Row ; i++){
                     StringBuffer buffer = new StringBuffer();
                    for (int j = 0 ; j < Col ; j++){
                        buffer.append(defaultTableModel.getValueAt(i,j));
                        if (j!=Col) buffer.append(", ");
                    }
                    writer.write(buffer.toString() + "\r\n");
                }
            } finally {
                  writer.close();
            }
        }

那么,是否有另一种方法可以用Java或避免这种问题的任何方式呢?

我不知道CSV格式文件的所有规则,但我相信对于其中单元格包含“,”的这种简单操作,您可以定界单元格的整个文本。

因此,文件的输出应为:

column 1,column2,
"Java,C#",PHP,

这很容易验证,您只是创建了一个简单的电子表格,其中的单元格包含一个逗号,然后将电子表格导出到.csv文件并在文本编辑器中检查了文件格式。

我认为您可以用“ ...”分隔所有数据,即使其中不包含逗号,也需要进行验证。

因此,您需要修改导出代码以包含定界符。

暂无
暂无

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

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