Отсутствует тип содержимого:
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
Также используйте XSSFWorkbook для создания файла .xlsx
:
XSSFWorkbook wb = new XSSFWorkbook ();
Edit ~~~~
Вот полный пример, который работает, я использую SpringBoot 2.2.2 и POI 3.15.
@GetMapping(value = "/main/export")
public void export(HttpServletResponse response) throws Exception {
// user list
List<UserDto> users = new ArrayList<>();
users.add(new UserDto(1L, "user1"));
users.add(new UserDto(2L, "user2"));
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("All Users List");
Row header = sheet.createRow(0);
header.createCell(0).setCellValue("Username");
header.createCell(1).setCellValue("First name");
header.createCell(2).setCellValue("Last name");
header.createCell(3).setCellValue("E-mail");
int rowNum = 1;
for (UserDto user : users) {
Row aRow = sheet.createRow(rowNum++);
aRow.createCell(0).setCellValue(user.getId());
aRow.createCell(1).setCellValue(user.getName());
}
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("content-disposition", "attachment; filename=myfile.xlsx");
workbook.write(response.getOutputStream());
}