2017-10-15 194 views
-2

我想導出我的jTable到文本文件。這裏是我的代碼Jtable數據到txt

for (int i = 0; i < table.getRowCount(); i++) { 
      for (int y = 0; y < table.getColumnCount(); y++) { 

       if (table.getValueAt(i, y) != null) { 

         bw.write(table.getValueAt(i, y) + " "); 

       } 

      } 

      bw.newLine(); 
     } 

一切工作正常,所有單元格填充值。但是,當我只填滿一半的細胞時,出口並不完美。最後一個值缺失。 例如:

[value1][value2][value3] 
    [value4][value5][value6] 
    [value7][value8][value9] 

打印所有值的文本文件。 但這:

[value1][value2][value3] 
    [value4][value5][value6] 
    [null][null][null] 

只打印值1,值2,值3,值4和值5。 問題在哪裏?

+2

我已經低估了這個問題,因爲沒有對此代碼執行任何調試的證據。請[編輯]您的問題,向我們展示您的調試未發現的內容,以及關於特定代碼行的具體問題。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)和[如何調試小程序](https://ericlippert.com/2014/03/05 /如何調試的小程序/)。 –

+1

[*無法獲取正在編輯的單元格的當前值*](https://stackoverflow.com/q/20910983/230513)的可能重複。 – trashgod

+0

Trashgod-非常感謝你。有用。您可以將答案寫爲答案,以便我可以爲您解答問題。 :) – jv95

回答

0

嘗試以下操作:

public void writeTXT(JTable table) throws IOException, ClassNotFoundException, SQLException { 
    Writer writer = null; 
    try{ 
    writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("filename.txt"))); 
    StringBuffer bufferHeader = new StringBuffer(); 
    for(int i = 0; i<table.getColumnCount();i++){ 
     bufferHeader.append(table.getColumnName(i)); 
     if(i!=table.getColumnCount()) bufferHeader.append(" "); 
    } 
    writer.write(bufferHeader.toString()+"\r\n"); 

    for(int j = 0; j<table.getRowCount(); j++){ 
     StringBuffer buffer = new StringBuffer(); 
     for (int k = 0; k<table.getColumnCount(); k++){ 
     buffer.append(table.getValueAt(j,k)); 
     if(k!=table.getColumnCount()) buffer.append(" "); 
     } 
     writer.write(buffer.toString()+"\r\n"); 
    } 
    }finally{ 
    writer.close(); 
    } 
} 

不包括第一個for循環,如果您還沒有列名/不需要它們。