java导入导出excel_Java导入导出Excel工具 easyexcel

Java导入导出Excel工具  easyexcel

做Java开发的同学,尤其是做管理后台的同学绝大多数都会接触到报表系统,这时候就少不了Excel的导入和导出了。Java解析生成Excel比较有名的有Apache POI ,但是POI存在缺陷就是所有的数据的解析都是在内存中进行的,内存消耗极大,如果数据量稍微一大容易出现内存溢出。alibaba提供的easyexcel就很好的解决了这个问题,不但不会出现内存溢出而且使用也极其方便,下面就一起来简单学习一下吧。

引入依赖包

在maven仓库中搜索 easyexcel 找到 alibaba的easyexcel依赖包,复制添加到pom文件中

f0ae535ecd1fbe631c4a72cc3c8bff59.png

1.简单写操作

1.1写入到指定文件夹

创建需要写出的数据模型 DemoData.class

8f2bbb049c8cc4fcf5e5cd67a13b65a0.png

贴上@ExcelProperty注解表示该字段需要导出到excel中去,value 的值表示该字段导出到excel中的所在列的列名。@ExcelIgnore注解表示忽略该字段,该字段将不会被导出到Excel中去。

1f0300ad795b914a23504408a893f510.png

上图是创建需要导出的示例数据和最终导出excel的代码,excel文件将被写入到 “C:/write/write.xlsx” 路径下。你没有看错真的核心导出代码只有两句就够了。

8145314f2c5452d0bd3839826e9403b0.png

f0bdbd1e03350e55b935693412d881c8.png

上图就是导出的Excel效果图,是不是比POI简单多了呢?

1.2 web中的写

7a29e42f525d076eacd68a1daff3b16b.png

所有的要导出的数据都在response中的outputStream流中,前端通过解析这个流就可以到处Excel文件,由于本人水平有限前端不够熟悉故而只给出后端Java代码。

2.简单读操作

2.1指定导入文件的读

说完了导出再来说说导入吧,导入比导出稍微复杂一点。导入有一个重要的概念叫做监听器。下图就是创建了一个监听器。但是需要强调的一点是 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以用构造方法传进去。

3034f6b3bb36f757839738f024582c9f.png

cb9f54296bfb4edd457f710a05ace75b.png

这里简单的saveData方法中就没有写存入数据库的业务,我们主要看的是有没有成功读入数据这里将读入的数据全部打印在控制台。

ff75161e53670cc9d7cd24d038c10be8.png

由控制台的打印输出可以看出,每读入3条数据也就是达到了自定义的BATCH_COUNT值就调用了一次saveData方法。最后一次只有一条数据是当所有的数据解析完之后最后调用了saveData方法。

2.2web中的读

74678e83764e277eba64d3dafa52ad48.png

此时读入的数据全部在listener中进行解析,然后调用业务方法将读入的数据进行存库就和之前讲的是一样的操作了,这里也只给出Java代码。

好了这就是easyexcel的初步简单用法,如有错误和不足之处请各位大佬不吝赐教!

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

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

相关文章

浅谈.Net Core后端单元测试

1. 前言单元测试一直都是"好处大家都知道很多,但是因为种种原因没有实施起来"的一个老大难问题。具体是否应该落地单元测试,以及落地的程度, 每个项目都有自己的情况。本篇为个人认为"如何更好地写单元测试", 即更加偏向实践向中夹杂一些理论的…

图论的各种基本算法

本篇主要涉及到图论的基本算法,不包含有关最大流的内容。图论的大部分算法都是由性质或推论得出来的,想朴素想出来确实不容易。二分图(Is-Bipartite)一个图的所有顶点可以划分成两个子集,使所有的边的入度和出度顶点分别在这两个子集中。这个…

PowerTip of the Day from powershell.com上周汇总(六)

限制String类型参数的长度 Limiting String Input Length http://powershell.com/cs/blogs/tips/archive/2010/08/23/limiting-string-input-length.aspx function Get-FileName {param([ValidateLength(1,8)][String]$FileName)"Your filename {0} is {1} chars long&quo…

java实现权限_Java实现常用权限控制算法

一种常用的权限控制算法的实现,参考LINUX/UNIX权限编码这里笔者介绍一种很常用,也比较专业的权限控制思路。要换成其他的语言主,自己转一下就可以了。这里用java语言描述,其实都差不多的。为了方便起见,我们这里定义a^b为&#xf…

社区 正式发布了跨平台的 CoreWCF 0.1.0 GA

CoreWCF 项目在2021.2.19 正式发布了0.1.0 GA版本:https://github.com/CoreWCF/CoreWCF/releases/tag/v0.1.0 ,这个版本号虽然是0.1,但是它是可以投入生产的版本,而且是跨平台的,支持LInux部署WCF,当前仅支持http 和 n…

Prim 算法及其高效实现

转自:ivy-endhttp://www.ivy-end.com/archives/943背景最小生成树(Minimum Spanning Trees),简称MST。是图论中一个非常重要的概念。解决这个问题有两种算法,今天暂且先来讨论一下Prim Algorithm。不做特别说明&#x…

Silverlight实例教程 - Validation数据验证开篇

说起来Validation验证功能,相信大家都不陌生,在应用中,当需要用户交互输入时,开发人员都会加入一些验证代码,这样可以有效的避免应用异常出现,也可以使应用的错误提示信息清晰明了的显示在客户端&#xff0…

c语言 java 性能 测试_这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第...

这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第一个是对的啊提交序号1269960作者彭云成提交时间02-0507:49:27评测结果运行错误得分...这个蓝桥杯系统的题,用c语言去评测…

一日一技:微信扫码用户帐号绑定

概述最近在整一个微信扫码用户帐号绑定功能。为了满足用户帐号绑定场景的需要,通过生成用户自己的二维码,用户扫描后,公众号可以接收到事件推送。如下1、用户登录扫码2、绑定成功实现思路扫码绑定账户,其实就是扫描带有用户信息的…

CSS规化

一:简单划分(规模小时) 整站布局:layout.css /*子模块如有特殊布局,可以通过不同的名称写在一起。*/ 公用样式:pubic.css /* 定义些公用字体,颜色,超链接等。*/ 模块样式:module.css /*也…

计算机起源的数学思想

人类的历史可以看做一部关于解放的历史。也有这样的说法,懒惰是人类进步的动力。为了偷懒,人类不断的做着各种努力,发明了各种机器工具,将自己从繁重的劳动解放出来,另一方面,每一次大的进步,都…

java mongodb 批量删除_MONGODB删除/新增/更改大量记录的方法

Indexed(expireAfterSeconds180)private Date deletedAt;以上代码,如果字段deletedAt有值,那么将在180秒后被MONGODB删除,如果没值不会被删除。批量新增,小批量更新,防止读取超时private void insertAll(List list) {…

Redis 通过 RDB 方式进行数据备份与还原

Redis 通过 RDB 方式进行数据备份与还原Intro有的时候我们需要对 Redis 的数据进行迁移,今天介绍一下通过 RDB(快照)文件进行 Redis 数据的备份和还原Redis 持久化Redis 的数据持久化有两种机制,一种是 RDB(Redis Database)&#…

java proguard 使用_一步步教你使用Proguard混淆Java源代码

ava代码很容易被反编译,以下使用proguard来保护我们的代码proguard选项很多,容易迷糊,现在就把我的配置写下来(实际使用中),以供参考2.准备好你的jar包,我在这里举例叫做test.jar。3.解压proguard,执行 bin…

vi的使用

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方…

稳定匹配问题——稳定婚姻算法设计

图片源自&#xff1a;美剧《How I met your mother》****本代码带有详细的注释&#xff0c;并在控制台输出时详细地说明了算法的过程&#xff0c;非常有助于新手理解稳定匹配问题和稳定婚姻算法的设计思路。****#include <iostream>using namespace std;bool finish_or_n…

如果诸葛亮用C#写出师表...

❝看到一篇18年的文章 "C版《出师表》"&#xff0c;站长觉得挺有意思的&#xff0c;就用C# 控制台也实现了一遍&#xff0c;技术上没啥难度&#xff0c;但复制代码费了1、2个小时&#xff0c;纯粹无聊写着玩&#xff0c;看者别在意枚举、类名、变量中文命名&#xff…

简单的作好服务器安全的几个步骤

一.停掉Guest 帐号 在计算机管理的用户里面把guest帐号停用掉&#xff0c;任何时候都不允许guest帐号登陆系统。为了保险 起见&#xff0c;最好给guest 加一个复杂的密码&#xff0c;你可以打开记事本&#xff0c;在里面输入一串包含特殊字符,数 字&#xff0c;字母的长字符…

java蛮力法背包问题_[算法课]五种蛮力法解决01背包问题

文章目录注明&#xff1a;题目要求只能使用蛮力法算法标签&#xff1a;全排列&#xff0c;枚举&#xff0c;二进制&#xff0c;dfs&#xff0c;数组题目简介思路AC代码方法一&#xff1a;字符串蛮力方法二&#xff1a;二进制枚举方法三&#xff1a;DFS三.&#xff12;闫老板思考…

这16个数据可视化案例,惊艳了全球数据行业

数据可视化可以帮你更容易的解释趋势和统计数据。数据是非常强大的。当然&#xff0c;如果你能真正理解它想告诉你的内容&#xff0c;那它的强大之处就更能体现出来了。通过观察数字和统计数据的转换以获得清晰的结论并不是一件容易的事。必须用一个合乎逻辑的、易于理解的方式…