【问题标题】:How to export a JTable to a .csv file?如何将 JTable 导出到 .csv 文件?
【发布时间】:2013-05-08 09:19:48
【问题描述】:

就像标题所暗示的那样,我正在寻找一种将带有数据的 jtable 导出到 .csv file 的方法。我不是在寻找 CSV 以外的其他选项,因为 CSV 是我的程序的要求。

我一直在研究某些东西,比如apache.camel 中的bindy,我找不到足够的信息来了解如何使用它。

推荐什么?如果有人有一个很好的例子来说明bindy 的用法,我也不介意。

友好的问候,

技能线圈

【问题讨论】:

    标签: java swing jtable apache-camel export-to-csv


    【解决方案1】:

    是这样的:

        public void writeCSVfile(JTable table) throws IOException, ClassNotFoundException, SQLException{
            Writer writer = null;
            DefaultTableModel dtm = (DefaultTableModel) table.getModel();
            int nRow = dtm.getRowCount();
            int nCol = dtm.getColumnCount();
            try {
                writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file.txt"), "utf-8"));
    
                //write the header information
                StringBuffer bufferHeader = new StringBuffer();
                for (int j = 0; j < nCol; j++) {
                    bufferHeader.append(dtm.getColumnName(j));
                    if (j!=nCol) bufferHeader.append(", ");
                }
                writer.write(bufferHeader.toString() + "\r\n");
    
               //write row information
                for (int i = 0 ; i < nRow ; i++){
                     StringBuffer buffer = new StringBuffer();
                    for (int j = 0 ; j < nCol ; j++){
                        buffer.append(dtm.getValueAt(i,j));
                        if (j!=nCol) buffer.append(", ");
                    }
                    writer.write(buffer.toString() + "\r\n");
                }
            } finally {
                  writer.close();
            }
        }
    

    【讨论】:

      【解决方案2】:

      您可以使用apache poi 从 JTable 生成 Excel 文件,然后使用此代码 从这里Converting XLS to CSV files Using Java 将 XLS 文件导出为 CSV 文件。

      我其实是用这种方式生成CSV文件的

      【讨论】:

      • 感谢您的建议。不幸的是,我要导出的表需要选择导出为 CSV、XLS 或 TXT 文件。所以我需要找到所有 3 的导出方式(我已经设置好了 xls)。如果转换xls get的方法被接受,我会用这个。
      【解决方案3】:

      一个小的for循环怎么样? TableModel 提供所有必需的数据,例如行数、列数和数据。

      【讨论】:

      • 有人指出我更多地使用 Api 或 utils。例如,bindy 使用注释来指向路线等,但似乎无法弄清楚它是如何工作的,所以我正在尝试寻找替代方案甚至更好的解决方案,然后我正在研究。
      • 其实我对api一无所知,但我对java有所了解。我说的这个 for 循环会超过 10 行代码......不知道,如果你真的必须使用整个 api 来完成这样一个小任务?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 2012-08-27
      • 2014-01-09
      相关资源
      最近更新 更多