easy-excel

excel如何分别实现按行读和按列读呢

空扰寡人 提交于 2020-07-27 11:04:32
近期有个需求,说是要用到excel导入导出,一般我们的想法都是按照行数,于是实现了,后面发现公司需求的是列读,甚至不规则的单个excel的读。于是就用poi自己写了按照单元格读的实现。 一、按行读 想起了之前用到的poi,经过搜索发现,开源的项目中有比较好的封装poi的框架,一个是阿里出的easyExcel,另一个是easypoi,感觉使用起来都很方便。网上说easyExcel能解决大文件内存溢出问题,于是项目中就使用easyExcel了。 简单普及下easyExcel原理,不做底层码农,了解点上层设计有好处: easyExcel核心原理 写有大量数据的xlsx文件时,POI为我们提供了SXSSFWorkBook类来处理,这个类的处理机制是当内存中的数据条数达到一个极限数量的时候就flush这部分数据,再依次处理余下的数据,这个在大多数场景能够满足需求。 读有大量数据的文件时,使用WorkBook处理就不行了,因为POI对文件是先将文件中的cell读入内存,生成一个树的结构(针对Excel中的每个sheet,使用TreeMap存储sheet中的行)。 如果数据量比较大,则同样会产生java.lang.OutOfMemoryError: Java heap space错误。POI官方推荐使用“XSSF and SAX(event API)”方式来解决。

【maven】idea的pom文件修改,引入新的jar包,无效,本地仓库始终没有下载新jar包的问题解决【idea pom Dependency not found】

余生颓废 提交于 2020-05-07 11:05:07
引入问题: idea的pom文件修改,引入新的jar包,无效,本地仓库始终没有下载新jar包的问题解决【idea pom Dependency not found】 如题,引入一个新的jar包,在项目的pom文件中: <!-- 阿里巴巴easyexcel --> < dependency > < groupId > com.alibaba </ groupId > < artifactId > easyexcel </ artifactId > < version > 2.0.5 </ version > </ dependency > 或者如下引入任意一个jar包,都提示:Dependency not found 而且,本地仓库中一点动静都没有,这个jar包压根就没有下载下来,就像是修改pom文件没有任何作用一样。 怀疑点【一一排除法】: 一直怀疑是idea中maven配置的相关问题。 又或者是需要重新导入: 又或者是需要刷新缓存并重启: 又或者是下载源码: 又或者是maven仓库配置文件setting.xml中的 远程仓库的配置问题: 又或者是需要 clean并且重新 build或者install 解决方法: 最后发现,其实都不是,是因为把jar包的maven依赖放入了 <dependencyManagement> 标签中的 <dependencies> 标签中。 从而导致

TestLink在线Excel用例转换xml

試著忘記壹切 提交于 2020-05-02 00:42:38
【原文链接】: https://blog.tecchen.tech ,博文同步发布到博客园。 由于精力有限,对文章的更新可能不能及时同步,请点击上面的原文链接访问最新内容。 欢迎访问我的个人网站: https://www.tecchen.tech 。 Git仓库地址:【 TestLink-SpringBoot使用EasyExcel和BootStrap FileInput上传Excel 】 项目功能 TestLink在线Excel用例转换xml 将符合用例模板的Excel测试用例,转换成xml,用于导入TestLink进行用例管理。 使用方法 1、编写测试用例 2、打开本项目 http://localhost:8080,浏览选择文件,点击图标上的上传icon 3、选择sheet名称 4、点击点我转换按钮,后台处理好数据后,点击确定按钮,下载生成的xml文件。 5、在tesklink中,导入生成的xml用例。 技术框架 SpringBoot使用EasyExcel和BootStrap FileInput上传Excel 后端 springboot springmvc easyexcel jdom2 前端 jquery v1.12.4 Bootstrap v4.3.1 bootstrap-fileinput v5.0.1 jquery-confirm v3.3.0 遇到的坑 1

【基础设计】Spring整合EasyExcel

人盡茶涼 提交于 2020-05-01 23:19:25
前言 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便。 <p align="right">——<a href="https://github.com/alibaba/easyexcel" target="_blank">easyexcel</a></p> 起步 maven or gradle springboot api or blog 快速上手 EasyExcelApi EasyExcelGitHubUrl 简单需求demo demo地址 喜欢直接看项目的可以直接 >> demo-easy-excel 内容大致浏览 引入easyexcel 引入easyexcel (maven为例),引入easyexcel <dependency> <groupId>com.alibaba</groupId>

【软件工具】easyExcel简明使用指南

北战南征 提交于 2020-05-01 19:28:19
easyExcel简介 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。 easyExcel是阿里巴巴开源的一个excel处理框架, 以使用简单、节省内存著称 。 64M内存1分钟内读取75M(46W行25列)的Excel(当然还有急速模式能更快,但是内存占用会在100M多一点) easyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。 下图是easyExcel和POI在解析Excel时的对比图。 easyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)。 上面简要介绍了easyExcel的特点和原理,关于easyExcel的其他问题可以先参考下这个 文章 。下面就通过代码来介绍下怎么使用easyExcel。 快速使用指南 文件上传读取Excel 下面通过一个读取用户信息的列子来展示下怎么使用easyExcel。 step1:创建用户信息类 @Data public class UserInfo extends BaseRowModel {

EasyExcel示例(阿里巴巴)基于Maven

泄露秘密 提交于 2020-05-01 19:27:29
首先感谢阿里巴巴提供了easyexcel工具类,github地址: https://github.com/alibaba/easyexcel 注意!!这里只是一个简单的示例,VC大法即可使用,对于复杂的execl导出可能会出现问题。 另Execl文件后缀为xlsx。    1、环境搭建      jar包依赖 <!-- excel导入导出插件 --> < dependency > < groupId > com.alibaba </ groupId > < artifactId > easyexcel </ artifactId > < version > 1.1.2-beat1 </ version > </ dependency >      2、代码 public class MyExcel { // 读 @Test public void simpleRead() { FileInputStream fileInput; try { fileInput = new FileInputStream("F://javaio文件目录//hss.xlsx" ); List <Object> read = EasyExcelFactory.read(fileInput, new Sheet(0,0 )); System.out.println(read); } catch

java五行代码导出Excel

走远了吗. 提交于 2020-05-01 19:00:40
[TOC] 已经写过两种Excel导出插件了。今天再安利一个极简的导出Excel的框架,导出无特殊格式要求的Excel,只需五行代码; 先看代码 再看效果 EasyExcel 本案例用到的框架是阿里推出的EasyExcel,EasyExcel从第一次提交代码(2018年2月)到现在,在GitHub上已经获得6590个Star 以下是 官方 介绍 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到KB级别,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便 使用EasyExcel导出Excel,其特殊之处在于对实体类的处理,需要将被导出的实体类继承自com.alibaba.excel.metadata.BaseRowModel; 然后在属性上通过注解com.alibaba.excel.annotation.ExcelProperty;设置表头及样式 pom

基于注解的读取excel的工具包

本秂侑毒 提交于 2020-05-01 18:28:28
easyexcel-wraper easyexcel-wraper是什么? 一个方便读取excel内容,且可以使用注解进行内容验证的包装工具 easyexcel-wraper有哪些功能? 在easyexcel的基础上进行封装,方便读取excel内容,避免在主业务代码中嵌入重复繁琐的样本代码 支持Hibernate-validator验证框架,可以使用诸如@NotBlank,@NotDuiplicate的注解 如何使用 1、新建一个JavaBean用于接收excel内容,并继承ExcelRow基础类,如:新建MyRow.java import com.alibaba.excel.annotation.ExcelProperty; import com.wuyue.excel.ExcelRow; import com.wuyue.excel.validate.NotDuplicate; import lombok.Getter; import lombok.Setter; import lombok.ToString; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotBlank; @Getter @Setter @ToString public

EasyExcel工具类,使用示例

允我心安 提交于 2020-05-01 15:56:32
工具类: 1、ExcelUtil.java public class ExcelUtil<T> { /*** * 读取Excel方法 */ public static <T extends BaseRowModel> ArrayList<T> readExcel(MultipartFile excel, Class<T> clazz) { try { InputStream in = new BufferedInputStream(excel.getInputStream()); GeneralExcelListener<T> listener = new GeneralExcelListener<>(); ExcelReader excelReader = new ExcelReader(in, ExcelTypeEnum.XLS, listener); excelReader.read(new Sheet(1, 1, clazz)); return listener.getSuccessDatas(); } catch (Exception e) { return new ArrayList<T>(); } } /** * 导出 Excel :一个 sheet,带表头 * * @param response HttpServletResponse * @param list

freemarker导出复杂样式的Excel

本小妞迷上赌 提交于 2020-04-30 19:55:03
freemarker导出复杂样式的Excel 代码地址: gitee https://gitee.com/suveng/demo/tree/master/chapter.002 代码存放于demo下面的chapter.002目录下, 每个模块都是独立开的springboot应用,可以直接运行 application 环境 springboot 2.1.2 Freemarker 2.3.28 JDK1.8 步骤 1.找到对应Excel模板 我在网上找了一网站下载了一个Excel模板, 地址 下载的文件是 2018库存表 2.Excel模板导出为xml格式 将其导出为xml格式;直接文件另存为即可 删除多余的数据, 将模板变量填进去, 这个变量是需要符合 freemarker 的变量规则的; 具体内容可参考 文件 3.替换freemarker变量 关键修改: <#list products as product> <Row> <Cell> <Data ss:Type="String">${product.name!}</Data> </Cell> <Cell> <Data ss:Type="String">${product.number!}</Data> </Cell> <Cell> <Data ss:Type="String">${product.type!}</Data> <