Jtable数据到txt

时间:2017-10-15 20:21:35

标签: java swing file netbeans jtable

我正在尝试将我的jTable导出到文本文件。这是我的代码

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]

仅打印value1,value2,value3,value4和value5。 问题出在哪儿?

1 个答案:

答案 0 :(得分: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循环。