EasyExcel进阶教程

EasyExcel进阶教程

  • EasyExcel进阶教程
    • 概述
      • 一、关于表头
        • 1.1 多级表头
        • 1.2 ExcelProperties注解的index字段和order字段的第一个区别
        • 1.3 ExcelProperties注解的index字段和order字段的第二个区别
        • 1.4 表头单元格的合并
      • 二、动态表头
      • 三、样式设置
        • 3.1 表头样式设置
        • 3.2 数据样式设置

EasyExcel进阶教程

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便。

——引自EasyExcel官网

概述

EasyExcel官网对读和写(其中包括常规的导出和模板填充的导出)的基础操作已经很到位了。但也仅仅是基础操作。在实际应用中,对Excel的解析往往会有更加复杂的操作,比如动态表头、表头样式动态设置、单元格内容设置(如下拉框)等等。笔者结合自己的使用经验,对一些官网示范不是很明显的功能在此进行简单介绍,可能会不定时持续更新

一、关于表头

1.1 多级表头

EasyExcel支持多级表头,其表现形式如下图:
在这里插入图片描述
以上例图中,用户数据汇总为一级表头;ID、用户名称为二级表头。多级表头在实际应用中也比较常见。其代码实现也很简单,只需要设置对应实体类中@ExcelProperties注解中的value字段值即可:

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;@Data
public class DemoData {@ExcelProperty(value = {"用户数据汇总", "ID"}, index = 0)private String id;@ExcelProperty(value = {"用户数据汇总", "用户名称"}, index = 1)private String userName;
}

@ExcelProperties注解中的value字段类型为一个字符串数组,该数组的长度即为Excel中表头级数。而index则为字段的排序,且为严格排序。

1.2 ExcelProperties注解的index字段和order字段的第一个区别

何谓严格排序?换句话说,就是index=0的字段一定会出现在A列,index=2的字段一定会出现在C列。再换句话说,如果你的实体类中的index的值不是连续的,那就意味着你导出的Excel中会有空白列。比如下面的实体类:

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;@Data
public class DemoData {@ExcelProperty(value = {"用户数据汇总", "ID"}, index = 0)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

命令行中,Python 想使用本地环境,但总是显示为Anaconda的虚拟环境

电脑环境 Python 本地环境(Python3.9.5)Anaconda 虚拟环境(Python3.8.8) 遇到的问题 在cmd 中,我想在本地环境使用 Python、pip ,但它却是一直识别成Anaconda的虚拟环境。 解决方法 环境变量配置中&am…

010.理解异步性

异步消息传递是响应式系统的一个关键特性。但到底是什么异步性,为什么它对响应式应用程序如此重要?我们的人生注定在许多异步任务中。你可能没有意识到,但你的日常活动如果它们本质上不是异步的,那就太烦人了。要理解什么是异步,…

VC++6.0 常用的文件对话框和目录选择对话框

1,文件对话框 //1,弹出文件打开对话框CString strFileName "";char szFilter[] {"exe files(*.exe)|*.exe|All Files(*.*)|*.*|"};CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL);if(dlg.DoModal() …

Android中使用Palette让你的页面UI优雅起来

文章目录 1. 什么是Palette2. 引入Palette3. 使用 Palette3.1 同步方式3.2 异步方式3.3 获取色调值 4. 举例4.1 布局文件 activity_palette_list.xml ⬇️4.2 Activity:PaletteListActivity⬇️4.3 列表Adapter:PaletteListAdapter ⬇️4.4 列表item布局…

购买商用ssl证书并在windows服务器IIS上配置https域名(案例为阿里云)

阿里云、华为云等各路云都有ssl证书购买,价格相差不大,操作也都差不多,请自行选择。 本文以阿里云操作为案例。 购买SSL证书 点击购买 付款买入 注意,如果自己搞起来有问题,阿里购买的时候建议选择申请协助服务。购买…

Mysql数据库二进制日志导致磁盘满了处理过程

数据库的二进制日志是数据库管理系统(DBMS)用来记录所有对数据库进行修改的操作的记录。这种日志对于数据库的备份、恢复、复制和审计等操作至关重要。 以MySQL数据库为例,二进制日志(Binary Log)记录了所有更改数据的…

小白必看:新手学编程必会的100个代码

前言 我记得刚开始接触编程的时候,觉得太难了。 也很好奇,写代码的那些人也太厉害了吧?全是英文的,他们的英文水平一定很好吧? 他们是怎么记住这么多代码格式的?而且错了一个标点符号,整个程…

[图解]SysML和EA建模住宅安全系统-03

1 00:00:00,490 --> 00:00:01,180 怎么加 2 00:00:01,570 --> 00:00:04,380 我们来看,这是刚才那个图 3 00:00:05,200 --> 00:00:06,390 17.7 4 00:00:07,150 --> 00:00:08,260 我们同样在这里加 5 00:00:08,430 --> 00:00:10,100 同样在这个下面…

so-vits-svc:AI翻唱,语音克隆

前言 这个项目是为了让开发者最喜欢的动画角色唱歌而开发的,任何涉及真人的东西都与开发者的意图背道而驰。 项目地址:https://github.com/svc-develop-team/so-vits-svc/blob/4.1-Stable/README_zh_CN.md 安装 可以自行配置,应该也不难 …

vue网页端控制台展示独有标记

效果展示 实现步骤 1. 新建js文件 定义一个类 用于提供控制台打印日志显示样式的方法 src\libs\util.log.js class Logger {// 定义静态方法static typeColor(type "default") {let color "";switch (type) {case "default":color "#3…

WebLogic SSL应用

SSL 安全套接字层(SSL)是通过在客户端和Web服务器端之间进行身份验证,并对双方交换的数据进行加密,从而提供安全连接。 验证类型: 单向:客户端验证Web服务器端证书 双向:客户端验证Web服务器证书, Web服务器验证客户端证书 Weblogic Server12c 支持 SSL 3.0 和 TLS1.0 …

C++列表实现

文章目录 一、listView相关内容主要思想实例全部代码 二、QTreeView 一、listView 相关内容 QAbstractItemModel:一个抽象的类,为数据项模型提供抽象的接口,常见的的数据模型列如:QStringListModel,QStandardItemMode,QDirModel…