导出Excel实现单元格自动合并(EasyExcel)

发布于:2025-02-10 ⋅ 阅读:(67) ⋅ 点赞:(0)

前言

    EasyExcel实现单元格合并的导出。效果如下:
在这里插入图片描述


一、EasyExcel是什么?

    这个我就不介绍了,阿里出的,但是据说现在EasyExcel停止维护了,不过不要紧,目前依然好用。后期可能被FastExcel替代,开发这个的团队好像就是EasyExcel那一波人。

二、使用步骤

1.引入库

    easyExcel依赖引入,注意其实poi依赖也最好引入,但是要注意版本差异。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
</dependency>

2.导出实现

1. controller:

/**
     * 导出分区工单分类关键指标分析数据(不绕社区)
     */
    @ResourceAction(id = "exportYearMonthParkStageKeyCount", name = "导出分区工单分类关键指标分析数据")
    @GetMapping("/exportYearMonthParkStageKeyCount")
    public void exportYearMonthParkStageKeyCount(WorkOrderCountQueryRequestVo requestVo, HttpServletResponse response) {
   
        try {
   
            // 设置响应头
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            String fileName = URLEncoder.encode(DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_PATTERN) + "关键指标分析导出" + ".xlsx", StandardCharsets.UTF_8).replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName);

            //组织导出数据
            Map<String, Object> exportDataMap = orderService.exportYearMonthParkStageKeyCount(requestVo);
            List<List<String>> headList = (List<List<String>>) exportDataMap.get("headList");
            List<List<Object>> dataList = (List<List<Object>>) exportDataMap.get("dataList");

            ExcelWriterBuilder excelWriterBuilder = EasyExcel.write(response.getOutputStream());
            excelWriterBuilder
                    .registerWriteHandler(new CustomCellWriteHeightStrategy((short) 30, (short) 30))
                    .registerWriteHandler(new CustomCellWriteWidthStrategy())
                    .registerWriteHandler(new CustomCellWriteHandler(2,0,dataList.size()));
            excelWriterBuilder.head(headList).sheet("关键指标分析").doWrite(dataList);

        } catch (Exception e) {
   
            throw new RuntimeException("导出分区工单分类关键指标分析数据失败");
        }

    }

2. serviceImpl:

public Map<String, Object> exportYearMonthParkStageKeyCount(WorkOrderCountQueryRequestVo requestVo) {
   
        Map<String, Object> dataMap = new HashMap<>();
        String yearMonthStr = requestVo.getYearMonthStr();
        String allHead = "关键指标分析-";
        Integer type = requestVo.getType();
        String rateHeadName = "";
        if (type != null){
   
            //1计划,2应急
            if (type == 1){
   
                allHead += "计划工单\n";
                rateHeadName = "计划工单完成率";
            }
            if (type == 2){
   
                allHead += "应急工单\n";
                rateHeadName = "应急工单完成率";
            }
        }
        allHead += 

网站公告

今日签到

点亮在社区的每一天
去签到