Экспорт в 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-файл, но он пуст. Мои данные в него не заполняются. Прошу подсказать что я делаю не так.

1 ответов


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