10

我遇到了一个问题,我需要将数据导出到 .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

1 回答 1

20

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);
}
于 2012-10-31T07:14:32.857 回答