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

时间:2016-09-16 09:29:53

标签: excel csv export-to-excel export-to-csv

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

        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();

收到输出

pic press here

通缉输出

pic press here

2 个答案:

答案 0 :(得分:1)

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

使用:&#39; \ t&#39;而不是CSVWriter.DEFAULT_SEPARATOR

CSVWriter csvWrite = new CSVWriter(new OutputStreamWriter(new FileOutputStream(file),                     &#34; UTF-16&#34;),&#39; \ t&#39; ,CSVWriter.NO_QUOTE_CHARACTER,                     CSVWriter.DEFAULT_ESCAPE_CHARACTER,CSVWriter.DEFAULT_LINE_END);

答案 1 :(得分:0)

这是我为项目编写的代码..循环外的值(&#34; WSDL名称&#34;和&#34;标记&#34;是列标题和列表将包含值插入)。它将生成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();
} 
}
}