美文网首页
easyexcel导出自定义表头

easyexcel导出自定义表头

作者: 往后余生9375 | 来源:发表于2020-06-02 11:38 被阅读0次
  <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.3</version>
        </dependency>

package com.sunnysoft.transfer.controller;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.util.DateUtils;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.sunnysoft.transfer.dto.QueryHealthCheckMorningCheckRec;
import com.sunnysoft.transfer.dto.QueryHealthCheckWatchRec;
import com.sunnysoft.transfer.entity.HealthCheckMorningCheckRec;
import com.sunnysoft.transfer.entity.HealthCheckWatchRec;
import com.sunnysoft.transfer.excel.HealthWatchExcelModel;
import com.sunnysoft.transfer.excel.MorningCheckExcelModel;
import com.sunnysoft.transfer.service.IHealthCheckMorningCheckRecService;
import com.sunnysoft.transfer.service.IHealthCheckWatchRecService;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Author:  dongzp
 * Time:    2020/5/25 15:47
 * Project: fastdfs-transfer-tencent-cos
 * Email:   90fanhua@gmail.com
 * Remarks:
 **/
@RestController
@RequestMapping(value = "export")
public class ExportController {


    private static Logger logger = LoggerFactory.getLogger(ExportController.class);

    @Autowired
    private IHealthCheckMorningCheckRecService healthCheckMorningCheckRecService;
    @Autowired
    private IHealthCheckWatchRecService healthCheckWatchRecService;


    /**
     * 获取晨午检信息
     * @return
     */
    private List<MorningCheckExcelModel> getMorningCheckData(List<HealthCheckMorningCheckRec> checkList){
        List<MorningCheckExcelModel> data = new ArrayList<>();
        for(HealthCheckMorningCheckRec rec : checkList){
            MorningCheckExcelModel model = new MorningCheckExcelModel();
            model.setCheckTime(rec.getMorningCheckTime());
            model.setClassName(rec.getClassName());
            model.setRemark(rec.getParComp());
            model.setSymptom(rec.getCheckException());
            model.setTemp(rec.getMorningCheckTemp() + "℃");
            model.setName(rec.getChildName());
            data.add(model);
        }
        return data;
    }

    /**
     * 获取健康观察信息
     * @return
     */
    private List<HealthWatchExcelModel> getHelathWatchData(List<HealthCheckWatchRec> watchRecList){
        List<HealthWatchExcelModel> data = new ArrayList<>();
        for(HealthCheckWatchRec rec : watchRecList){
            HealthWatchExcelModel model = new HealthWatchExcelModel();
            model.setCheckTime(rec.getWatchTime());
            model.setClassName(rec.getClassName());
            model.setSymptom(rec.getHealthExceptionInfo());
            model.setOther(rec.getOtherInfo());
            model.setTemp(rec.getWatchTemp() + "℃");
            model.setName(rec.getChildName());
            data.add(model);
        }

        return data;
    }

    /**
     * 晨午检的头
     * @param bigTitle
     * @return
     */
    private  List<List<String>> getMorningCheckHead(String bigTitle){
        List<List<String>> head = new ArrayList<List<String>>();
        List<String> head0 = new ArrayList<>();
        head0.add(bigTitle);
        head0.add("班级");
        List<String> head1 = new ArrayList<>();
        head1.add(bigTitle);
        head1.add("姓名");
        List<String> head2 = new ArrayList<>();
        head2.add(bigTitle);
        head2.add("晨午检时间");
        List<String> head3 = new ArrayList<>();
        head3.add(bigTitle);
        head3.add("体温");
        List<String> head4 = new ArrayList<>();
        head4.add(bigTitle);
        head4.add("晨午检异常症状");
        List<String> head5 = new ArrayList<>();
        head5.add(bigTitle);
        head5.add("备注");
        head.add(head0);
        head.add(head1);
        head.add(head2);
        head.add(head3);
        head.add(head4);
        head.add(head5);

        return head;
    }

    /**
     * 健康观察的头
     * @param bigTitle
     * @return
     */
    private  List<List<String>> getHealthWatchHead(String bigTitle){
        List<List<String>> head = new ArrayList<List<String>>();
        List<String> head0 = new ArrayList<>();
        head0.add(bigTitle);
        head0.add("班级");
        List<String> head1 = new ArrayList<>();
        head1.add(bigTitle);
        head1.add("姓名");
        List<String> head2 = new ArrayList<>();
        head2.add(bigTitle);
        head2.add("观察时间");
        List<String> head3 = new ArrayList<>();
        head3.add(bigTitle);
        head3.add("体温");
        List<String> head4 = new ArrayList<>();
        head4.add(bigTitle);
        head4.add("健康异常症状");
        List<String> head5 = new ArrayList<>();
        head5.add(bigTitle);
        head5.add("其他情况");
        List<String> head6 = new ArrayList<>();
        head6.add(bigTitle);
        head6.add("备注");
        head.add(head0);
        head.add(head1);
        head.add(head2);
        head.add(head3);
        head.add(head4);
        head.add(head5);
        head.add(head6);
        return head;
    }

    /**
     * 导出晨午检信息
     * @param response
     * @throws Exception
     */
    @RequestMapping(value = "exportMorningCheck")
    public void exportMorningCheck(HttpServletResponse response, QueryHealthCheckMorningCheckRec rec) throws Exception{

        if(StringUtils.isEmpty(rec.getKdgId()))
        {
            return;
        }
        StringBuffer bigTitle = new StringBuffer();
        if(StringUtils.isEmpty(rec.getMorningCheckTime()) || rec.getMorningCheckTime().length() == 0){
            rec.setMorningCheckTime(DateUtils.format(new Date(),"yyyy-MM-dd"));
            bigTitle.append(DateUtils.format(new Date(),"yyyy年MM月dd日"));
        }else{
            Date date = DateUtils.parseDate(rec.getMorningCheckTime(),"yyyy-MM-dd");
            bigTitle.append(DateUtils.format(date,"yyyy年MM月dd日"));
        }

        List<HealthCheckMorningCheckRec> morningCheckList = healthCheckMorningCheckRecService.getMorningCheckRecInfo(rec);

        if(morningCheckList != null && morningCheckList.size() > 0){
            bigTitle.append(morningCheckList.get(0).getKdgName());
        }

        bigTitle.append("晨午检详单");

        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode(bigTitle.toString(), "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");


        // 头的策略
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());

        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
        contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
        contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
        contentWriteCellStyle.setBorderTop(BorderStyle.THIN);

        HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);

        EasyExcel.write(response.getOutputStream(), MorningCheckExcelModel.class).head(getMorningCheckHead(bigTitle.toString())).registerWriteHandler(horizontalCellStyleStrategy).sheet("晨午检").doWrite(getMorningCheckData(morningCheckList));
    }



    /**
     * 导出健康观察信息
     * @param response
     * @throws Exception
     */
    @RequestMapping(value = "exportHealthWatch")
    public void exportHealthWatch(HttpServletResponse response, QueryHealthCheckWatchRec rec) throws Exception{
        if(StringUtils.isEmpty(rec.getKdgId()))
        {
            return;
        }
        StringBuffer bigTitle = new StringBuffer();

        if(StringUtils.isEmpty(rec.getWatchTime()) || rec.getWatchTime().length() == 0){
            rec.setWatchTime(DateUtils.format(new Date(),"yyyy-MM-dd"));
            bigTitle.append(DateUtils.format(new Date(),"yyyy年MM月dd日"));
        }else{
            Date date = DateUtils.parseDate(rec.getWatchTime(),"yyyy-MM-dd");
            bigTitle.append(DateUtils.format(date,"yyyy年MM月dd日"));
        }

        List<HealthCheckWatchRec> healthCheckWatchRecList = healthCheckWatchRecService.getWatchRecInfo(rec);

        if(healthCheckWatchRecList != null && healthCheckWatchRecList.size() > 0){
            bigTitle.append(healthCheckWatchRecList.get(0).getKdgName());
        }

        bigTitle.append("全日健康观察详单");

        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode(bigTitle.toString(), "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");


        // 头的策略
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();

        contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
        contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
        contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
        contentWriteCellStyle.setBorderTop(BorderStyle.THIN);

        HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);

        EasyExcel.write(response.getOutputStream(), HealthWatchExcelModel.class).head(getHealthWatchHead(bigTitle.toString())).registerWriteHandler(horizontalCellStyleStrategy).sheet("全日健康观察").doWrite(getHelathWatchData(healthCheckWatchRecList));
    }
}

image.png

相关文章

  • easyexcel导出自定义表头

  • EasyExcel--自定义表头(标题)样式策略

    前言:在项目开发中,我们有时候会遇到自定义表头样式的需求。EasyExcel官方文档中关于表头样式的说明有两种(以...

  • easyExcel使用

    参考官方文档github地址easyExcel 2.1.3 使用推荐easyExcel简单excel导出以及多sh...

  • easyexcel中poi

    陈旧的项目导出excel时用的POI3.14,现在引入easyexcel2.2.6,报错。 easyexcel依赖...

  • easyExcel导出

    easyExcel导出 错误信息:java.lang.IllegalStateException: Cannot ...

  • EasyExcel工具类

    EasyExcel pom依赖 模板样例: 导出: 导入: 导入Listener controller:

  • 前端excel导出

    分为两种导出: 普通excel导出(单表头) 多级表头导出(二级) 准备工具库:在src下创建vendor文件夹,...

  • 通用导入导出方案

    基于阿里的easyexcel的通用的导入导出方案 ExcelUploadResult ElTableColumn ...

  • Java导出excel文件

    1. 使用easyexcel导出 1.1 引入相关maven依赖 1.2 简单导出excel文件相关代码 exce...

  • 四、EasyExcel自定义导出样式

    一、概述 EasyExcel做导入导出都很简单,但修改excel的样式却有很多小伙伴不太了解,其实也不是很难,跟A...

网友评论

      本文标题:easyexcel导出自定义表头

      本文链接:https://www.haomeiwen.com/subject/cvfuzhtx.html