csv 只在一个单元格而不是一行中保存数据

csv save data only in one cell instead of a row

我有以下代码将数据写入 CSV 文件。 但不是将 headers 每个都写在不同的单元格中,而是将它们全部写在同一个单元格中。 当我更改为 "UTF-8" 时它工作正常,但在 Office Excel 中打开时写 "Gibberish" 而不是正确的字母。

        CSVWriter csvWrite = new CSVWriter(new OutputStreamWriter(new FileOutputStream(file),
                "UTF-16"), CSVWriter.DEFAULT_SEPARATOR ,CSVWriter.NO_QUOTE_CHARACTER,
                CSVWriter.DEFAULT_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END);

        //Add Columns headers to the excel file
        String columnHeaders[] = {"אאא","בבב","גגג"};
        csvWrite.writeNext(columnHeaders);

        //Collect Data
        ArrayList<String[]> listData = collectDataFromDBToList();
        //Write/Add all line from list to the csv file
        csvWrite.writeAll(listData);

        csvWrite.close();

收到输出

想要输出

这是我为项目编写的代码..for 循环外的值("WSDL Name" 和 "Tags" 是列 header,列表将包含要插入的值).它将生成 test.csv

import java.io.FileWriter;
import java.io.IOException;

public class genCSV
{
   public static void main(String [] args)
   {
       generateCsvFile("c:\test.csv"); 
   }

   private static void generateCsvFile(String sFileName)
   {
    try
    {
        FileWriter writer = new FileWriter(sFileName);

    writer.append("WSDLName");
    writer.append("Tags");
    writer.append('\n');

   for(int i=0;i<list.size();i++){
       writer.append(list.getKey);
        writer.append(list.getValueForKey);
        writer.append('\n');
   }

    //generate whatever data you want

    writer.flush();
    writer.close();
}
catch(IOException e)
{
     e.printStackTrace();
} 
}
}

感谢 phoenix,但没有帮助。 我找到了解决方案 :),它只是使用制表符分隔符而不是默认的。

使用:'\t'代替CSVWriter.DEFAULT_SEPARATOR

CSVWriter csvWrite = new CSVWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-16"),'\t',CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.DEFAULT_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END);