Экспорт в 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);
}