I am trying to send a Excel file back to the user. In some way my excel file gets corrupted even if it is empty. When I open the file Excel tells me that the file is corrupt.
If i remove
response.getOutputStream().write(excelService.exportEventsToCSV());
I get an empty excel file.
@RequestMapping(value = "/events/excel", method = RequestMethod.GET)
public void getEventsAsExcel(HttpServletResponse response) {
try {
response.setHeader("Content-disposition", "attachment; filename=test.xls");
response.getOutputStream().write(excelService.exportEventsToCSV());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
My XML generation is very simple. Just empty document
@Override
public byte[] exportEventsToCSV() {
try {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet worksheet = workbook.createSheet("POI Worksheet");
HSSFCellStyle cellStyle = workbook.createCellStyle();
workbook.write(fileOut);
return workbook.getBytes();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Please any advice. I Was thinking of Springs Excel view but I dont want a view. Just a downloaded file.
You seem to be doing some very strange things around getting the output out, and I'm fairly sure that workbook.getBytes()
isn't returning what you think it is...
I would strongly suggest you change exportEventsToCSV
to return the workbook, then you can do the much simpler:
Workbook wb = excelService.exportEventsToCSV();
response.setHeader("Content-disposition", "attachment; filename=test.xls");
wb.write( response.getOutputStream() );
That should work fine and give the end user the kind of thing they were expecting
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With