Как экспортировать данные JTable в файл CSV - PullRequest
0 голосов
/ 09 октября 2018

Я ищу способ экспорта 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();
            }
        }

1 Ответ

0 голосов
/ 10 октября 2018

Так есть ли другой способ сделать это на Java или любой другой способ избежать этой проблемы?

Я не знаю всех правил для файла, отформатированного в CSV, но я считаю, что для чего-то такого простого, когда ячейка содержит «,», вы можете просто разграничить весь текст ячейки.

Таким образом, выходной файл вашего файла должен быть:

column 1,column2,
"Java,C#",PHP,

Это легко проверить, просто создайте простую электронную таблицу, в которой ячейка содержит запятую, а затем экспортируйте электронную таблицу в файл .csv.и проверьте формат файла в текстовом редакторе.

Я думаю, что вы можете разделить все данные с помощью "...", даже если они не содержат запятую, но вам нужно будет это проверить.

Так что вам нужно изменить код экспорта, чтобы включить разделители.

...