5.JXL操作Excel
Posted 豆豆DE思念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.JXL操作Excel相关的知识,希望对你有一定的参考价值。
一.简介
jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支持很有限,而且 仅仅识别PNG格式。
二.简单的实现代码
Maven 依赖
<dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.12</version> </dependency>
package com.my.utils; import java.io.File; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class UseJxlCreateExcel { public static void main(String[] args) { // TODO Auto-generated method stub try { WritableWorkbook book = Workbook.createWorkbook(new File("D:\\\\java\\\\test\\\\jxlTest.xls")); WritableSheet sheet = book.createSheet(" 第一页 ", 0); Label label1 = new Label(0, 0, "姓名"); Label label2 = new Label(1, 0, "年龄"); sheet.addCell(label1); sheet.addCell(label2); book.write(); book.close(); Workbook workbook = Workbook.getWorkbook(new File("D:\\\\java\\\\test\\\\jxlTest.xls")); Sheet worksheet = workbook.getSheet(0); Cell cell1 = worksheet.getCell(0, 0); String result = cell1.getContents(); System.out.println(result); workbook.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
详见:http://www.cnblogs.com/raymond19840709/archive/2008/06/26/1230289.html
三.poi和 jxl
目前我所负责的系统中有POI和JXL两种方式的导出数据实现。
项目初期数据量不大一般使用JXL的方式,可以满足需求,后来在进行一些盘点,
等月度出入库查询报表统计的时候出现了超过最大sheet行的错误,另外堆内存也被占满了。
所以后面就紧急将部分重要功能,要导的数据量大的几个模块改造成POI的方式了。
但是仍然跑的很慢,没有了解POI的另外一种实现方式,后来对POI的工具类,以及POI的导出实现做了部分修正,顺利完成升级。
我的初步了解:
JXL:支持比较低版本的excel,比如Excel 95 ,97 ,2000,2003
由于Excel版本比较低,导致最大行有限制,无法导出65535以上量级的数据
对于内存,和时间的花费也比POI基于内存+磁盘的方式高。
网友技术说明
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。
从优缺点上来说
一、jxl
优点:
Jxl对中文支持非常好,操作简单,方法看名知意。
Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写
支持Excel 95-2000的所有版本(网上说目前可以支持Excel2007了,还没有尝试过)
生成Excel 2000标准格式
支持字体、数字、日期操作
能够修饰单元格属性
支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
缺点:效率低,图片支持不完善,对格式的支持不如POI强大
二、POI
优点:
效率高(数据来源:http://blog.csdn.net/jarvis_java/article/details/4924099)
支持公式,宏,一些企业应用上会非常实用
能够修饰单元格属性
支持字体、数字、日期操作
缺点:不成熟,代码不能跨平台,貌似不少同行在使用工程中还碰到让人郁闷的BUG(最近的项目中也是遇到了一些bug,不过目前没有查出来是代码的问题还是POI的问题,总之问题很诡异,数据替代参数总有失败的。关于不能跨平台这一说,我也没有试验过,不过Java不是跨平台吗?POI是JAVA的一个组件,怎么就不能跨平台了呢,总之这些问题还需要在以后的项目中多多实践,才能比较出区别之处。)
2018-06-08 16:30
以上是关于5.JXL操作Excel的主要内容,如果未能解决你的问题,请参考以下文章