Java 导出到CSV文件并在浏览器中打开
我遇到了一个问题,我需要将数据导出到.csv文件,但不将文件存储在文件系统中,而是只需在浏览器中打开文件 我编写了以下代码将数据写入.csv文件:Java 导出到CSV文件并在浏览器中打开,java,csv,export-to-csv,Java,Csv,Export To Csv,我遇到了一个问题,我需要将数据导出到.csv文件,但不将文件存储在文件系统中,而是只需在浏览器中打开文件 我编写了以下代码将数据写入.csv文件: FileWriter myWriter = new FileWriter("output.csv"); myWriter.append(EmployeeCode); myWriter.append(','); myWriter.append(Band); myWriter.append('\n'); response.setHeader("Conte
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文件,但它是空的。我的数据没有填充到其中。
请说明我做错了什么。
FileWriter
将内容写入output.csv
文件,而不是响应输出流。你应该这样做:
OutputStream out = response.getOutputStream();
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);
}
以获取响应输出流
然后在out
流中写入内容,类似于:
OutputStream out = response.getOutputStream();
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);
}
在末尾添加
myWriter.flush();myWriter.close()代码>&在写入时在屏幕System.out.println(EmployeeCode+“=”+波段)上打印相同的数据代码>并查看您是否正在获取数据。法希姆,是的,我正在使用Sys out打印数据。@user179516我们应该关闭文件写入程序以从末尾的流中读取:)您是否可以在末尾添加myWriter.flush();myWriter.close()代码>然后让我知道你得到了什么?