2012-10-31 9 views
8

データを.csvファイルにエクスポートする必要がありますが、ファイルをファイルシステムに保存しないでください。代わりにブラウザでファイルを開く必要があります。私は、ファイルを.csvにデータを書き込むために以下のコードを書かれているCSVファイルにエクスポートしてブラウザで開く

は:

FileWriter myWriter = new FileWriter("output.csv"); 
myWriter.append(EmployeeCode); 
myWriter.append(','); 
myWriter.append(Band); 
myWriter.append('\n'); 
response.setHeader("Content-Disposition", "attachment; filename=output.csv"); 
response.setContentType("application/ms-excel"); 
response.setCharacterEncoding("UTF-8"); 

私は、.csvファイルを開くことができていますが、それは空です。私のデータにはデータが取り込まれません。 私は何が間違っているのかを提案してください。

+4

は 'myWriter.flush()を追加しますSystem.out.println(EmployeeCode + "==" + Band); '実際にデータを取得しているかどうかを確認します。 –

+0

Fahim、 はいSysを使用してデータを印刷しています。 – user179516

+0

@ user179516最後にストリームから読み込むようにファイルライターを閉じる必要があります:) – gks

答えて

16

FileWriterは、応答出力ストリームではなく、output.csvファイルにコンテンツを書き込みます。

OutputStream out = response.getOutputStream(); 

応答出力ストリームを取得するには、次のようにします。

そしてoutストリーム内のコンテンツを書くには、のようなもの:印刷画面上の同じデータを書き込み中に ``&; myWriter.close()最後に

response.setContentType("application/ms-excel"); // or you can use text/csv 
response.setHeader("Content-Disposition", "attachment; filename=output.csv"); 
try { 
    // Write the header line 
    OutputStream out = response.getOutputStream(); 
    String header = "EmployeeCode, Band\n"; 
    out.write(header.getBytes()); 
    // Write the content 
    String line=new String(EmployeeCode+","+Band+"\n"); 
    out.write(line.toString().getBytes()); 
    out.flush(); 
} catch (Exception e) { 
    log.error(e); 
} 
+0

私はこれを試しましたが、FileNotFoundエラーが発生しています。 – user179516

+0

ありがとう、トンダン。わかった。 – user179516

+0

@ user179516ようこそ。 – dan

関連する問題