需要做一个excel导出功能,一共4张表,4种模板,要求导出到一个excel中的sheet中
尝试过poi,和autopoi,没找到同时符合要求的例子,希望各位大/神可以帮助一下
需要做一个excel导出功能,一共4张表,4种模板,要求导出到一个excel中的sheet中
尝试过poi,和autopoi,没找到同时符合要求的例子,希望各位大/神可以帮助一下
推荐使用阿里开源项目:easyexcel进行Excel的读写操作,方便简单高效。
1.添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
2.使用如下封装类
/**
*
* @param response 响应对象
* @param list 下载数据,如:List<User>
* @param object 数据对象,如:User
* @param title sheet标题
* @param sheetNo sheet编号
*/
private void download(HttpServletResponse response, ArrayList<Object> list, Object object, String title, Integer sheetNo) {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
String fileName;
try {
fileName = URLEncoder.encode(title, "UTF-8");
} catch (UnsupportedEncodingException e) {
log.info("导出时,文件名编码错误");
e.printStackTrace();
throw new BusinessException("文件名称编码异常");
}
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
try {
EasyExcel.write(response.getOutputStream(), object.getClass()).sheet(sheetNo,title).doWrite(list);
} catch (IOException e) {
log.info("导出时,EasyExcel write 错误");
e.printStackTrace();
throw new BusinessException("Excel写入异常");
}
}