easyexcel多行不同的表头导出

news2024/11/26 10:02:52

easyexcel多行不同的表头导出(多表格不同表头)

一、效果展示

在这里插入图片描述

二、代码

/**
     * 导出月度报表数据信息
     */
    @ApiOperation(value = "导出月度报表数据信息")
    @Log(title = "导出月度报表", businessType = BusinessType.EXPORT)
    @RequestMapping("/exportMonthChart")
    public void exportMonthChart(HttpServletResponse response) {
        try {
            tableWrite(response,input);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void tableWrite(HttpServletResponse response) throws IOException {
        MonthChartOutput output = lsDeviceInfoService.monthChart(input);
        WriteSheet writeSheet = EasyExcel.writerSheet("设备月度报表").needHead(Boolean.FALSE).build();
        // 这里必须指定需要头,table 会继承sheet的配置,sheet配置了不需要,table 默认也是不需要
        WriteTable writeTable0 = EasyExcel.writerTable(0).needHead(Boolean.TRUE).head(ExportVO.class).build();
        WriteTable writeTable1 = EasyExcel.writerTable(1).needHead(Boolean.TRUE).head(ExportVO.class).build();
        WriteTable writeTable2 = EasyExcel.writerTable(2).needHead(Boolean.TRUE).head(DemoData.class).build();

        // 生成无表头的内容
        List<List<String>> headList = Lists.newArrayList();
        headList.add(Lists.newArrayList("自定义表头1","自定义表头2","自定义表头3"));

        // 生成有表头的内容
        List<ExportVO> list = Lists.newArrayList();
        for (int i = 1; i < 10; i++) {
            list.add(ExportVO.builder().heat1("第"+i+"行内容")
                    .heat2("第"+i+"行内容")
                    .heat3("第"+i+"行内容")
                    .heat4("第"+i+"行内容")
                    .heat5("第"+i+"行内容")
                    .build());
        }
        String fileName = URLEncoder.encode("销售表现趋势分析-"+ System.currentTimeMillis()+".xlsx", "UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("content-Type", "application/vnd.ms-excel");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
        response.setHeader("filename", fileName);
        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
       // 第一次写入
        excelWriter.write(headList, writeSheet, writeTable0);
        // 第二次写入会创建头,然后在第一次的后面写入数据
        excelWriter.write(list, writeSheet, writeTable1);
        excelWriter.write(data(), writeSheet, writeTable2);
        excelWriter.finish();
    }

    private List<DemoData> data() {
        List<DemoData> list = ListUtils.newArrayList();
        for (int i = 0; i < 10; i++) {
            DemoData data = new DemoData();
            data.setString("字符串" + i);
            data.setDate(new Date());
            data.setDoubleData(0.56);
            list.add(data);
        }
        return list;
    }

实体DemoData 代码:

@Getter
@Setter
@EqualsAndHashCode
public class DemoData {
    @ExcelProperty("字符串标题")
    private String string;
    @ExcelProperty("日期标题")
    private Date date;
    @ExcelProperty("数字标题")
    private Double doubleData;
    /**
     * 忽略这个字段
     */
    @ExcelIgnore
    private String ignore;
}

实体DemoData 代码:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@HeadRowHeight(18)
@ContentRowHeight(15)
@ColumnWidth(16)
public class ExportVO {

    @ExcelProperty("表头1")
    private String heat1;

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

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

    @ExcelProperty("表头4")
    private String heat4;

    @ExcelProperty("表头5")
    private String heat5;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/649846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 下 sqlserver 连接 与开发准备

最近需要再linux下开发一个服务链接SQLserver。但是没有相关经验&#xff0c;然后参考了网上的一些博客。有点心得记录如下。 主要参考了这个&#xff1a;linux连接到sqlserver命令行,Linux 下连接sqlserver (上)_廖俊涛的博客-CSDN博客linux连接到sqlserver命令行,Linux 下连…

【网络安全】这份近 200 页应急响应文档,不会还有人没看过吧?

前言 成为伟大黑客的关键在于做自己喜爱的事&#xff0c;要把一件事情做好&#xff0c;你必须热爱它。所以只要你能坚持对安全技术的热爱&#xff0c;到了这种程度&#xff0c;你就会做得更好。 本文档注重理论与实战结合&#xff0c;不仅提供关键源代码供读者快速实践&#…

UnityVR--UIManager--UI管理1

目录 前言 UI节点的结构 需要用到的组件 1. CanvasGroup 2. Button等控件的OnClick()监听 3. EventTrigger 建立UI工具集 1. 管理UI节点 2. UIBase包含了以下的工具 建立分面板的管理工具——以主面板MainUi为例 前言 UI在项目中的重要性不言而喻&#xff0c;并且UI控件的…

将conda环境导入pycharm教程(史上最详细版)

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky LiEmail : 3435673055qq.com Time of completion&#xff1a;2023.6.15 Last edited: 2023.6.15 目录 将conda环境导入pycharm教程&#xff08;史上最详细版&#xff09; 步骤一&#xff1a;打开你的pychar…

Esxi直通A40显卡给ubuntu20.4系统驱动安装过程记录

Esxi直通A40显卡给ubuntu20.4系统驱动安装过程记录 背景描述 PowerEdge R750&#xff08;esxi虚拟化&#xff09; 服务器已有一张T4显卡&#xff0c;后期新增一张A40显卡&#xff0c;开一台ubuntu20.4系统直通A40显卡无法开机&#xff01; 开机问题解决后安装显卡驱动也各种报…

可防撞抗震的海格里斯HEGERLS四向穿梭车立体库货架系统

随着经济的高速发展以及科学技术的不断进步&#xff0c;现代仓储和物流行业的发展都有了质的飞跃&#xff0c;技术融入到仓储的研发与生产中&#xff0c;促进了自动化仓储设备的出现。提到自动化仓储设备&#xff0c;那就无法忽视智能搬运机器人四向穿梭车&#xff0c;四向穿梭…

【Spring学习之生命周期】什么是生命周期?什么是作用域?了解六种作用域

前言&#xff1a; &#x1f49e;&#x1f49e;从前⾯的课程我们可以看出 Spring 是⽤来读取和存储 Bean&#xff0c;因此在 Spring 中 Bean 是最核⼼的操作资源&#xff0c;所以接下来我们深⼊学习⼀下 Bean 对象。 前路漫漫&#xff0c;希望大家坚持下去&#xff0c;不忘初心&…

让你不再疑惑如何转换音频格式

你是否曾经遇到过这样的问题&#xff1f;你有一些wav格式的音频文件&#xff0c;但是它们不能在你的设备上播放&#xff0c;或者你需要将它们转换为其他格式以便更好地编辑和分享。别担心&#xff0c;转换wav格式并不是一件麻烦的事情。如果你还不知道wav格式怎么转换的话&…

今天面了个阿里拿27K出来的测试,真是砂纸擦屁股,给我露了一手啊

2023年春招已经结束&#xff0c;很多小伙伴收获不错&#xff0c;拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#xff0c;他山之石…

如何判断测量所得的CSI是视距还是非视距

1、视距&#xff08;LOS&#xff09;传播 无线电波沿直线传播的方式称为视距传播。 2、非视距&#xff08;NLOS&#xff09;传播 当CSI接收机与基站(BS)之间的直射路径被障碍物挡住后&#xff0c;无线电波只能在经过反射和衍射后到达接收端&#xff0c;此时测量到的数据&…

由于找不到msvcp120.dll怎么办,msvcp120.dll一键修复方法

运行软件程序或游戏&#xff0c;提示由于找不到msvcp120.dll&#xff0c;遇到这种问题要怎么办呢&#xff1f;一般都是计算机系统的dll动态链接库损坏或者文件丢失&#xff0c;不用慌&#xff0c;这个只要修复一下就可以&#xff0c;下面小编就一一道来&#xff0c;还可以实现一…

PMP证书没过期的同学吃香了,直接对标CSPM国标证书二级

2021年10月&#xff0c;中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系&#xff0c;开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会&#xff08;CAS&#xff09;组织开展的项…

使用dmhs veri手动比对ORACLE同步到DM数据

使用dmhs veri手动比对ORACLE同步到DM数据 veri介绍 在进行数据库数据的实时同步的时候&#xff0c;需要了解同步的结果是否正确&#xff0c;因此需要有数据对比工具进行数据的对比&#xff0c;并生成详细的对比报告&#xff0c;提供用户参考。对比工具仅仅生成报告&#xff…

【OpenMMLab】AI实战营第二期Day10:底层视觉与MMEditing

Summary 本课程包含底层视觉和MMEditing两个部分。第一部分介绍图像超分、深度学习和网络训练的相关算法&#xff0c;第二部分介绍超像素卷积、无监督学习、卷积网络和空间注意机制&#xff0c;以及这些算法在视觉框架中的实践应用。 Highlights &#x1f4f7;介绍计算机视觉…

ChatGPT 3.5/4 双双升级:更长,更便宜,更开放,更可控

OpenAI 今年早些时候发布了 gpt-3.5-turbo 和 gpt-4&#xff0c;并且在短短几个月内&#xff0c;开发者在这些模型上开发了很多令人印象深刻的应用。 6月13日&#xff0c; OpenAI 官宣了版本更新的内容&#xff1a; Chat Completions API 中新增了函数调用功能。更可控的 gpt-4…

【有奖体验】叮!你有一张 3D 卡通头像请查收

立即体验基于函数计算部署【图生图】一键部署 3D 卡通风格模型&#xff1a;https://developer.aliyun.com/topic/aigc_fc 人工智能生成内容&#xff08;Artificial Intelligence Generated Content&#xff0c;简称 AIGC&#xff09;是当下最火的概念之一。AIGC 被认为是继专业…

MFC .rc文件解析(EXE属性详细信息添加)

文章目录 Windows 资源文件(.rc文件)资源(Resources)类型从文件导入的&#xff08;BITMAP&#xff0c;ICON&#xff0c;HTML&#xff0c;FONT&#xff0c;CURSOR 等&#xff09;对话框资源类型&#xff1a;&#xff08;DIALOG&#xff0c;DIALOGEX 等&#xff09;菜单资源类型字…

【Java项目】使用Nacos实现动态线程池技术以及Nacos配置文件更新监听事件

文章目录 项目源码线程池概念ThreadPoolExecutor介绍Nacos实现对Nacos配置文件更新的事件监听机制定时通知功能邮件发送通知功能开始测试 项目源码 真诚的希望能给我项目一个stars&#xff01;&#xff01;&#xff01; 项目源码 线程池概念 线程池&#xff08;Thread Pool&…

Megatron-LM GPT2

内容 使用原始 Megatron-LM 训练 GPT-2 训练数据设置运行未修改的 Megatron-LM GPT2 模型启用 DeepSpeed 参数解析初始化和训练 初始化使用训练 API 前向传播反向传播更新模型参数损失缩放检查点保存和加载DeepSpeed 激活检查点&#xff08;可选&#xff09;训练脚本使用 GPT-…

拆分代码 + 预加载,减少首屏资源,提升首屏性能及应用体验

route-resource-preload 组件懒加载可以极大地提升我们的应用首屏加载体验, 但我们在进行组件资源拆包后&#xff0c;一旦加载某个组件资源出现以上时间过长的情况&#xff0c;则会出现视图无法正常渲染的问题&#xff08;导致页面白屏/组件出不来/交互卡顿等情况&#xff09;。…