2015-04-22 24 views
1

我寫了一個創建和寫入CSV文件的函數。我的函數爲:如何在寫入java中的CSV文件時放置逗號?

private static void writeIntoCSV(GaData results, String filename){ 

    try{ 
     File f = new File("D:\\" + filename); 
     BufferedWriter output = new BufferedWriter(new FileWriter(f)); 

     int i = 0; 
     for (ColumnHeaders header : results.getColumnHeaders()) { 
      i++; 
      if(i < header.size()){ 
       output.write(header.getName() + ","); 
       i++; 
      } 
      else{ 
       output.write(header.getName()); 
      } 
     } 
     output.write("\n"); 
     int j = 0; 
     for (List<String> row : results.getRows()) { 
      j++; 
      for (String column : row) { 
       if(j < row.size()){ 
        output.write(column + ","); 
        j++; 
       } 
       else{ 
        output.write(column); 
       } 
      } 
      output.write("\n"); 
      j = 0; 
     } 

     output.close(); 
    } 
    catch(Exception e){ 
     System.out.println(e); 
    } 
} 

這裏的時候,我有兩個頭的正確像分隔條件是,B,但是當我有三個頭的分離爲:A,BC

我試圖改變的值i和地點喜歡:

int i = 1; 
for (ColumnHeaders header : results.getColumnHeaders()) { 
    if(i < header.size()){ 
     output.write(header.getName() + ","); 
     i++; 
    } 
    else{ 
     output.write(header.getName()); 
    } 
} 
output.write("\n"); 

在這種情況下,其表示標頭像A,b,對於兩個標頭以及a,b,c表示三個頭。我該如何解決這個問題來正確地放置逗號。

對於數據行其正常工作。

+2

爲什麼不使用庫來編寫CSV?這也將照顧數據值內部的逗號等逗號。 http://stackoverflow.com/questions/101100/csv-api-for-java?rq=1 – Thilo

+0

您的ColumnHeader#size()方法是否實際返回您認爲它的值?它可能偏離+/- 1。 –

+0

錯誤代碼。什麼是'header.size()'返回?它是否返回標題的總數或標題名稱的大小? – Aakash

回答

1

調用header.size()的返回值是什麼?標題列數是否? 作爲我的觀點,我認爲你應該比較results.getColumnHeaders()而不是header.size()的大小

+0

謝謝:)它解決了我的問題:) – Maddy

+0

我將header.size()更改爲results.getColumnHeaders() 。尺寸()​​。它的工作現在。 – Maddy

0

設置在第二碼的我比0不是1,它應該工作

+0

沒有它的不工作...在這種情況下,它給出的輸出像a,b和a,b,c, – Maddy

1

您可以使用番石榴Joiner加入對「」這樣的事情:

Joiner joiner = Joiner.on(",").skipNulls(); 
return joiner.join("Harry", null, "Ron", "Hermione"); 

全機制的文檔Guava docs

1

刪除I的第一個增量。簡單的方法來看看是這樣的。有三個標題。我設置爲0.你開始循環,我變成1.我小於3,所以第一個塊被執行。你再次增加,我現在是2.循環環繞。我再次遞增到3.但你只是在第二個價值。

基本上你會增加我很多次!

相關問題