原因:
使用EasyPoi来导出Excel的原因:
导出的数据实体中包含了集合属性字段,EasyPoi可以解决实体里包含集合属性字段的问题。
问题:
EasyPoi产生的问题:
导出到Excel文件后,发现WPS就可以打开,而使用Office却打不开
解决:
在使用EasyPoi创建WorkBook实例时,如果你不设置Type类型是否为03版Excel(HSSF)或者07版Excel(XSSF)时,默认是03版的Excel,可以看源码
所以在创建WorkBook实例时,设置好你要的类型,
然后在获取流的时候,设置好什么格式去下载(2种):
第一种:前端如果以xlsx
格式接收Excel表格,那么在上图种创建类型为07版的XSSF,并且设置ContentType为07版的格式
第二种:前端如果以xls
格式接收Excel表格,那么在上图中创建类型可以不用写或者写成HSSF,并且设置ContentType为03版的格式
下图案例,以及代码
public static OutputStream getOutputStream(String fileName, HttpServletResponse response) {
try {
//03版
// response.setContentType("application/vnd.ms-excel");
//07版
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
String finalName = URLEncoder.encode(fileName, "UTF-8") + "_" + DateUtil.today();
response.setHeader("Content-disposition", "attachment;filename=" + finalName + ".xlsx");
return response.getOutputStream();
} catch (Exception e) {
throw new ExcelGenerateException("导出异常!");
}
}