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;

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章