一、环境介绍
二、功能实现
此功能可以实现根据传入自定义的 导出实体类或Map 进行excel文件导出。若根据Map导出,导出列的顺序可以自定义。
话不多说,直接看代码
导出实体类
点击查看代码- import com.alibaba.excel.annotation.ExcelProperty;
- import com.alibaba.excel.annotation.format.DateTimeFormat;
- import com.alibaba.excel.annotation.write.style.*;
- import com.*.core.tool.utils.DateUtil;
- import lombok.Data;
- import org.apache.poi.ss.usermodel.BorderStyle;
- import org.apache.poi.ss.usermodel.HorizontalAlignment;
- import java.time.LocalDateTime;
- /**
- * excel导出对象实体类
- *
- * @author 热得快炸了
- * @since 2023-4-3
- */
- @Data
- @HeadStyle(
- borderBottom = BorderStyle.THIN,
- borderLeft = BorderStyle.THIN,
- borderRight = BorderStyle.THIN,
- borderTop = BorderStyle.THIN
- )
- @ContentStyle(
- borderBottom = BorderStyle.THIN,
- borderLeft = BorderStyle.THIN,
- borderRight = BorderStyle.THIN,
- borderTop = BorderStyle.THIN,
- wrapped = true,
- horizontalAlignment = HorizontalAlignment.LEFT
- )
- @HeadFontStyle(fontHeightInPoints = (short) 16)
- @ContentFontStyle(fontHeightInPoints = (short) 14)
- public class ExportDataDTO {
- private static final long serialVersionUID = 1L;
- /**
- * 序号
- */
- @ColumnWidth(8)
- @ExcelProperty({"文件登记簿", "序号"})
- private Integer rowNum;
- /**
- * 标题
- */
- @ColumnWidth(50)
- @ExcelProperty({"文件登记簿", "姓名"})
- private String name;
- /**
- * 业务类型
- */
- @ColumnWidth(20)
- @ExcelProperty({"文件登记簿", "年龄"})
- private String age;
- /**
- * 业务类型
- */
- @ColumnWidth(18)
- @ExcelProperty({"文件登记簿", "性别"})
- private String gender;
- }
复制代码 导出工具类
点击查看代码[code]import com.alibaba.excel.EasyExcel;import com.alibaba.excel.ExcelWriter;import com.alibaba.excel.converters.integer.IntegerNumberConverter;import com.alibaba.excel.read.builder.ExcelReaderBuilder;import com.alibaba.excel.read.listener.ReadListener;import com.alibaba.excel.util.DateUtils;import com.alibaba.excel.write.builder.ExcelWriterBuilder;import com.alibaba.excel.write.handler.WriteHandler;import com.alibaba.excel.write.metadata.WriteSheet;import com.alibaba.excel.write.metadata.style.WriteCellStyle;import com.alibaba.excel.write.metadata.style.WriteFont;import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;import com.baomidou.mybatisplus.core.metadata.IPage;import com.*.core.excel.converter.BaseDateConverter;import com.*.core.excel.listener.DataListener;import com.*.core.excel.listener.ImportListener;import com.*.core.excel.strategy.AdjustColumnWidthToFitStrategy;import com.*.core.excel.support.ExcelException;import com.*.core.excel.support.ExcelImporter;import com.*.core.mp.support.Query;import com.*.core.tool.utils.*;import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import org.apache.commons.codec.Charsets;import org.springframework.util.StringUtils;import org.springframework.web.multipart.MultipartFile;import javax.annotation.Nullable;import javax.servlet.http.HttpServletResponse;import javax.validation.constraints.NotNull;import java.io.*;import java.lang.reflect.Field;import java.net.URLEncoder;import java.util.*;import java.util.function.BiFunction;/** * Excel工具类 * * @author Chill * @apiNote https://www.yuque.com/easyexcel/doc/easyexcel */@Slf4jpublic class ExcelUtil { /** * 导出excel * * @param response 响应类 * @param fileName 文件名 * @param sheetName sheet名 * @param dataList 数据列表 * @param clazz class类 * @param 泛型 */ @SneakyThrows public static void export(HttpServletResponse response, String fileName, String sheetName, List dataList, Class clazz) { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding(Charsets.UTF_8.name()); fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name()); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(dataList); } /** * 根据分页查询导出excel,根据exportClazz类导出 * * @param dto DTO(分页查询对象) * @param resp 响应对象 * @param exportClazz 需要导出的类 * @param fileName 文件名 * @param pageDataFunc 分页查询方法(须将字典值转为中文,可调用wrapper方法) * @param strategyList 写入策略集合 * @param DTO类 * @param VO类 * @param 导出类 */ public static void export(@NotNull D dto, @NotNull HttpServletResponse resp, @NotNull Class exportClazz, @Nullable String fileName, @NotNull BiFunction pageDataFunc, @Nullable List |