2016-09-16 70 views
0

我有以下代碼,它將數據寫入CSV文件。 但是不是每個都在不同的單元格中編寫頭文件,而是將它們寫入同一個單元格中。 當我更改爲「UTF-8」時,它工作正常,但在Office Excel中打開時寫入「Gibberish」而不是正確的字母。csv僅在一個單元格中保存數據而不是一行

 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

回答

1

感謝鳳凰,但它沒有幫助。 我找到了解決方案:),它只是使用標籤分隔符而不是默認的分隔符。

使用: '\ T',而不是CSVWriter.DEFAULT_SEPARATOR

CSVWriter csvWrite =新CSVWriter(新OutputStreamWriter(新FileOutputStream中(文件), 「UTF-16」),'\ T',CSVWriter .NO_QUOTE_CHARACTER, CSVWriter.DEFAULT_ESCAPE_CHARACTER,CSVWriter.DEFAULT_LINE_END);

0

下面是該代碼,我寫了一個外值project..the for循環(「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(); 
} 
} 
} 
+0

你的答案是在Java我thougt這是一個Excel問題:Ø – iiro

+0

問題的發佈代碼片段也是在Java中。我們使用excel打開生成的csv文件。 – phoenix

相關問題