一.简介

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技术说明

  1. 能保持Excel里原有的宏(但不能用它写新的宏)。
  2. 不支持跨平台(主要就是Java语言)
  3. 在一些业务场景中代码相对复杂,但是API丰富,支持多种模式的读写。
  4. 支持比较新版本的excel.
  5. 读写的时候比较占内存。
  6. 读写的时候比较占内存。
  7. 支持大数量大文件的读写操作。但是需要熟悉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的更多相关文章

  1. Java文件操作系列[2]——使用JXL操作Excel文件

    由于java流无法实现对Excel文件的读写操作,因此在项目中经常利用第三方开源的组件来实现.支持Excel文件操作的第三方开源组件主要有Apache的POI和开源社区的JXL. 总体来说,二者的区别 ...

  2. JXL操作Excel

    jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文 ...

  3. java利用jxl操作Excel

    /** * 把从数据库查询到的数据,写入电子表格 * * @throws Exception */ public void createXls() throws Exception { Dao dao ...

  4. 使用java程序jxl操作Excel表格

    在实际开发中企业办公系统都会涉及到一个打印报表的功能,也许你的需求就是把web前端展示的员工信息以Excel表格形式打印出来 ,那么具体怎么操作下面我来实现一下 首先我们使用的是 java的jxl技术 ...

  5. 【转载】jxl操作excel 字体 背景色 合并单元格 列宽等 .

    package com.email.jav; import java.io.File;import java.io.IOException;import java.net.URL; import jx ...

  6. Jxl操作excel的demo

    网上很多例子,都是用Jxl读或者写excel,本文实现的功能就是将数据源in.xls的第几行第几列数据写入到out.xls的第几行第几列,不覆盖out.xls其他原有的数据. 需要导入的包:jxl.j ...

  7. jxl操作excel单个单元格换行和获取换行

    excel中同表格换行: a+"\n"+b 1.读取 String str = sheet.getCell(c, r).getContents(); String[] split ...

  8. jxl操作excel写入数据不覆盖原有数据示例

    public void readTO() {        Workbook wb = null;        WritableWorkbook wwb = null;        try {   ...

  9. java对集合的操作,jxl操作excel

    http://www.cnblogs.com/epeter/p/5648026.html http://blog.sina.com.cn/s/blog_6145ed810100vbsj.html

随机推荐

  1. Eclipse-查看jar源码乱码问题解决

    步骤1: 在eclipse菜单栏中,Window–>Preferences–>General–>Content types,将JAR Content , Java Class Fil ...

  2. Mac在终端用命令装载dmg文件

    今天碰到个问题,下载了一个dmg文件,然后双击/右键安装,一点反应都没有.一开始以为是电脑的缘故,重启,依旧没有反应,然后想到用终端装载试试. 打开终端,输入命令: hdiutil attach we ...

  3. yum命令速查

    1 yum的基本原理 CentOS可在yum服务器上下载官方网站给出的rpm给出的表头列表数据,该数据除了记载每个rpm软件的相依性之外,也说明了rpm所放置的容器(repository)所在.通过分 ...

  4. Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识

    前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...

  5. Python装饰器之 property()

    1. 何为装饰器? 官方定义:装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数 ...

  6. 11.Proxy

    Proxy Proxy 概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程语言进行编程. ...

  7. ffmpeg按比例缩放--"width / height not divisible by 2" 解决方法

    最近在处理视频的时候,有这么一个需求 如果视频的分辨率宽度大于960的话,就把宽度设为960,而高度按其比例进行缩放 如果视频的分辨率高度大于540的话,就把高度设为540,而宽度按其比例进行缩放 之 ...

  8. 使用springcloud gateway搭建网关(分流,限流,熔断)

    Spring Cloud Gateway Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 ...

  9. 通过SourceTree连接SSL有问题的自建gitlab服务器

    我用的是 SourceTree 作为Git客户端的,用它连接一个HTTPS证书过期的自建git服务,会收到下面错误: abort: error: _ssl.c:507: error:14090086: ...

  10. zookeeper 典型应用

    一.发布/订阅 配置文件的集中管理. 问题:当分布式系统变多后,每个系统保存相应的配置文件,会造成同个文件有多份,修改起来非常麻烦. 解决方法:使用zk的发布/订阅功能,配合Watcher机制,在应用 ...