Java中Excel高效解析工具EasyExcel的实践
作者:心城以北 发布时间:2023-05-28 13:36:38
标签:java,easyexcel,解析
参考资料:alibaba-easyexcel.github.io
简介
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
maven 依赖如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
读 Execl 实践
数据读取代码如下:
先获取文件流,比如 test-data.xls;
SkuModel是一个解析类;
SkuModelReadListener中进行读取到的数据处理。
InputStream excelStream = ExcelToolMain.class.getClassLoader().getResourceAsStream("test-data.xls");
EasyExcel.read(excelStream, SkuModel.class, new SkuModelReadListener()).sheet().doRead();
写 Execl 实践
写数据代码如下:
首先我们需要设定写入文件的文件名
然后设置写入的数据类 SkuModel.
data() 是用来获取数据的,其实就是返回,构建一个 List<SkuModel> 数据集合。
String fileName = ExcelToolMain.getPath() + "write" + System.currentTimeMillis() + ".xlsx";
EasyExcel.write(fileName, SkuModel.class).sheet().doWrite(data());
模板填充
为了解决 excel 模板样式的支持,我们可以使用模板方式来进行数据填充:
模板样式如下:
填充的效果如下:
代码如下:
// 文件名
String fileName = ExcelToolMain.getPath() + "fillOps" + System.currentTimeMillis() + ".xlsx";
// 数据对象
FillData fillData = new FillData();
fillData.setName("张三");
fillData.setNumber(5.2);
// 写入
EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(fillData);
文件追加
文件追加,感觉在 EasyExcel 中其实是一个流的多写,最后写完后关闭。代码如下:
ExcelWriter excelWriter = null;
try {
// 这里 需要指定写用哪个class去写
excelWriter = EasyExcel.write(fileName, SkuModel.class).build();
// 这里注意 如果同一个sheet只要创建一次
WriteSheet writeSheet = EasyExcel.writerSheet(sheet).build();
for (int i = 0; i < 5; i++) {
// 分页多次写
excelWriter.write(data(), writeSheet);
}
} finally {
// 一定要 finish,表示文件写完毕,会关闭流
excelWriter.finish();
}
来源:https://juejin.cn/post/7089457416378679332
0
投稿
猜你喜欢
- 1.在实体类中添加@TableId注解:2.在navicat中设置id自动增长:3.测试一下,当我们再次插入的时候,就会看到id4.对注解中
- 工厂方法模式动机创建一个对象往往需要复杂的过程,所以不适合包含在一个复合工厂中,当有新的产品时,需要修改这个复合的工厂,不利于扩展。而且,有
- 本文章牵涉到的技术点比较多:spring Data JPA、Redis、Spring MVC,Spirng Cache,所以在看这篇文章的时
- 简介ThreadPoolExecutor是一个实现ExecutorService接口的线程池,ExecutorService是主要用来处理多
- 最近遇到一个调试很久的问题,MyBatis 查询 Oracle 数据库查询结果与在客户端查询结果不一致。问题引入测试表、测试数据创建测试表、
- springboot 多个filter的执行顺序以及配置当项目中有多个filter时,为了便于管理,可以创建一个配置文件,对所有的filte
- 本文实例讲述了Android实现的数字格式化用法。分享给大家供大家参考,具体如下:package formatnumber;import j
- 1、添加一个App.config配置文件。2、配置服务http://Lenovo-PC:80/EvisaWS/WharfService?ws
- 本文实例讲述了java取两个字符串的最大交集的实现方法,分享给大家供大家参考。具体实现方法如下:package com.itheima.ne
- IDEA版本:2020.3具体步骤一、开启IDEA的自动编译【静态】1.File->Settings。2.直接搜索Compiler,选
- 前提:集成开发环境(IDE):eclipsejdk版本:8.0File类的几个方法:1)isFile()测试此抽象路径名表示的文件是否为普通
- 前言:线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、
- SpringBoot 集成 activiti 基础环境搭建添加依赖<dependency> <groupId&g
- 小总结抛出异常:创建异常对象,封装异常信息然后通过throw将异常对象传递给调用者。不对异常进行处理只对异常进行抛出是非常不负责任的表现可以
- 绝对路径:不可改变的路径本地绝对路径:增加盘符的路径(e:/test/test.html)网络绝对路径:增加协议,IP地址,端口号的路径(h
- 这篇文章主要介绍了Spring整合MyBatis图示过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 这篇文章主要介绍了springboot 定时任务@Scheduled实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的
- 本文实例汇总了Java各种排序算法。分享给大家供大家参考,具体如下:1. 冒泡排序:public class SortTest { pub
- java 三种将list转换为map的方法详解 在本文中,介绍三种将list转换为map的方法:1) 传统方法假设有某个类如下&n
- 异常处理是每个项目中都绕不开的话题,那么如何优雅的处理异常,是本文的话题。本文将结合SpringBoot框架一起和大家探讨下。要思考的问题在