繁体   English   中英

Jtable数据转txt

[英]Jtable data to txt

我正在尝试将我的 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。 问题出在哪儿?

请尝试以下操作:

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 循环。

暂无
暂无

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

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