Export to CSV file and open in browser
Asked Answered
A

1

10

I am stuck with an issue where I need to export data to a .csv file, but not store the file in file system - instead I need to simply open the file in browser.

I have written the below code to write data to .csv file:

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");

I am able to open a .csv file but it is empty. My data does not get populated into it. Please suggest what am I doing wrong.

After answered 31/10, 2012 at 6:56 Comment(4)
at the end add myWriter.flush();myWriter.close(); & while writing print the same data on screen System.out.println(EmployeeCode + "==" + Band); and see actually you are getting data or not.Coma
Fahim, Yes I am getting the data printed using Sys out.After
@After we should close the file writers to read from the streams at the end :)Eumenides
can you add at the end myWriter.flush();myWriter.close(); and let me know what you get?Coma
B
21

FileWriter writes the content in the output.csv file, not on the response output stream. You should do something like:

OutputStream out = response.getOutputStream();

To get the response output stream.

And write the content in the out stream, something like:

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);
}
Bergstein answered 31/10, 2012 at 7:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.