SpringBoot+easypoi实现数据的Excel导出

论坛 期权论坛 脚本     
niminba   2021-5-23 02:40   1878   0

本文实例为大家分享了SpringBoot+easypoi实现数据的Excel导出的具体代码,供大家参考,具体内容如下

maven

<dependency>
      <groupId>cn.afterturn</groupId>
     <artifactId>easypoi-spring-boot-starter</artifactId>
     <version>4.1.0</version>
</dependency>

Controller层

// 接口不需要返回值
@RequestMapping(value = "/export-activity-data")
public void exportActivityData(@RequestParam String activityType,
                                   @RequestParam String activityState,
                                   @RequestParam String queryValue,
                                   @RequestParam String levelValue,
                                   @RequestParam String startTime,
                                   @RequestParam String endTime, HttpServletResponse response) {
        try {
            manageService.exportActivityData(TFActivityQueryParam.builder()
                    .activityState(activityState)
                    .activityType(activityType)
                    .queryValue(queryValue)
                    .levelValue(levelValue)
                    .startTime("".equals(endTime) ? null : new Date(DateTime.parse(startTime).getMillis()))
                    .endTime("".equals(endTime) ? null : new Date(DateTime.parse(endTime).getMillis())).build(), response);
        } catch (IOException e) {
           log.info( "导出失败", e);
        }
    }

service层

public void exportActivityData(TFActivityQueryParam param, HttpServletResponse response) throws IOException {
        response.setCharacterEncoding("UTF-8");
        response.setHeader("content-Type", "application/vnd.ms-excel");
        response.setHeader("Content-Disposition",
                "attachment;filename=" + URLEncoder.encode("活动综合数据.xls", "UTF-8"));
        val out = response.getOutputStream();

        List<TFActivityQueryResult> tfActivityList = getTFActivityList(param);
        List<TFActivityQueryResultExportDto> exportDtoList = new ArrayList<>();
        tfActivityList.forEach(activity -> {
            TFActivityQueryResultExportDto convert = TFActivityQueryResultExportDto.convert(activity);
            if (activity.getLevelType().equals("0")) {
                convert.setAffiliation("云南省");
            } else {
                EparchyCode eparchyCode = getEparchyCodeList().stream()
                        .filter(code -> code.getEparchyCode().equals(activity.getEparchyCode()))
                        .collect(Collectors.toList()).get(0);
                convert.setAffiliation(eparchyCode.getEparchyShortName());
            }
            exportDtoList.add(convert);
        });

        Workbook workbook = ExcelExportUtil.exportExcel(
                new ExportParams("活动综合数据", "活动"), TFActivityQueryResultExportDto.class, exportDtoList);
        log.info("workbook: {}", workbook);
        workbook.write(out);
        out.close();
 }

数据bean

public class TFActivityQueryResultExportDto {

    @Excel(name = "活动编码", width = 20)
    private String activityCode;
    @Excel(name = "活动名称", width = 20)
    private String activityName;
    @Excel(name = "活动标题", width = 20)
    private String activityTitle;
    @Excel(name = "归属", width = 20)
    private String affiliation;
    @Excel(name = "活动类型", width = 20)
    private String activityType;
    @Excel(name = "活动时间", width = 30)
    private String activityTime;
    @Excel(name = "活动状态", width = 20)
    private String activityState;
    @Excel(name = "备注", width = 30)
    private String remark;

    @Excel(name = "创建时间", width = 30)
    private String timeCreate;
    @Excel(name = "最新操作人", width = 30)
    private String operatorName;
    @Excel(name = "更新时间", width = 30)
    private String timeUpdate;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持社区。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP