使用CSVWriter将列表写入CSV文件时出现问题

时间:2016-05-01 00:33:23

标签: java

我有以下方法使用CSVWriter将列表写入CSV文件。不幸的是,当我在Excel中打开它时,它不会用逗号分隔它们,这会使它们变得混乱。我该如何修改它?

   private void generateCSV(List<String> dataset) throws IOException {
        CSVWriter writer = null;
        JFileChooser chooser = new JFileChooser();
        chooser.setAcceptAllFileFilterUsed(true);
        if (chooser.showSaveDialog(chooser) == JFileChooser.APPROVE_OPTION) {
            File f = chooser.getSelectedFile();
            String file_name = f.toString();
            if (!(file_name.endsWith(".csv"))) {
                file_name += ".csv";
            }
            writer = new CSVWriter(new FileWriter(f));
            for(int i=0; i< dataset.size(); i++){
                String[] str = new String[] {dataset.get(i)};
                writer.writeNext(str);
            }

        } else {
            return;
        }
        writer.close();
    }

1 个答案:

答案 0 :(得分:1)

您为for循环中的String[]上的每个元素创建dataset,然后使用writeNext()为每一行写一个元素。所以它们不是逗号分隔的,因为它每行只有一个元素,使用每行末尾的行分隔符。

我认为这就是你想要的。我是对的吗?

private void generateCSV(List<String> dataset) throws IOException {
    CSVWriter writer = null;
    JFileChooser chooser = new JFileChooser();
    chooser.setAcceptAllFileFilterUsed(true);
    if (chooser.showSaveDialog(chooser) == JFileChooser.APPROVE_OPTION) {
        File f = chooser.getSelectedFile();
        String file_name = f.toString();
        if (!(file_name.endsWith(".csv"))) {
            file_name += ".csv";
        }
        writer = new CSVWriter(new FileWriter(f));
        String[] str = new String[dataset.size()];
        for (int i = 0; i < dataset.size(); i++) {
            str[i] = dataset.get(i);
        }
        writer.writeNext(str);

    } else {
        return;
    }
    writer.close();
}