我有以下代码将数据写入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();
收到输出
通缉输出
答案 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();
}
}
}