【发布时间】:2018-10-09 19:32:53
【问题描述】:
我正在寻找一种将带有数据的 JTable 导出到 .csv 文件 的方法。但是我没有找到一个好的方法来做到这一点。它工作并生成 csv 文件。但有一个问题。当这样的jTable列中有数据时,
|column 1|column 2|
-------------------
|Java, C#|PHP |
结果是,
column 1,column2,
Java,C#,PHP,
所以问题 ID 只有 2 列 和 2 数据列,但对于 CSV 文件,有 3 数据列。将该 CSV 文件导入 Excel 工作表时,这是完全错误的。数据去了不同的地方。
那么在 Java 中是否有另一种方法可以做到这一点,或者有什么方法可以避免这个问题?
提前感谢您的帮助!最好的问候。
我使用以下代码。
public void ExportToCSVfile(JTable table) throws IOException, ClassNotFoundException
{
Writer writer = null;
DefaultTableModel defaultTableModel = (DefaultTableModel) table.getModel();
int Row = defaultTableModel.getRowCount();
int Col = defaultTableModel.getColumnCount();
try {
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file.csv"), "utf-8"));
StringBuffer bufferHeader = new StringBuffer();
for (int j = 0; j < Col; j++) {
bufferHeader.append(defaultTableModel.getColumnName(j));
if (j!=Col) bufferHeader.append(", ");
}
writer.write(bufferHeader.toString() + "\r\n");
for (int i = 0 ; i < Row ; i++){
StringBuffer buffer = new StringBuffer();
for (int j = 0 ; j < Col ; j++){
buffer.append(defaultTableModel.getValueAt(i,j));
if (j!=Col) buffer.append(", ");
}
writer.write(buffer.toString() + "\r\n");
}
} finally {
writer.close();
}
}
【问题讨论】:
-
不要扮演自己的角色,使用适当的CSV library - 要求比在值之间粘贴
,更复杂
标签: java swing csv jtable export-to-csv