2016-05-01 14 views
2

CSVWriterを使用してCSVファイルにリストを書き込むには、次の方法があります。残念ながら、コンマで区切られていないので、Excelで開くと面倒です。どうすれば修正できますか?CSVWriterを使用してCSVファイルにリストを書き込む問題

private void generateCSV(List<String> dataset) throws IOException { 
     CSVWriter writer = null; 
     JFileChooser chooser = new JFileChooser(); 
     chooser.setAcceptAllFileFilterUsed(true); 
     if (chooser.showSaveDialog(chooser) == JFileChooser.APPROVE_OPTION) { 
      File f = chooser.getSelectedFile(); 
      String file_name = f.toString(); 
      if (!(file_name.endsWith(".csv"))) { 
       file_name += ".csv"; 
      } 
      writer = new CSVWriter(new FileWriter(f)); 
      for(int i=0; i< dataset.size(); i++){ 
       String[] str = new String[] {dataset.get(i)}; 
       writer.writeNext(str); 
      } 

     } else { 
      return; 
     } 
     writer.close(); 
    } 

答えて

1

あなたのforループであなたのdatasetに各要素のString[]を作成し、writeNext()で各1行につき1つの要素を書いています。したがって、各行の最後に行区切り記号を使用すると、1行に1つの要素しかないので、カンマで区切られません。

私はこれがあなたの望むものだと思います。私は正しい?

private void generateCSV(List<String> dataset) throws IOException { 
    CSVWriter writer = null; 
    JFileChooser chooser = new JFileChooser(); 
    chooser.setAcceptAllFileFilterUsed(true); 
    if (chooser.showSaveDialog(chooser) == JFileChooser.APPROVE_OPTION) { 
     File f = chooser.getSelectedFile(); 
     String file_name = f.toString(); 
     if (!(file_name.endsWith(".csv"))) { 
      file_name += ".csv"; 
     } 
     writer = new CSVWriter(new FileWriter(f)); 
     String[] str = new String[dataset.size()]; 
     for (int i = 0; i < dataset.size(); i++) { 
      str[i] = dataset.get(i); 
     } 
     writer.writeNext(str); 

    } else { 
     return; 
    } 
    writer.close(); 
} 
+1

まさに..あなたはそんなに...あなたの説明 – Jacki

+0

に感謝私たちは、私はExcelなど、それを開いてありがとう彼らは34列と321行にすることになっているので、はい、それは実際に配布されていません。理由は分かりますか?また、それは ""で囲まれていますが、それを削除する方法はありますか? – Jacki

+0

.csvファイルに 'sep =、'を1行目として置き、Excelで開きます。 –

関連する問題