EasyExcel操作API与示例_1904 windowing-程序员宅基地

技术标签: 常用类库API  

1. maven

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.2</version>
        </dependency>

2. 注解

ExcelProperty    指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。不写,默认按顺序匹配
        value     名头名称
        index    字段与列数对应索引
        converter    字段转化器
ExcelIgnore    默认所有字段都会和excel去匹配,加了这个注解会忽略该字段
DateTimeFormat    日期转换,用String去接收excel日期格式的数据会调用这个注解。
        value  SimpleDateFormat格式方式 y(年) M(月 )d(日) h(时) m(分) s(秒)
        use1904windowing 是否使用1904windowing
NumberFormat    数字转换,用String去接收excel数字格式的数据会调用这个注解。
       value    DecimalFormat格式方式 ##.00
       roundingMode    取舍方式
ExcelIgnoreUnannotated    默认不加ExcelProperty 的注解的都会参与读写,加了不会参与
ColumnWidth    设置宽
        value    数值
ContentRowHeight    设置高
        value    数值
HeadRowHeight    设置头高
        value    数值

3. Excel读入

3.1 常用操作API

3.1.1 初始化方法

初始化获取Excel读取构造对象(ExcelReaderBuilder)

构造方法 描述
EasyExcel.read() 无参初始化,各属性由方法添加
EasyExcel.read(File file) 文件来源 File,可分别设置对象class和监听器
EasyExcel.read(File file, ReadListener listener)
EasyExcel.read(File file, Class head, listener listener)
EasyExcel.read(String path) 文件来源 FilePath,可分别设置对象class和监听器
EasyExcel.read(String path, ReadListener listener)
EasyExcel.read(String path, Class head, ReadListener listener)
EasyExcel.read(InputStream in) 文件来源 InputStream,可分别设置对象class和监听器
EasyExcel.read(InputStream in, ReadListener listener)
EasyExcel.read(InputStream in, Class head, ReadListener listener)

3.1.2 操作方法

ExcelReaderBuilder对象操作方法,添加属性,获取Excel读取对象(ExcelReader),Sheet构造对象(ExcelReaderSheetBuilder)

功能 方法 描述
Excel属性设置
(ExcelReaderBuilder)
.head(T.class) 添加 对象class
.file(File file) 添加 文件,可以是File对象,文件路径,输入流
.registerReadListener(new MyListener()) 注册 读取监听器
.registerConverter(new MyConverter()) 注册转化器
.headRowNumber(1) 设置头行数,默认为1
.autoTrim(true) 设置是否去两端空格,默认为 true
.ignoreEmptyRow(true) 设置忽略空行,默认为 true
.use1904windowing(true)  
.mandatoryUseInputStream(true) 强制使用输入流
.excelType(ExcelTypeEnum.XLSX); 设置类型,默认自动
.autoCloseStream(true) 自动关流
.readCache(new MyReadCache()) 设置自定义缓存
.readCacheSelector(new MySelector()) 设置缓存选择器
.customObject(null)  
.password("")  
.xlsxSAXParserFactoryName("")  
ExcelReaderBuilder方法;
获取Excel属性设置
(ExcelReader)
.build() 构建ExcelReader对象
.doReadAll() 读取所有数据,可配置监听器读取
ExcelReaderBuilder方法;
获取sheet构造对象(ExcelReaderSheetBuilder)
.sheet() 获取sheet构造器,
excelReader方法 .readAll() 读取所有数据,可配置监听器读取
.finish() 关流  
.read(ReadSheet  readSheet ) 数据读取,参数是ReadSheet ,list,不定参
ExcelReaderSheetBuilder方法;
Sheet构造器属性添加
.headRowNumber(1) 设置头行数,默认为1
 .head(T.class) 设置实体类
.sheetNo(1)      设置 sheet 索引
.sheetName("") 设置 sheet 名称
.registerReadListener(new MyListener())     注册监听器
.registerConverter(new MyConverter()) 注册转换器
.use1904windowing(true)                 
.autoTrim(true); 自动去两边空格
ExcelReaderSheetBuilder方法;
(数据读取)
 sheet.doRead(); 异步读取,在监听器中进行数据处理
 sheet.doReadSync(); 同步读取,返回结果集

 3.2 操作实例

//异步读取所有sheet数据,文件可为File,路径,输入流;不设置T.class时,监听器监听数据为List<map>结构,三个参数都可在方法中设置
EasyExcel.read(file,T.class,new MyListener()).doReadAll();
//异步读取所有sheet数据,可在sheet方法参数中指定sheet索引,sheet名称
EasyExcel.read(file,T.class,new MyListener()).sheet().doRead();
//同步读取所有sheet数据,返回list数据,可在sheet方法参数中指定sheet索引,sheet名称
List<Object> list = EasyExcel.read().sheet().doReadSync();
//读取数据的其他方式
ExcelReader excelReader = EasyExcel.read(fileName, T.class, new MyListener()).build();//构建Excel读取对象
        ReadSheet build = EasyExcel.readSheet(0).build();//构建Sheet读取对象
        excelReader.read(build);//读取数据
        excelReader.finish();//关流

4. Excel读入

4.1 常用操作API

4.1.1 初始化方法

初始化获取Excel写出构造对象(ExcelWriterBuilder)

构造方法 描述
EasyExcel.write() 无参初始化,各属性由方法添加
EasyExcel.write(File file) 文件输出源File,文件路径,输出流,可设置class
EasyExcel.write(File file,Class head)
EasyExcel.write(String pathName)
EasyExcel.write(String pathName,Class head)
EasyExcel.write(OutputStream outputStream)
EasyExcel.write(OutputStream outputStream,Class head)

4.1.2 操作方法

ExcelWriterBuilder对象操作方法,添加属性,获取Excel读取对象(ExcelWriter),Sheet构造对象(ExcelWriterSheetBuilder)

各对象公共设置属性方法:

对象 方法 描述
Excel属性设置
(ExcelWriterBuilder)
.head(T.class) 添加 对象class
.registerConverter(new MyConverter()) 注册转换器
.useDefaultStyle(true) 是否使用默认样式
.automaticMergeHead(true)          . 是否自动合并表头
.excelType(ExcelTypeEnum.XLSX) 设置文件类型
.relativeHeadRowIndex(1) 头行索引
 .includeColumnFiledNames(null)          导出列包含字段名集合
 .includeColumnIndexes(null) 导出列包含索引集合
.excludeColumnFiledNames(null) 导出列排除字段名集合
.excludeColumnIndexes(null) 导出列排除索引集合
.registerWriteHandler(new MyWriteHandler()); 注入写出处理器
.needHead(true) 是否需要表头
     

 各对象私有方法:

功能 方法 描述
Excel属性设置
(ExcelWriterBuilder)
   
.file(File file) 添加 文件,可以是File对象,文件路径,输入流
.autoCloseStream(true) 是否自动关流
.password("") 设置密码
.inMemory(true) 记忆
.writeExcelOnException(true) 异常时写出
.withTemplate("") 加载模板 
ExcelWriterBuilder方法;
获取Excel属性设置(ExcelWriter)
write.build();  
ExcelWriterBuilder方法;
获取Sheet构造器(ExcelWriterSheetBuilder)
write.sheet();  
ExcelWriter方法 .write(List data, WriteSheet writeSheet) 可添加WriteTable参数
.fill(Object data, WriteSheet writeSheet) 可添加FillConfig参数
.finish(); 关流
.writeContext();  
ExcelWriterSheetBuilder方法
属性添加
.sheetName()  
.sheetNo()  
ExcelWriterSheetBuilder方法
操作方法
.doFill(Object o); 数据填充,可添加FillConfig参数
.doWrite(List data) 数据写出,可添加WriteTable参数
ExcelWriterSheetBuilder方法 .sheet.build() 构建Excel写出对象(WriteSheet)
ExcelWriterSheetBuilder方法 .sheet.table(); 获取表格构建对象(ExcelWriterTableBuilder)
可填参数 表格索引
ExcelWriterTableBuilder方法 .build();         构建Excel表格对象(WriteTable)
.doWrite(); 数据写出
WriteSheet方法 .getColumnWidthMap(); 获取列映射,set方法设置
.getSheetName(); 获取Sheet名,set方法设置
.getSheetNo(); 获取Sheet号,set方法设置
.getTableStyle(); 获取表样式,set方法设置
WriteTable方法 .getTableNo(); 获取表格号,set方法设置
.getTableStyle(); 设置表格样式,set方法设置
     

 

4.3 操作实例

//操作方式1  数据导出,可导出到File,文件路径,输出流
EasyExcel.write(fileName, T.class).sheet("sheetName").doWrite(List<T> list);
//操作方式2 
ExcelWriter excelWriter = EasyExcel.write(fileName, T.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
    excelWriter.write(List list, writeSheet);
    excelWriter.finish();
//操作方式3  导出指定列数据
EasyExcel.write(fileName, T.class).includeColumnFiledNames(Set<String> columnFiledNames).sheet("sheetName")
        .doWrite(List<T> list);

注:更多实例点击查看 easyExcel官网

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41609208/article/details/103318509

智能推荐

数据结构与算法(周鹏-未出版)-第六章 树-6.2 二叉树-程序员宅基地

文章浏览阅读93次。6.2 二叉树在进一步讨论树的存储结构及其操作之前,先讨论一种简单而极其重要的树结构—二叉树。因为任何树都可以转化为二叉树进行处理,并且二叉树适合计算机的存储和处理,因此在本章中二叉树是研究的重点。6.2.1 二叉树的定义每个结点的度均不超过 2 的有序树,称为二叉树( binary tree)。与树的递归定义类似,二叉树的递归定义如下:二叉树或者是一棵空树,..._数据结构c语言算法6.2

Linux入坑第一天_物理服务器品牌-程序员宅基地

文章浏览阅读243次。服务器品牌说明DELL 戴尔服务器互联网公司应用最广HP惠普服务器部分互联网公司应用IBM服务器较高大上的服务器,有些传统大型企业会用,百度也在用IBM服务器浪潮国产服务器,传统企业、学校用华为国产服务器联想国产服务器,用户较广、杂..._物理服务器品牌

二十一世纪大学英语读写教程(第四册)学习笔记(原文)——6 - The EQ Factor(情商因素)_eqisnotthe opposite-程序员宅基地

文章浏览阅读2k次。Unit 6 - The EQ Factor(情商因素)The EQ FactorNancy GibbsIt turns out that a scientist can see the future by watching four-year-olds interact with a marshmallow. The researcher invites the children, one by one, into a plain room and begins the gentle torm_eqisnotthe opposite

python如何将三维图变成动态_python图片转矩阵python中读取图片的方式,以及将图片以三维数组的形式输出...-程序员宅基地

文章浏览阅读226次。1、图像转换为矩阵matrix = numpy.asarray(image)2、矩阵转换为图像image = Image.fromarray(matrix)近期做个小项目需要用到python读取图片,自己整理了一下两种读取图片的方式,其中一种用到了TensorFlow,(TensorFlow是基于python3 的)。代码及运行结果如下所示:import numpy as npfrom PIL i..._img = image.fromarray(martix)

ubuntu20.04重装nvidia驱动之后无法正常进入图形化界面_ubuntu20 安装nvidia图形界面-程序员宅基地

文章浏览阅读1w次,点赞17次,收藏70次。ubuntu20.04内核自动升级之后,nvidia-smi显示NVIDIA-SMI has failed because it couldn’t communicate with the NIVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.重装驱动之后无法正常进去图形化界面1.问题来源:Linux内核自动升级之后,nvidia驱动和内核驱动不匹配?其中一个解决方法是重启ubuntu的时候,进去高_ubuntu20 安装nvidia图形界面

利用图割算法立体匹配_graph cuts匹配-程序员宅基地

文章浏览阅读6k次。Stereo Matching by Graph-cut TechniquesCONTENTSMaximum flow problemFord-Fulkerson max-flow algorithmGoldberg-Tarjan push-label max-flow algorithmEnergy minimization via graph cuts: a binary case_graph cuts匹配

随便推点

[git]使用git+gitee实现在两台电脑数据同步_git 两台电脑同步-程序员宅基地

文章浏览阅读5k次,点赞8次,收藏40次。使用git完成两台电脑的文件共享_git 两台电脑同步

『VulnHub系列』symfonos: 3-Walkthrough_kali nc -lncp 1234-程序员宅基地

文章浏览阅读969次。靶机发布日期:2019年7月20日。经过了曲折的页面、目录枚举,发现shellshock漏洞,随后使用MSF获取到了shell。提权过程中先后使用手工、脚本对信息进行收集,最后使用pspy发现了root权限运行的ftpclient.py脚本。tcpdump嗅探到ftp服务的用户名、密码,随后登录SSH,修改ftpclient.py脚本获得root权限。_kali nc -lncp 1234

推荐系统实践_运行推荐系统代码-程序员宅基地

文章浏览阅读1.1k次。1、了解推荐系统相关知识http://baike.baidu.com/link?url=k-FW73rnBC-xBHik2gL7pS1_-1JjJfFG1MocfB8gnfza5hFo5H9HKHVytEZhuVOiHTvmK7a6llFDY2oAmCjiy_2、推荐引擎知识1)探索推荐引擎内部的秘密,第1 部分: 推荐引擎初探2)探索推荐引擎内部的_运行推荐系统代码

SAP License:ERP对供应链管理和实施-程序员宅基地

文章浏览阅读110次。如果凭直觉来判断,对安全性、稳定性要求很高的能源与资源行业通常会倾向于采用成熟的软件产品。出人预料的是,今年年初才推出的SAPS/4HANA却备受能源与资源行业的青睐,能源与资源行业带来的S/4HAHA收入在SAP整个行业市场中是数一数的。这到底是为什么?让我们来听听SAP公司能源与资源行业总经理麦恩平怎么说。SAPS/4HANA就是答案。”SAP公司能源与资源行业总经理麦恩平(PeterMaier)近日在谈完能源与资源行业所面临的挑战和问题后,反复这样强调。S/4HANA就是答案“能源与资

丈八网安王珩:带你重新认识网络靶场_公共靶场 网安-程序员宅基地

文章浏览阅读1.4k次。开拓网络靶场新思路_公共靶场 网安

【万字总结】个性化推荐系统学习-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏7次。在这场娱乐的搏杀中,每个人终将是杀死自己的凶手。前言从最初接触个性化推荐系统已过去六天。今天是第七天,完全可以对前六日的学习做出复盘。推荐系统并没有如同网络上那般盛传的玄秘深晦,而是直白..._个性化试题推荐系统难点

推荐文章

热门文章

相关标签