Apache POI:操作 Excel

4 篇文章 0 订阅

官网API - 英文

POI API -中文
POI API - 中文二
Apache POI 组件了解
小白工具
EasyPoi

参考

教程

Apache POI 官网操作 Excel API 方案列表

Excel API 功能汇总(如下):
Excel API 功能汇总

POI教程-易百教程
Apache POI Excel使用详解

注解方式Excel的读取和写入(根据注解完成Excel的操作,虽说支持大数据,但对于超大数据就无能为力了,因为它的读写期间都是将所有数据放入系统内存的,除非你有超大的内存)
POI实现超大数据的Excel的读写操作,支持Excel最大行数

注意坑:
网上的一些 Excel 在读取时,经常会忽略掉用户没有任何输入的单元格,返回的数组时直接也忽略了该位置,所以要甄别选择。
或者自己改造,思路可以这样走:找出上一列和当前列之间的偏差数,用空字符串填充即可。当然还有其他优化思路等。

操作 Excel 2003

使用 HSSF 操作。

操作 Excel 2007

使用 XSSF 操作。
三种实现:
1、eventmodel 实现,可读不可写,CPU和内存消耗低。
基于事件驱动,SAX 方式解析 Excel 2007。
2、usermodel 实现,可读可写,CPU和内存消耗较大。
我们常用的方式,将xlsx格式的文档转换成CVS格式后再进行处理的用户模式。用户模式API接口丰富,我们可以很容易的使用POI的API读取Excel,但用户模式消耗的内存很大,当遇到很多sheet、大数据网格、假空行、公式等问题时,很容易导致内存溢出。
POI官方推荐解决内存溢出的方式使用CVS格式解析,我们不可能手工将Excel文件转换成CVS格式再上传,这样做太麻烦了。好再POI给出了xlsx转换CVS的例子,基于这个例子我们进行改造后,也能解决用户模式读取Excel内存溢出的问题。
3、SXSSF 实现,不可读可写,CPU和内存消耗低。
POI 3.8 以后开始支持。

参考
官网的 SXSSF 使用教程
POI读写大数据量EXCEL

大数据操作

操作 Excel 2007时,导入数据时,用XSSFWorkbook来读取的话,几千条数据就可能内存溢出。

导入

用 OPCPackage 来读取。参考
POI实现大数据EXCLE导入导出,解决内存溢出问题
POI读写大数据量excel,解决超过几万行而导致内存溢出的问题

导出

思路:简单来说就是用分页实现,每次从数据库查询部分数据,然后交给poi的SXSSFWorkbook,poi发现数超过自身设置的暂存区数量时会flush到磁盘文件。我们需要使用poi的这个特性来实现海量数据下载。

自定义表头
参考
复杂的POI导出Excel表格(多行表头、合并单元格)

参考

POI和jxl.jar性能比较
参考现成代码工具 - 一网友提供

需要导入 xercesImpl (别引错了)。
如果没有引入或引错都将会报错

java.lang.ClassNotFoundException: org/apache/xerces/parsers/SAXParser
...
SAX2 driver class org.apache.xerces.parsers.SAXParser not found
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值