想使用Spring MVC下载Excel文件,照着下面的样例,很容易就实现了。
Spring MVC with Excel View Example (Apache POI and JExcelApi)
Spring MVC and Excel file via AbstractExcelView
问题一:数据仅能生成xls,不能生成xlsx
通过org.springframework.web.servlet.view.document.AbstractExcelView源代码可知,Spring的AbstractExcelView仅支持HSSFWorkbook,不支持XSSFWorkbook。这一问题可以通过Github上的hmkcode/Spring-Framework来解决。
com.hmkcode.view.abstractview.AbstractExcelView
com.hmkcode.view.ExcelView
问题二:下载的文件是我配置的视图路径export.do,而不是Excel后缀
通过在Rest Controller里添加如下代码解决:
SimpleDateFormat myFmt=new SimpleDateFormat("yyyyMMdd_HHmmss");
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "max-age=0");
if(excelVersion.equals("xlsx")){
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=test"+myFmt.format(new Date())+".xlsx");
}else{
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"test"+myFmt.format(new Date())+".xls\"");
}