下面是关于 Spring Boot 下载 Excel 文件时报错文件损坏的解决方案的攻略。
问题描述
当在 Spring Boot 中使用 HttpServletResponse 下载 Excel 文件时,有时会遇到下载的 Excel 文件打开时提示文件损坏的问题,具体错误信息如下:
Excel 错误提示:Excel found unreadable content..xls
问题原因
此问题主要原因是因为 Excel 文件的格式问题,Excel 文件由于格式问题导致下载时发生错误。当 Excel 文件格式不正确时,文件内容会被损坏,进而无法正常打开。
解决方案
为解决此问题,我们可以通过两种方式来解决。
方案一
通过导出工具类设置 response 响应头信息来解决。
示例代码:
/**
* 使用 HttpServletResponse 导出 Excel 文件
*/
@RequestMapping("/exportExcel")
public void exportExcel(HttpServletResponse response) {
try (OutputStream out = response.getOutputStream()) {
// 设置文件名称与文件类型
response.setHeader("Content-Disposition", "attachment;filename=test.xlsx");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
// 创建 Excel 文件
Workbook workbook = createWorkbook();
workbook.write(out);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 创建 Excel 文件
* @return Workbook
*/
public Workbook createWorkbook() {
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("sheet1");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello, Spring Boot!");
return wb;
}
方案二
通过修改 response 响应头信息的编码集来解决。
示例代码:
/**
* 使用 HttpServletResponse 导出 Excel 文件
*/
@RequestMapping("/exportExcel")
public void exportExcel(HttpServletResponse response) {
try (OutputStream out = response.getOutputStream()) {
// 设置文件名称与文件类型
response.setHeader("Content-Disposition", "attachment;filename=test.xlsx");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");
// 创建 Excel 文件
Workbook workbook = createWorkbook();
workbook.write(out);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 创建 Excel 文件
* @return Workbook
*/
public Workbook createWorkbook() {
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("sheet1");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello, Spring Boot!");
return wb;
}
总结
在 Spring Boot 中使用 HttpServletResponse 下载 Excel 文件时,遇到 Excel 文件无法打开的问题,主要是由于 Excel 文件格式问题。此时,我们可以通过设置 response 响应头信息或修改编码集方式来解决。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot下载Excel文件时,报错文件损坏的解决方案 - Python技术站