6.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
6.JXL操作Excel的更多相关文章
- Java文件操作系列[2]——使用JXL操作Excel文件
由于java流无法实现对Excel文件的读写操作,因此在项目中经常利用第三方开源的组件来实现.支持Excel文件操作的第三方开源组件主要有Apache的POI和开源社区的JXL. 总体来说,二者的区别 ...
- JXL操作Excel
jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文 ...
- java利用jxl操作Excel
/** * 把从数据库查询到的数据,写入电子表格 * * @throws Exception */ public void createXls() throws Exception { Dao dao ...
- 使用java程序jxl操作Excel表格
在实际开发中企业办公系统都会涉及到一个打印报表的功能,也许你的需求就是把web前端展示的员工信息以Excel表格形式打印出来 ,那么具体怎么操作下面我来实现一下 首先我们使用的是 java的jxl技术 ...
- 【转载】jxl操作excel 字体 背景色 合并单元格 列宽等 .
package com.email.jav; import java.io.File;import java.io.IOException;import java.net.URL; import jx ...
- Jxl操作excel的demo
网上很多例子,都是用Jxl读或者写excel,本文实现的功能就是将数据源in.xls的第几行第几列数据写入到out.xls的第几行第几列,不覆盖out.xls其他原有的数据. 需要导入的包:jxl.j ...
- jxl操作excel单个单元格换行和获取换行
excel中同表格换行: a+"\n"+b 1.读取 String str = sheet.getCell(c, r).getContents(); String[] split ...
- jxl操作excel写入数据不覆盖原有数据示例
public void readTO() { Workbook wb = null; WritableWorkbook wwb = null; try { ...
- java对集合的操作,jxl操作excel
http://www.cnblogs.com/epeter/p/5648026.html http://blog.sina.com.cn/s/blog_6145ed810100vbsj.html
随机推荐
- Amazon S3 功能介绍
一 .Amazon S3介绍 Amazon Simple Storage Service (Amazon S3) 是一种对象存储,它具有简单的 Web 服务接口,可用于在 Web 上的任何位置存储和检 ...
- Postman—参数化
一.单个数据参数化 场景:购物车接口,需要用到登录接口返回的token 1.登录接口,在Tests里面设置usertoken环境变量,用来保存token值. 2.获取购物车接口使用usertoken变 ...
- a标签发送邮件
<a href="Mailto:292808135@qq.com?CC=292808135@qq.com&Subject=反馈&Body=花式求喷~%0A您的不满就是我 ...
- windows 下的bash 环境安装npm
1.Git下载 node.js下载2.安装 git 和 node.js3.将git\bin node.js安装目录加入环境变量path中4.在D盘下建立目录gitrep 打开Git Bash初始 ...
- ZooKeeper:架构和算法
ZooKeeper主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置管理等. 它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式 ...
- Kafka消息重新发送
Kafka消息重新发送 1. 使用kafka消息队列做消息的发布.订阅,如果consumer端消费出问题,导致数据并没有消费,此时不需要担心,数据并不会立刻丢失,kafka会把数据在服务器的磁盘 ...
- Zookeeper初见
这是Zookeeper学习总结 的系列文章. ZK简介 ZK部署及运行 ZK的常用API 创建会话 创建节点 删除节点 读取数据节点 更新数据 检测节点是否存在 ZK的开源封装
- 用java实现一个简易编译器1-词法解析入门
本文对应代码下载地址为: http://download.csdn.net/detail/tyler_download/9435103 视频地址: http://v.youku.com/v_show/ ...
- Socket编程 - API
基础知识部分:http://www.cnblogs.com/Jimmy1988/p/7839940.html 1. 基本流程 Process Client Server Comment socket( ...
- python分布式爬虫打造搜索引擎--------scrapy实现
最近在网上学习一门关于scrapy爬虫的课程,觉得还不错,以下是目录还在更新中,我觉得有必要好好的做下笔记,研究研究. 第1章 课程介绍 1-1 python分布式爬虫打造搜索引擎简介 07:23 第 ...