之前有写过运用POI的HSSF方式导出数据到Excel(见:springMVC中使用POI方式导出excel至客户端.服务器实例),但这种方式当数据量大到一定程度时容易出现内存溢出等问题. 首先,POI提供了HSSF.XSSF以及SXSSF三种方式操作Excel.他们的区别如下: HSSF:是操作Excel97-2003版本,扩展名为.xls. XSSF:是操作Excel2007版本开始,扩展名为.xlsx. SXSSF:是在XSSF基础上,POI3.8版本开始提供的一种支持低内存占用的操作方式…
前提 这篇文章不是标题党,下文会通过一个仿真例子分析如何优化百万级别数据Excel导出. 笔者负责维护的一个数据查询和数据导出服务是一个相对远古的单点应用,在上一次云迁移之后扩展为双节点部署,但是发现了服务经常因为大数据量的数据导出频繁Full GC,导致应用假死无法响应外部的请求.因为某些原因,该服务只能够分配2GB的最大堆内存,下面的优化都是以这个堆内存极限为前提.通过查看服务配置.日志和APM定位到两个问题: 启动脚本中添加了CMS参数,采用了CMS收集器,该收集算法对内存的敏感度比较高,…
HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现 XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现 从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API----SXSSF SXSSF通过一个滑动窗口来限制访问Row的数量从而达到低内存占用的目录,XSSF可以访问所有行.旧的行数据不再出现在滑动窗口中并变得无法访问,与此同时写到磁盘上. 在自动刷新的模式下,可以指定窗口中访问Row的数量,从而在内存中保持一定…
需要源代码的可以加我微信好友gqljxg1514 1,首先配置依赖pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mav…
小白,做日志只是为了方便自己查看,能帮到别人当然更好,不喜勿喷. 上代码 依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10-FINAL</version> </dependency> 注解,使用了俩个注解,一个是sheet公用属性,以及单元格属性,只是简单的几个属…
[1]NPOI是啥? NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作. POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写. (哈哈,我不会告诉你这一段是从百度百科copy过来的~~)   [2]实例操作 我其实也没怎么深入研究,因为最近的MVC项目里目前只需要Excel导…
最近发现我们系统导出excel文件时由于是导出百万级数据导出,速度过慢并且内存占用多,故进行了下面的一次优化. 我们使用apache的poi进行excel文件操作 主要耗时: 1.从数据库得到需要导出的结果集耗时 2.将数据写入excel耗时 优化前 public abstract class BaseExcelOutputVo { public BaseExcelOutputVo() { } public abstract String[] toExcelHeaders(); public a…
package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigDecimal; import java.net.URLEncoder; import java.sql.Timestamp; import java.util.Date; import java.ut…
以前只知道用poi导出Excel,最近用了SpringMvc的Excel导出功能,结合jxl和poi实现,的确比只用Poi好,两种实现方式如下: 一.结合jxl实现: 1.引入jxl的所需jar包: <dependency org="net.sourceforge.jexcelapi" name="jxl" rev="2.6.3" conf="compile->compile(*),master(*);runtime->…
通用excel导出工具类,基于泛型.反射.hashmap 以及基于泛型.反射.bean两种方式 import java.io.*;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.text.SimpleDateFormat;import java.util.*;import org.apache.poi.hssf.usermodel.*;import org.slf4j.Logger;import…