EasyExcel单行或多行表头的简单Excel导出

news2024/9/23 13:28:38

一般Excel不需要复杂的数据格式导出,只是在表头上略有区别,下面展示单行和多行表头Excel导出

1、单行表头

例如:Excel表头只有单行,那就只需要使用注解@ExcelProperty即可实现

① 添加依赖

首先,在 pom.xml 中添加 EasyExcel 的依赖:

 <!-- EasyExcel 依赖 -->
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>3.3.3</version>
</dependency>

② 定义数据模型

在数据模型 EnergyTimeDetailVO需要导出的字段上添加注解信息@ExcelProperty

@Data
public class EnergyTimeDetailVO {
    @ApiModelProperty("时间")
    @ExcelProperty(value = "时间", index = 0)
    private String time;

    @ApiModelProperty("起始读数")
    @ExcelProperty(value = "起始读数", index = 1)
    private BigDecimal startRead;

    @ApiModelProperty("终止读数")
    @ExcelProperty(value = "终止读数", index = 2)
    private BigDecimal endRead;

    @ApiModelProperty("总用量")
    @ExcelProperty(value = "总用量", index = 3)
    private BigDecimal usage;
}

 ③ 编写导出逻辑

public class EasyExcelUtils {
    public static void downloadExcel(String fileName, String sheetName, Class clz, List list, HttpServletResponse response) throws IOException {
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        fileName = URLEncoder.encode(fileName, "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ";" + "filename*=utf-8''" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream(), clz)
                .sheet(sheetName)
                .registerWriteHandler(new CustomCellWriteWidthStrategy()) /*自适应列宽*/
                .registerWriteHandler(new CustomCellWriteHeightStrategy()) /*自适应行高*/
                .doWrite(list);
    }
}

自适应列宽CustomCellWriteWidthStrategy类和自适应行高CustomCellWriteHeightStrategy类,在这篇文章中:Java使用EasyExcel自定义合并(横纵合并)、自定义行高列宽、自适应行高列宽工具、自定义样式Excel导出_easyexcel 横向合并-CSDN博客

④ Excel导出

public void exportEnergyDetail(UseEnergyComparedMeterDTO param, HttpServletResponse response) {
        String fileName = "用能明细" + DateUtil.format(new Date(), DatePattern.PURE_DATE_FORMAT);
        try {
            List<EnergyTimeDetailVO> detailList = this.energyComparedDetail(param);
            EasyExcelUtils.downloadExcel(fileName, "数据明细", EnergyTimeDetailVO.class, detailList, response);
        } catch (Exception e) {
            log.error("用能明细:{}", e.getMessage());
        }
    }

⑤ 效果展示:

2、多行表头

如果数据标头为多行,如下方:

 就只需要要修改导出的类EnergyTimeDetailVO上的注解信息@ExcelProperty

@Data
public class EnergyTimeDetailVO {
    @ApiModelProperty("时间")
    @ExcelProperty(value = "时间", index = 0)
    private String time;

    @ApiModelProperty("起始读数")
    @ExcelProperty(value = {"读数", "起始读数"}, index = 1)
    private BigDecimal startRead;

    @ApiModelProperty("终止读数")
    @ExcelProperty(value = {"读数", "终止读数"}, index = 2)
    private BigDecimal endRead;

    @ApiModelProperty("总用量")
    @ExcelProperty(value = "总用量", index = 3)
    private BigDecimal usage;
}

其他代码不变,撒花✿✿ヽ(°▽°)ノ✿,完结……

如果是动态表头,就是非固定表头的Excel可以参照这篇文章:

Java使用EasyExcel生成动态表头和多Sheet数据的Excel_easyexcel 动态表头和动态数据-CSDN博客

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

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

相关文章

zhidianyun01/基于 ThinkPHP+Mysql 的智慧园区+智慧园区管理系统+园区物业管理系统+园区物业管理系统源码

园区物业管理系统园区管理系统园区管理园区物业物业管理系统园区物业管理系统源码 软件架构 ThinkPHPMysql 源码合作 提供完整源代码 软件界面展示

imap发送邮件:如何配置IMAP服务器发邮件?

imap发送邮件的设置教程&#xff1f;如何使用IMAP服务发送邮件&#xff1f; IMAP发送邮件作为一种高效的邮件管理方式&#xff0c;允许用户在多个设备上同步邮件&#xff0c;极大地提升了工作效率。AokSend将详细介绍如何配置IMAP服务器以实现邮件的发送。 imap发送邮件&…

Linux入门攻坚——31、rpc概念及nfs和samba

NFS&#xff1a;Network File System 传统意义上&#xff0c;文件系统在内核中实现 RPC&#xff1a;函数调用&#xff08;远程主机上的函数&#xff09;&#xff0c;Remote Procedure Call protocol 一部分功能由本地程序完成 另一部分功能由远程主机上的 NFS本质…

通过FFmpeg和URL查看流的编码格式

FFmpeg下载后会有三个执行文件&#xff0c;跳转到FFmpeg所在文件夹 查看视频流URL地址的编码格式命令&#xff1a; // 在下载ffmpeg的文件夹中执行如下命令&#xff0c;可查看流的编码格式&#xff0c;这里的测试流是H264编码ffprobe http://devimages.apple.com/iphone/sample…

CSS学习13

CSS例子 学成网 需要使用的图片&#xff1a; 代码&#xff1a; <html><head><style>/*CSS初始化*/* { /*清除内外边框*/padding: 0;margin: 0;}ul {list-style: none; /*清除列表样式*/}.clearfix:before,.clearfix:after { /*清除浮动*/content: &qu…

C++11(1)

目录 前言 小故事 C11优势 统一的列表初始化 1.{}初始化 2. std::initializer_list 声明 1.auto 2.decltype 3.nullptr 前言 小故事 1998 年是 C 标准委员会成立的第一年&#xff0c;本来计划以后每 5 年视实际需要更新一次标准&#xff0c; C 国际 标准委员会在研究…

如何使用ChatGPT撰写研究计划书?AI写作全攻略

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥&#xff08;yida985&#xff09;交流&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步&a…

从安卓开发到AI产品经理——我的AI绘画之旅

大家好&#xff0c;我是一名有着多年安卓开发经验的程序员。在日复一日的编码生活中&#xff0c;我对AI行业产生了浓厚的兴趣。于是&#xff0c;我决定转行成为一名AI产品经理。在这个过程中&#xff0c;我通过学习AI绘画工具初步了解了AI行业&#xff0c;下面我将分享我的学习…

Apache DolphinScheduler在Cisco Webex的应用与优化实践

引言 我叫李庆旺&#xff0c;是Cisco Webex的一名软件工程师&#xff0c;同时也是Apache DolphinScheduler&#xff08;以下简称DS&#xff09;的Committer。 在过去的两年里&#xff0c;公司基于Apache DolphinScheduler进行了多项持续改进和创新&#xff0c;以更好地适应我们…

Docker 的安装

讲解下在 Linux 下如何安装 Docker ‍ 官网 Docker 官网&#xff1a;https://www.docker.com Docker Hub 官网&#xff1a; https://hub.docker.com &#xff08;有很多 Docker 镜像的仓库&#xff0c;可能得魔法上网&#xff09; 对于 Docker 初学者&#xff0c;可以从官…

SSH免密登录(Mac版)

1、查看ssh版本确保已安装 ssh -V 2、生成密钥对 ssh-keygen &#xff08;我之前安装过了所以选no&#xff09; 3、将公钥追加到需要设置免密登录的服务器上 使用ssh-copy-id命令进行追加ssh-copy-id -i id_rsa.pub useridip ( userid 和 ip 需要对应换成自己的)

opencv --- 人脸识别、人脸比对

opencv — 人脸比对 1、opencv安装参考: windows: windows 环境下安装OpenCV For Java linux:linux — CentOS 7 环境下编译安装OpenCV For Java 进入到opencv的安装目录: 进入到build\java 目录 2、准备文件 # 1. 特征分类器:windows 和 linux 中的配置文件都一样…

计算机网络:http协议

计算机网络&#xff1a;http协议 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、HTTP协议工作简介1. 特点2. 传输时间分析3. http报文结构 三、HTTP版本迭代1. HTTP1.0和HTTP1.1主要区别2. HTTP1.1和HTTP2主要区别3. HTTPS与HTTP的主要区别 四、参考文献 一、本文内容…

如何操作可以有效的防止其他人修改Excel文件?

工作中&#xff0c;我们经常遇到同一份表格可能需要好多人共同去完成&#xff0c;但是当你整理好数据发给别的同事的时候&#xff0c;等表格再回来的时候&#xff0c;你可能发现你之前设置的资料格式内容等都被修改了&#xff0c;遇到这种情况时&#xff0c;如何操作可以有效的…

Codeforces Round 970 (Div. 3)(A~H)

​​​​​题目链接​​​​​​​​​​​​​​​​​​​​​ A 当 a 为奇数的时候&#xff0c;无论如何配对都无法将最后一个 1 减去&#xff1b; 当 a 为偶数的时候&#xff0c;b 也偶数&#xff0c;自然可以内部通过加减操作变成 0&#xff1b;当 b 为奇数的时候&#…

观察者设计模式详解

观察者设计模式详解 文章目录 观察者设计模式详解一、定义二、观察者模式的结构三、特点四、应用场景五、实现 一、定义 **观察者设计模式&#xff08;Observer Pattern&#xff09;**是一种行为设计模式&#xff0c;也叫做 “发布-订阅模式”&#xff0c; 它定义了一种一对多…

ArcGIS的8个“合并”功能要分清——矢量:编辑器合并,复制粘贴,工具合并、追加、联合——栅格:镶嵌、镶嵌至新栅

​​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 今天来看看ArcGIS中的几个涉及“合并”功能的用法。 对矢量&#xff1a; 包括编辑器中的合…

IOS 20 发现界面(UITableView)歌单列表(UICollectionView)实现

发现界面完整效果 本文实现歌单列表效果 文章基于 IOS 19 发现界面&#xff08;UITableView&#xff09;快捷按钮实现 继续实现发现界面歌单列表效果 歌单列表Cell实现 实现流程&#xff1a; 1.创建Cell&#xff0c;及在使用UITableView的Controller控制器上注册Cell&#x…

uni-app应用更新(Android端)

关于app更新&#xff0c;uni-app官方推荐的是 uni-upgrade-center&#xff0c;看了下比较繁琐&#xff0c;因此这里自己实现检查更新并下载安装的逻辑。 1.界面效果 界面中的弹框和 进度条采用了uView 提供的组件 2.检查更新并下载安装 一、版本信息配置在服务端&#xff0c…

【Azure Redis】Redis-CLI连接Redis 6380端口始终遇见 I/O Error

问题描述 使用Redis-cli连接Redis服务&#xff0c;因为工具无法直接支持TLS 6380端口连接&#xff0c;所以需要使用 stunnel 配置TLS/SSL服务。根据文章(Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel) &#xff1a; https://www.cnblogs.com/luligh…