【Easyexcel】根据模板导出excel

主要实现通过模板,导出对应数据,生成excel。

1.版本:

Maven: com.alibaba:easyexcel:3.0.5

2.代码实现

ExportExcelBase:是定义一些非列表的字段,如下:导出时间等
【Easyexcel】根据模板导出excel_第1张图片

工具类:

;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.List;

/**
 * @author fei.chen
 * @description: 导出excel工具类
 * @date 2022/12/20下午 5:57
 */
public class EasyExcelUtil {

    /**
     *  @param resourceAsStream  模板流
     * @param fileName 文件名
     * @param data 导出数据
     * @param exportExcelBase 基础对象
     * @param response
     */
    public static void excel(InputStream resourceAsStream, String fileName, List data,
                             ExportExcelBase exportExcelBase, HttpServletResponse response) {
        try {
            ServletOutputStream out = response.getOutputStream();
            //设置文件类型
            response.setContentType("application/vnd.ms-excel");
            //设置编码格式
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");

            //创建excel
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(resourceAsStream).build();
            // 创建sheet
            WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
            FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();

            excelWriter.fill(data, fillConfig, writeSheet);
            excelWriter.fill(exportExcelBase, writeSheet);
            //填充完成
            excelWriter.finish();
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

调用:

respList 是你要导出的数据字段 集合。

        InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("excel/信息.xlsx");

        ExportExcelBase exportExcelBase = ExportExcelBase.builder().
                exportUserName("小飞").
                exportUserCompany("公司部1").
                exportDate(DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss")).build();
        EasyExcelUtil.excel(resourceAsStream,"信息",respList,exportExcelBase,response);

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class AreasAccessInfoExportResp {
    /**
     * 序号
     */
    private Integer orderNum;

    /**
     *  名称
     */
    private String name;

 
}

public class ExportExcelBase {

    /**
     * 导出人
     */
    private String exportUserName;

    /**
     * 导出单位
     */
    private String exportUserCompany;

    /**
     * 导出时间
     */
    private String exportDate;

}

ok完事。

你可能感兴趣的:(框架,excel,java,servlet)