2012-10-31 63 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(); myWriter.close();'&同时写入打印屏幕上的相同数据' System.out.println(EmployeeCode +“==”+ Band);'看看你是否正在获取数据。 –

+0

Fahim, 是的,我正在使用Sys out打印数据。 – user179516

+0

@ user179516我们应该关闭文件编写器,以便从末尾的流中读取:) – gks

回答

16

FileWriter将内容写入output.csv文件中,而不是在响应输出流中。你应该这样做:

OutputStream out = response.getOutputStream(); 

得到响应输出流。

,写out流中的内容,是这样的:

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