poi

【软件工具】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 {

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

一行代码完成 Java的 Excel 读写--easyexcel

天涯浪子 提交于 2020-05-01 18:27:32
最近我在 Github 上查找一个可以快速开发 excel 导入导出工具,偶然发现由阿里开发 easyexcel 开源项目,尝试使用后感觉这款工具挺不错的,下面分享一下我的 easyexcel 案例使用。 1、easyexcel 简介 一般在项目可能会涉及到 Excel 导入和导出,通常我们都是使用 Apache POI 或者 jxl。但他们都存在一个严重的问题就是非常的耗内存,POI 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 依旧存在一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。而 easyexcel 重写了 POI 对 07 版 Excel 的解析,能够原本一个 3M 的 Excel 用 POI SAX 依然需要 100M 左右内存降低到 KB 级别,并且再大的 Excel 不会出现内存溢出,03 版依赖 POI 的 SAX 模式。在上层做了模型转换的封装,使用起来更加方便。 2、项目结构 2.1、pom.xml 2.2、模型 @Data 是 Lombok 插件的注解,需要先安装。@Data 注解在类上,会为类的所有属性自动生成 set/get、equals、canEqual、hashCode、toString方法。 RowNumExcelListener 使用 easyexcel

springMVC(5)---导入excel文件数据到数据库

做~自己de王妃 提交于 2020-05-01 02:56:32
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库。上一篇链接: springMVC(4)---生成excel文件并导出 直接进入步骤讲解 : 第一步、导入jar包 < dependency > < groupId > org.apache.poi </ groupId > < artifactId > poi-ooxml </ artifactId > < version > 3.9 </ version > </ dependency > 第二步,创建Model对象 我没有把数据放到数据库中,而是导入到实体中,然后在后台打印 public class Family { // 家庭编号 private String jtbh; // 姓名 private String xm; // 行业 private String hy; // 备注 private String bz; /* * 提供set和get,toString方法 */ } 第三步.导入excel界面 leadingexcel.jsp <% @ page language = " java " import = " java.util.* " pageEncoding = " utf-8 " %> <

springMVC+easypoi做excel的导入导出

时间秒杀一切 提交于 2020-05-01 02:52:04
1.认识 Java操作办公软件:jxl、poi 数据读取用POI,只要不涉及单元格样式的写入使用jxl效率高点。POI读取效率高,但是大数据量写入Excel效率比jxl慢。 jxl只使用03版本、po使用所有版本 2.easypoi需要导入的jar包 1 < dependency > 2 < groupId > cn.afterturn </ groupId > 3 < artifactId > easypoi-base </ artifactId > 4 < version > 3.2.0 </ version > 5 </ dependency > 6 < dependency > 7 < groupId > cn.afterturn </ groupId > 8 < artifactId > easypoi-web </ artifactId > 9 < version > 3.2.0 </ version > 10 </ dependency > 11 < dependency > 12 < groupId > cn.afterturn </ groupId > 13 < artifactId > easypoi-annotation </ artifactId > 14 < version > 3.2.0 </ version > 15 </ dependency > 1

Spring MVC 实现Excel的导入导出功能(1:Excel的导入)

荒凉一梦 提交于 2020-04-30 19:56:02
简介 这篇文章主要记录自己学习上传和导出Excel时的一些心得,企业办公系统的开发中,经常会收到这样的需求:批量录入数据、数据报表使用 Excel 打开,或者职能部门同事要打印 Excel 文件,而他们又没有直接操作数据库的能力,这时就需要在某些模块中实现导入、导出 Excel 的功能。 接下来,我们就来看看借助哪些库、工具可以实行上述这些需求。 POI 简介 Apache POI 是 Apache 软件基金会的开放源码函式库,POI 提供了 API,可以帮助 Java 程序实现对 Microsoft Office 格式档案的读写功能。 首先需要了解下 Excel 的文件格式,目前主要有两种格式,即 xls 和 xlsx 格式。 xlsx 是从 Office 2007 版开始使用的,使用新的基于 XML 的压缩文件格式取代了当时专有的默认文件格式,在传统文件扩展名后面添加了字母 x 使其占用空间更小,可以向下兼容 xls ,2007 版本后的 Excel 软件都可以操作 xls 和 xlsx 格式文件,而之前的版本只能打开 xls 格式文件。 针对不同 Excel 文档格式,POI 提供了不同的类来处理。 针对 xls 格式,相应的类有: HSSFWorkbook excel 文档对象 HSSFSheet excel 表格对象 HSSFRow excel 表格行对象

java+jxls利用excel模版进行导出

北城以北 提交于 2020-04-30 19:55:22
  大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复杂,细节代码会特别多。在这个时候我们可以事先利用offfice制定好一个模版文件,在利用jxls来通过模版文件来实现复杂excel的导出。   模版的制作和一般excel的编写是一样的,在需要填充的网格利用{}来进行取出java中传进来的变量值,如图: 在java中: InputStream is =getFileInputStream(templateFileName); // 获取模板输入流 XLSTransformer transformer = new XLSTransformer(); HSSFWorkbook resultWorkbook =transformer.transformMultipleSheetsList(is,prints /* 要打印的list */ , sheetNames /* sheet的名称list */ , "print" /* excel的bean名称 */ , new HashMap(), 0);   在excel中,jxls会将要打印的list通过我们定义的bean名称取出进行遍历,在源码中 public HSSFWorkbook

JavaWeb开发中采用FreeMarker生成Excel表格

左心房为你撑大大i 提交于 2020-04-30 19:54:37
最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多。由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求。这里介绍种采用FreeMarker的api来生成Excel文件的方案 一、方案的对比 针对这个需求我想了2个方案,介绍如下 方案一:先做一个合同的表格模板,然后把变量都填充成类似EL表达式的样子。然后通过poi 相关类把模板读到内存中,把里面的变量的值替换,然后生成下载文件。 方案二:先做一个合同的表格模板,然后转换成xml文件,然后再改成FreeMarker的ftl文件。通过FreeMarker的Api 把往模板上填充数据,然后生成下载文件。 简单分析下上面的2个方案: 方案一比较适合那种模板中的行数不会变的场景,如果合同的头和尾是固定的,中间的行数不固定,那么就方案就不适合了。 方案二比方案一更灵活,由于FreeMarker的模板文件中可以使用很多标签,如( <#List></#List> );应付这种中间行数不固定的场景就是小case了。 所以,这种导出的Excel有格式要求的, 采用FreeMarker生成Excel是最好实现的。 二、介绍下FreeMarker方案实现过程 (1)把Excel模板的格式调好,另存为xml文件 (2)制作一个ftl模板,把xml文件内容copy进去,把变量换成FreeMarker的插值

freemarker导出定制excel

穿精又带淫゛_ 提交于 2020-04-30 16:48:14
之前我们导excel大部分用的是jxl和poi,JXL只能对Excel进行操作,属于比较老的框架,它只支持到Excel 95-2000的版本。现在已经停止更新和维护 POI是apache的项目,可对微软的Word,Excel,ppt等进行操作,包括office2003和2007,Excl2003和2007。poi现在一直有更新。所以现在主流使用POI 如果只是简单的excel,用上述工具导出没有任何问题,但如果导出定制化复杂的excel或word,就会显得很繁琐,代码也有一定难度,所以我尝试用freemarker 来导出 先制作一个定制的excel 新建一个excel,在里面写上点数据并将后缀改为.xml 将下图的 1和张三改一下以接收数据,将excel复制到项目的resource目录中将后缀名改为.ftl 到这一步excel已经好了,接下来就是代码  需要的maven包 <!--word;excel导出包--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version> 2.3 . 20 </version> </dependency> 导出的方法 package com.pskj.GSLZ.utils.word; import freemarker

poi导出excel

点点圈 提交于 2020-04-30 13:53:39
一,项目中导入导出excel的操作十分的常见,对于项目中poi总结下 基础知识讲解参考博客: https://blog.csdn.net/vbirdbest/article/details/72870714,很详细 二,demo /** * 将数据写入到Excel */ @Test public void testUrl() { FileOutputStream fileOutputStream = null; try { String excelPath = "/Users/li/Desktop/courseWork.xlsx"; FileInputStream fileInputStream = new FileInputStream(excelPath); HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("first"); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0); //HSSFCellStyle HSSFCellStyle cellStyle = workbook.createCellStyle(); cell.setCellValue("姓名"); cell