POI导出excel模板三种方式

摘要:
POI简介POI是Apache软件基金会用java编写的免费开源的跨平台的JavaAPI,提供API给java程序对MicrosoftOffice格式档案读和写的功能,一般用来操作Excel文件。用javaPOI导出Excel时,需要考虑Excel版本和数据量的问题。JavaPOI导出Excel有三种形式:第一种HSSFWorkbookPOI导出Excel最常用的方式,局限是导出的行数最多为65535行,超出65536条后系统就会报错,此方式因为行数不足七万行所以一般不会发生内存不足的情况。第三种SXSSFWorkbook从POI3.8版本开始,提供了一种基于XSSF的低内存占用的SXSSF方式。

POI简介

POI是Apache软件基金会用java编写的免费开源的跨平台的Java API,提供API给java程序对Microsoft Office格式档案读和写的功能,一般用来操作Excel文件。用javaPOI导出Excel时,需要考虑Excel版本和数据量的问题。

JavaPOI导出Excel有三种形式:

POI导出excel模板三种方式第1张

(1) 第一种HSSFWorkbook

POI导出Excel最常用的方式,局限是导出的行数最多为65535行,超出65536条后系统就会报错,此方式因为行数不足七万行所以一般不会发生内存不足的情况。

(2)第二种XSSFWorkbook

这种形式突破了HSSFWorkbook的65535行局限,对应excel2007(1048576行,16384列)扩展名为.xlsx,最多可以导出104万行,会有OOM内存溢出,原因是你所创建的book sheet row cell等此时是存在内存的并没有持久化。

(3)第三种SXSSFWorkbook

从POI3.8版本开始,提供了一种基于XSSF的低内存占用的SXSSF方式。对于大型excel文件的创建,一个关键问题就是,要确保不会内存溢出。对于大型excel的创建且不会内存溢出的,就只有SXSSFWorkbook了。它的原理很简单,用硬盘空间换内存(就像hash map用空间换时间一样)。 

当数据量超出65536条后,在使用HSSFWorkbook或XSSFWorkbook,程序会报OutOfMemoryError:Javaheap space;内存溢出错误。这时应该用SXSSFworkbook。

参考:https://blog.csdn.net/fuhanghang/article/details/108836891

excel2003和excel2007对比:

POI导出excel模板三种方式第2张

大批量读写数据:

POI导出excel模板三种方式第3张

参考:https://blog.csdn.net/sinat_28007043/article/details/92840532

免责声明:文章转载自《POI导出excel模板三种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows Server 2012 R2安装mssqlvue项目中监听sessionStorage值发生变化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

poi读取word2003(.doc文档)中的表格

poi读取word2003(.doc文档)中的表格 Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API。在网上见到好多通过poi读取excel的文章,读写也很方便,和jxl有的一比。在这里,主要是poi对word中的表格数据读取。 具体见代码 1 import java.io.Fi...

golang 写数据到excel文件 清明

package main import ( "encoding/csv" "fmt" "math/rand" "os" "strconv" "time" ) type person struct { JOB_NUMBER string NAME string DEP_CODE string DEP_NAME st...

使用NPOI读取Excel出错

使用NPOI读取Excel出错,错误信息:java.io.IOException: Invalid header signature; read 4503608217567241, expected –2226271756974174256 诊断:查看Excel文件大小为1k,正常新建Excel应为7K(取WPS标准),问题判断为读取文件信息错误,将Ex...

Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)

通用excel与对象相互转换的工具类 前言:最近开发需要一个Excel批量导入或者导出的功能,之前用过poi-ooxml开发过一个导入的工具类,正好蹭着这次机会,把工具类的功能进行完善。 使用说明: (1)对象换成Excel,ExcelUtil#pojo2Excel();  最后生成一个输出流,可以用作文件生成或web中的上传下载 方法参数: * @par...

laravel 导出插件

转发:https://blog.csdn.net/gu_wen_jie/article/details/79296470 版本:laravel5           php 5.6 安装步骤: 一、安装插件 ①、首先在Laravel项目根目录下使用Composer安装依赖: composer require "maatwebsite/excel:~2.1....

Jenkins内存溢出的处理方法

参考:http://openwares.net/java/jenkens_deploy_to_tomcat_error_of_outofmemoryerror.html上的说明,有如下解释: -Xms:初始堆内存大小 -Xmx:最大堆内存大,一般设置-Xms与-Xmx一样大小,根据应用类型和物理内存大小来决定二者的大小 -Xmn或者-XX:NewSize:...