springboot2.6.1导出xlsx表格

需求:
将列表数据导出为xlsx表格
1.pom.xm

 <!--操作Excel依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.0.5</version>
        </dependency>

2.controller

    @GetMapping("/export")
   @ResponseStatus(HttpStatus.OK)
   @ApiImplicitParams({
           @ApiImplicitParam(name = "time", value = "查询日期", required = true, dataTypeClass = String.class)
   })
   public void export(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
                      @RequestParam(value = "time", required = true) String time,
                      HttpServletResponse response) {
       statisticAnalysisService.export( time, response);
   }

3.service

  public void export(String time, HttpServletResponse response) {
        try {
            List<ExportStatisticResponse> list = getExportList(time);
            if (CollectionUtils.isNotEmpty(list)) {
                ExcelUtil.outputExcel(response, list, ExportStatisticResponse.class, "statistic-analysis.xlsx");
            }
        } catch (
                IOException e) {
            logger.error("导出失败,原因是e:{}", e.getMessage());
        }

    }

 private List<ExportStatisticResponse> getExportList(String time) {
        List<StatisticDetailResponse> list = statisticAnalysisMapper.getStatisticListByTime(time);
        List<ExportStatisticResponse> responseList = new ArrayList<>(12);
        if (CollectionUtils.isNotEmpty(list)) {
            for (StatisticDetailResponse dto: list) {
                ExportStatisticResponse statisticResponse = new ExportStatisticResponse();
                BeanUtils.copyProperties(dto, statisticResponse);
                statisticResponse.setEndTime(dto.getEndTimeStr());
                statisticResponse.setStartTime(dto.getStartTimeStr());
                responseList.add(statisticResponse);
            }
        }
        return responseList;
    }

4.工具类

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
public class ExcelUtil<T> {

    public static void outputExcel(HttpServletResponse response, List list, Class cla, String sheetName) throws IOException {
        response.setContentType("application/vnd.ms-excel");
        String fileName = URLEncoder.encode(sheetName, "UTF-8");
        response.setHeader("Content-Disposition","attachment;filename="+fileName);
        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
        WriteSheet sheet = EasyExcel.writerSheet(0, sheetName).head(cla).build();
        excelWriter.write(list, sheet);
        excelWriter.finish();
    }
}

5.实体类

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import lombok.EqualsAndHashCode;

@Data
@ColumnWidth(26)
@EqualsAndHashCode
public class ExportStatisticResponse {

    @ExcelProperty("开始时间")
    private String startTime;
    /**
     * session结束时间
     */
    @ExcelProperty("结束时间")
    private String endTime;

    /**
     * 耗时
     */
    @ExcelProperty("耗时 (min)")
    private Integer duration;
}

6.导出结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值