首页 > 编程语言 >java笔记_16_EasyExcel表头设计

java笔记_16_EasyExcel表头设计

时间:2024-03-27 14:56:11浏览次数:29  
标签:java 16 excel 表头 build xxxExcelVOList import com

导出对象:

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

@Data
public class ProdEvaluatResultExcelVO {

    // ExcelProperty设置默认表头(无自定义表头时,直接生成)
    @ExcelProperty("表头1")
    private String data1;

    @ExcelProperty("表头2")
    private String data2;

    @ExcelProperty("表头3")
    private String data3;

    @ExcelProperty("表头4")
    private Double data4;

    // 时间格式设置
    @ExcelProperty("表头5")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date data5;
}

依赖:

import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;

(默认表头)主要代码:

     @ApiOperation("导出")
    @PostMapping("/export")
    public void export(@RequestBody @Validated ExportReq req, HttpServletResponse response) throws IOException {
        // 获取导出数据
        List<XxxExcelVO> xxxExcelVOList = xxxService.getList(req);
        // 没数据时导出表头
        if (xxxExcelVOList == null || xxxExcelVOList.size() == 0) {
            xxxExcelVOList = new ArrayList<>();
            xxxExcelVOList.add(new XxxExcelVO());
        }
        if (CollUtil.isNotEmpty(xxxExcelVOList)) {
            ResponseUtil.handleExcelResponse(response, "导出文件");
            long start = System.currentTimeMillis() / 1000;
            ExcelWriter build = EasyExcel.write(response.getOutputStream()).head(XxxExcelVO.class).excelType(ExcelTypeEnum.XLSX).build();
            WriteSheet writeSheet = EasyExcel.writerSheet("sheet").build();
            build.write(xxxVOList, writeSheet);
            build.finish();
            long end = System.currentTimeMillis() / 1000;
            log.info("导出耗时:" + (end - start) + " 秒");
        }
    }

 (多行表头)主要代码:

    @ApiOperation("导出")
    @PostMapping("/export")
    public void export(@RequestBody @Validated ExportReq req, HttpServletResponse response) throws IOException {
        // 获取导出数据
        List<XxxExcelVO> xxxExcelVOList = xxxService.getList(req);
        // 没数据时导出表头
        if (xxxExcelVOList == null || xxxExcelVOList.size() == 0) {
            xxxExcelVOList = new ArrayList<>();
            xxxExcelVOList.add(new XxxExcelVO());
        }
        if (CollUtil.isNotEmpty(xxxExcelVOList)) {
            ResponseUtil.handleExcelResponse(response, "导出文件");
            // 计时
            long start = System.currentTimeMillis() / 1000;

            // 设置字体样式 设置粗体、字号
            WriteFont writeFont = new WriteFont();
            writeFont.setBold(false); 
            writeFont.setFontHeightInPoints(Short.valueOf((short)11));
            WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
            contentWriteCellStyle.setWriteFont(writeFont);
            // 字体样式添加
              ExcelWriter build = EasyExcel.write(response.getOutputStream())
                    .registerWriteHandler(new HorizontalCellStyleStrategy(contentWriteCellStyle, contentWriteCellStyle))
                    .excelType(ExcelTypeEnum.XLSX).build();

            // 动态添加表头
            WriteSheet writeSheet = EasyExcel.writerSheet("sheet").build();
            // 创建表格,Sheet 中使用
            WriteTable table = new WriteTable();
            table.setTableNo(1);
            // 设置表头
            List<List<String>> headTitles = ListUtils.newArrayList();
            //表头数据(按列添加)(横向相邻且数据相同的表格,自动合并)
            //第1、2列
            headTitles.add(
                    ListUtils.newArrayList(
                            "aaaa",
                            "aaa",
                            "aa",
                            "a")
            );
            headTitles.add(
                    ListUtils.newArrayList(
                            "aaaa",
                            "aaa",
                            "bb",
                            "b")
            );
            //第3、4、5列 可以设置空表头" "
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            headTitles.add(
                    ListUtils.newArrayList(
                            "aaaa",
                            "bbb",
                            "bb",
                            "c")
            );
            headTitles.add(
                    ListUtils.newArrayList(
                            "aaaa",
                            "bbb",
                            " ",
                            "d")
            );
            headTitles.add(
                    ListUtils.newArrayList(
                            "aaaa",
                            "bbb",
                            " ",
                            "e")
            );
            table.setHead(headTitles);
            // 根据返回的列表写数据
            build.write(xxxExcelVOList, writeSheet, table);

            build.finish();
            long end = System.currentTimeMillis() / 1000;
            log.info("导出耗时:" + (end - start) + " 秒");
        }
    }

 

标签:java,16,excel,表头,build,xxxExcelVOList,import,com
From: https://www.cnblogs.com/luyuting/p/18099177

相关文章

  • 洛谷题单指南-图的基本应用-P3916 图的遍历
    原题链接:https://www.luogu.com.cn/problem/P3916题意解读:寻找每个点所能到达的最大的点。解题思路:直观上,可以依次从每个点开始DFS搜索,记录经过的最大点,复杂度是O(n^2)级别,会超时。可以换一种角度,既然要找每个点可以达到的最大值,那么可以反向建图,从最大值出发,所经过的点能达到......
  • Java版企业电子招标采购系统源码——鸿鹄电子招投标系统的技术特点
    在数字化时代,采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过SpringCloud、SpringBoot2、Mybatis等先进技术,打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过待办消息、招标公告、中......
  • Java版直播商城免 费 搭 建:平台规划与常见营销模式,电商源码、小程序、三级分销及详解
    【saas云平台】打造全行业全渠道全场景的saas产品,为经营场景提供一体化解决方案;门店经营区域化、网店经营一体化,本地化、全方位、一站式服务,为多门店提供统一运营解决方案;提供丰富多样的营销玩法覆盖所有经营场景,助力商家成功;系统稳定压倒一切,让商家经营有保障,消费者购物更放心......
  • [转帖]SPECjbb MultiJVM - Java Performance
     MovingonfromSPECCPU,weshiftovertoSPECjbb2015.SPECjbbisafromground-updevelopedbenchmarkthataimstocoverbothJavaperformanceandserver-likeworkloads,fromtheSPECwebsite:“TheSPECjbb2015benchmarkisbasedontheusagemodelofa......
  • JavaWeb学习笔记——第六天
    MySQL(一)数据库概述数据库即DataBase(DB),是存储和管理数据的仓库。数据库管理系统即DataBaseManagementSystem(DBMS),是操纵和管理数据库的大型软件。SQL即StructuredQueryLanguage,是操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。常见的数据库产品......
  • LeetCodeHot100 链表 160. 相交链表 206. 反转链表 234. 回文链表 141. 环形链表
    160.相交链表https://leetcode.cn/problems/intersection-of-two-linked-lists/description/?envType=study-plan-v2&envId=top-100-likedpublicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){intlenA=0;intlenB=0;L......
  • Zookeeper客户端java API
    ZooKeeper是一个开源的分布式协调服务,它为分布式应用提供了简单的原语来管理分布式系统中的协调问题,如命名、配置管理、同步和组服务等。ZooKeeper的API为客户端提供了与ZooKeeper服务交互的方式。下面我们将介绍ZooKeeper的主要API及其功能。主要API功能列表:create创建......
  • SpringBootWeb最新相关技术(上接maven):IDEA2023-Spring环境,http协议复习概览,web服务器To
    Spring官网HTTPs://spring.iospring生态(全家桶)基于SpringFramework基础框架。但如果我们基于该基础框架开发,会面临配置繁琐,入门难度大的问题,SpringBoot则可以快速开发(简化配置,快速开发)。1.SpringBootWeb入门使用SpringBoot开发一个Web应用,浏览器发起请求/hello之后,给浏......
  • CF1676H2的题解
    (一)题意转化为求\(i<j\)且$a_j\lea_i$的有序对\((i,j)\)数。二维偏序,容易想到用树状数组或归并排序做。(二)AC代码(树状数组)。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,t,tree[200010],a[200010];intlowbit(intx){ returnx&-x;......
  • AT_arc169_a的题解
    (一)由于每次把子节点的权值加到父节点中,深度越深影响越大。将\(1\)号节点视作父节点,不难发现,同一深度的节点对其贡献度相等,都为\(1\timesnow\val\)。因为\(10^{100}\)极大,所以统计每层权值和,从深往浅扫。(二)AC代码。#include<bits/stdc++.h>#defineintlonglongus......