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