2013-05-08 151 views
0

就像標題所暗示的那樣,我正在尋找一種將帶有數據的jtable導出到.csv file的方法。我不尋找其他選項,然後CSV,因爲CSV是我的程序的要求。如何將JTable導出爲.csv文件?

我一直在看某些東西,比如bindyapache.camel把我找不到足夠的信息來理解如何使用它。

建議什麼?如果有人有一個體面的例子,使用bindy我也不介意。

友好的問候,

Skillcoil

回答

0

怎麼樣一個小的循環? TableModel提供所有需要的數據,例如行數,列數和數據。

+0

我被指出使用阿比的或utils的更多。例如,bindy使用註釋來指向路由等,但似乎無法弄清楚它是如何工作的,所以我試圖找到替代方案或更好的解決方案,然後我正在研究此刻。 – Skillcoil 2013-05-08 09:35:44

+0

其實我不知道apis,但我有一個java的想法。這個for-loop我說的是超過10行代碼......不知道,如果你真的必須使用一個完整的api來完成這樣一個小任務嗎? – desperateCoder 2013-05-08 10:03:23

1

您可以使用apache poi從JTable生成Excel文件,然後使用此代碼 從這裏Converting XLS to CSV files Using Java將XLS文件導出爲CSV文件。

我居然用這種方式來生成CSV文件

+0

感謝您的建議。不幸的是,我想要導出的表格需要選擇導出爲CSV,XLS或TXT文件。所以我需要找到所有3的出口方式(xls我已經安裝了)。如果轉換xls get的方法被接受,我會使用它。 – Skillcoil 2013-05-08 11:28:48

+0

好運我的朋友 – 2013-05-08 13:34:15

0

這是類似的東西:

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(); 
     } 
    }