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

我有以下代码写入数据到CSV文件。 但不是写在不同的单元格中的标题,而是写在同一个单元格中。 当我更改为“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(); 

收到输出

图片点击这里

想要输出

图片点击这里

感谢凤凰,但没有帮助。 我发现解决scheme:),这只是使用选项卡分隔符,而不是默认的。

使用:\ t而不是CSVWriter.DEFAULT_SEPARATOR

CSVWriter csvWrite = new CSVWriter(新的OutputStreamWriter(新的FileOutputStream(文件),“UTF-16”), '\ t' ,CSVWriter.NO_QUOTE_CHARACTER,CSVWriter.DEFAULT_ESCAPE_CHARACTER,CSVWriter.DEFAULT_LINE_END);

这是我为一个项目编写的代码..循环外的值(“WSDL名称”和“标签”是列标题,列表将包含要插入的值)。 它会产生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(); } } }