Я ищу способ экспорта JTable с данными в .csv файл .Но я не нашел хорошего способа сделать это.Он работает и генерирует CSV-файл .Но есть проблема.Когда в столбце jTable есть данные, такие как
|column 1|column 2|
-------------------
|Java, C#|PHP |
В результате получается
column 1,column2,
Java,C#,PHP,
Таким образом, идентификатор проблемы существует только 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();
}
}