1、pom中需要引入
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.0.7</version>
</dependency>
2、controller层
3、工具类
public class ExcelUtils {
/**
* 私有化构造方法
*/
private ExcelUtils() {
}
/**
*
* @param response HttpServletResponse
* @param fileName 导出文件名称,不传默认文件名为"excel"
* @param headerAlias 表头别名(源名称-别名)
* @param data 表中数据 集合类型
*/
public static void excelExport(HttpServletResponse response, String fileName, Map<String, String> headerAlias, Iterable<?> data) {
ExcelWriter writer = null;
ServletOutputStream out = null;
try {
//文件名为null或者""时,设置默认文件名
URLEncoder.encode(StrUtil.isEmpty(fileName) ? "excel" : fileName, "UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
// 通过工具类创建writer,创建xls格式
writer = ExcelUtil.getWriter();
if (MapUtil.isNotEmpty(headerAlias)) {
//给表头设置别名
headerAlias.forEach(writer::addHeaderAlias);
}
// 一次性写出内容,使用默认样式,强制输出标题
if (CollUtil.isNotEmpty(data)) {
writer.write(data, true);
}
//out为OutputStream,需要写出到的目标流
out = response.getOutputStream();
writer.flush(out);
} catch (IOException e) {
log.error("将数据写入到excel表格中失败", e);
} finally {
if (writer != null) {
writer.close();
}
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
log.error("将数据写入到excel表格中失败", e);
}
}
}
}