EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。

官网首页

官方网站

https://easyexcel.opensource.alibaba.com/

废话不多说 直接开整:

先进行pom.xml要导入包进行添加:

com.alibaba easyexcel 2.2.10 org.apache.poi poi org.apache.poi poi-ooxml poi-ooxml-schemas org.apache.poi org.apache.poi poi 4.1.2 org.apache.poi poi-ooxml 4.1.2 org.apache.poi poi-ooxml-schemas 4.1.2 com.deepoove poi-tl 1.10.0

写个通用EasyExcel工具类:

import com.alibaba.excel.EasyExcel; import com.alibaba.excel.support.ExcelTypeEnum; import lombok.extern.slf4j.Slf4j; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.util.List; /** * EasyExcel工具类 */ @Slf4j public class EasyExcelUtil { /** * 导出Excel(07版.xlsx)到web * * @param response 响应 * @param excelName Excel名称 * @param sheetName sheet页名称 * @param clazz Excel要转换的类型 * @param data 要导出的数据 * @throws Exception */ public static void export2Web(HttpServletResponse response, String excelName, String sheetName, Class clazz, List data) throws Exception { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 excelName = URLEncoder.encode(excelName, "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue()); EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(data); } }

返回参数:

import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data @ApiModel(value = "VO", description = "导出列表Vo") public class VO implements Serializable { /** * 主键 * @ExcelIgnore:导出列表不显示 */ @ApiModelProperty(value = "主键") @ExcelIgnore private Integer id; /** * 名称 * @ColumnWidth(30):要显示导出的列表列:30代表列表宽度 */ @ApiModelProperty(value = "名称") @ExcelProperty(value = "名称") @ColumnWidth(30) private String name; /** * 地址 */ @ApiModelProperty(value = "地址") @ExcelProperty(value = "地址") @ColumnWidth(35) private String address; }

controller:

/** * 导出数据列表 * * @return */ @ApiOperation(value = "导出数据列表", notes = "导出数据列表") @GetMapping(value = "/expor") public void expor(@ApiIgnore Dto dto, HttpServletResponse response) { try { String fileName = "数据列表" + DateUtils.getDate("yyyyMMddHHmmss"); //Service调用相应查询数据方法 List list = Service.expor(dto); EasyExcelUtil.export2Web(response, fileName, "数据列表", VO.class, list); } catch (Exception e) { logger.info("导出数据列表失败!失败信息:{}", e.getMessage()); } }