jxl和poi操作Excel

目前我所负责的系统中有POI和JXL两种方式的导出数据实现。 项目初期数据量不大一般使用JXL的方式,可以满足需求,后来在进行一些盘点,等月度出入库查询报表统计的时候出现了超过最大sheet行的错误,另外堆内存也被占满了。

所以后面就紧急将部分重要功能,要导的数据量大的几个模块改造成POI的方式了。但是仍然跑的很慢,没有了解POI的另外一种实现方式,后来对POI的工具类,以及POI的导出实现做了部分修正,顺利完成升级。

初步了解:
JXL:支持比较低版本的excel,比如Excel 95 ,97 ,2000,2003
由于Excel版本比较低,导致最大行有限制,无法导出65535以上量级的数据
对于内存,和时间的花费也比POI基于内存+磁盘的方式高。

JXL技术说明
1. 读取Excel公式(可以读取Excel 97以后的公式)
2. 生成Excel数据表(格式为Excel 97)
3. 支持字体、数字、日期的格式化
4. 支持单元格的阴影操作,以及颜色操作
5. 修改已经存在的数据表
6. 是最基础的excel api
7. 小文件读取效率比较高
8. 跨平台

POI技术说明
能保持Excel里原有的宏(但不能用它写新的宏)。
不支持跨平台(主要就是Java语言)
在一些业务场景中代码相对复杂,但是API丰富,支持多种模式的读写。
支持比较新版本的excel.
读写的时候比较占内存。
读写的时候比较占内存。
支持大数量大文件的读写操作。但是需要熟悉API。
总体来说,对于简单的单表excel导入导出的需求,建议使用JXL。数据量稍微小点,占用内存少,速度快。
对于报表类的,涉及月份数据量,多表数据聚合在一起建议使用POI。

下面简要介绍一下POI的两种读写模式

首先要知道poi中的几个概念与excel是什么关系

WorkBook:一个excel文件
Sheet:页签,工作表,代表一个excel文件的一张表
Cell:一张表中的一个单元格
CellStyle:单元格的样式
**Row:**excel表中的一行

上面的每个抽象出来的对象都被POI封装好了,声明了接口,有不同的实现方式。

WorkBook:

这里写图片描述

Sheet:

这里写图片描述

Cell:

这里写图片描述

Row

这里写图片描述

基本有三种实现模式,每种实现模式有不同的用途:
XSSFWorkbook,SXSSFWorkbook,HSSFWorkbook,
HSSFSheet,SXSSFSheet,XSSFChartSheet,XSSFDialogsheet,
XSSFCell,SXSSFCell,HSSFCell

有三种实现方式:
XSSFCell:基于内存
SXSSFCell:基于内存+磁盘的写入方式
HSSFCell:高水平的写入方式,对于单元格的数据类型有很高的限制,比如:字符串格式只有字符,不能有数字

参考资料

http://blog.csdn.net/u010504064/article/details/52624532

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值