OAF_文件系列11_实现OAF读写Excel包JXL和POI的区别(概念)

时间:2023-01-19 21:01:02

20150803 Created By BaoXinjian

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAABHklEQVQ4jc3Tv0sCcRjH8Wc4/wL9H4T0P3CpXYQcHQpuFIQayjvXQrnulhosHDpQsBZB8Q9wuWu1QVBcbMtNyaAm3y0e/fC4Lmvo4bO++D6fB74CLJdPm0X+MRaRn2HuowziDFNMVBFhajDvsHB4GYXBMQZxRikeVBHh0WDeDo+jKzz5gJ8dXjfAU4NZm4UbEse+4uC1qVYplSgU2Ntf4aHXeXrGLBjX65TLaEXyeTIZdrYjCskEIpLdRdMwTWybOxc/3GpxfsHpCUfH5HKk0xGF5JaHi1gm9jWuP3Ycbm+o1bAsDg9Q1U9YC8b9Pt0uzSZXl/LdrOHxmF6PTodGg0oFXY8oJLzOuveyf+f1vB8si17EDFj7zz5GyPwKvwECQrZ4yvBSdAAAAABJRU5ErkJggg==" alt="" />一、摘要


1. JXL

1.1 JXL优点:

Jxl对中文支持非常好,操作简单,方法看名知意。

Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写

支持Excel 95-2000的所有版本

生成Excel 2000标准格式

支持字体、数字、日期操作

能够修饰单元格属性

支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

1.2缺点:

效率低,图片支持部完善,对格式的支持不如POI强大

2. POI

2.1 POI优点:

效率高,这点很好

支持公式,宏,一些企业应用上会非常实用

能够修饰单元格属性

支持字体、数字、日期操作

2.2缺点:

不成熟,代码不能跨平台,貌似不少同行在使用工程中还碰到让人郁闷的BUG

3. JXL和POI 下载地址

(1). POI 主页:http://poi.apache.org/

(2). JXL 的Api:http://www.andykhan.com/jexcelapi/

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAABHklEQVQ4jc3Tv0sCcRjH8Wc4/wL9H4T0P3CpXYQcHQpuFIQayjvXQrnulhosHDpQsBZB8Q9wuWu1QVBcbMtNyaAm3y0e/fC4Lmvo4bO++D6fB74CLJdPm0X+MRaRn2HuowziDFNMVBFhajDvsHB4GYXBMQZxRikeVBHh0WDeDo+jKzz5gJ8dXjfAU4NZm4UbEse+4uC1qVYplSgU2Ntf4aHXeXrGLBjX65TLaEXyeTIZdrYjCskEIpLdRdMwTWybOxc/3GpxfsHpCUfH5HKk0xGF5JaHi1gm9jWuP3Ycbm+o1bAsDg9Q1U9YC8b9Pt0uzSZXl/LdrOHxmF6PTodGg0oFXY8oJLzOuveyf+f1vB8si17EDFj7zz5GyPwKvwECQrZ4yvBSdAAAAABJRU5ErkJggg==" alt="" />二、运行测试


1. 运行测试

  /**
*
*/
package com.vteam.mul; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; /**
* @作者 Jarvis
* @创建日期 Dec 2, 2009
* @功能 测试POI JXL写入效率
*/ public class Testpj {
public int leng = 6000 ;//控制数据量大小
public int sheet = 2 ; //控制sheet创建个数
public void createPOI(){
try {
// 创建新的Excel 工作簿
HSSFWorkbook newbook = new HSSFWorkbook();
int j = 0;
while(j < sheet){ //控制sheet创建个数
HSSFSheet sheet = newbook.createSheet("test"+j);
HSSFRow row = null ;//行索引
HSSFCell cell1 = null ;//列索引
HSSFCell cell2 = null ;//列索引
for(int i = 0 ; i < leng ; i ++){
row = sheet.createRow(i) ;
cell1 = row.createCell(0);//列索引
cell2 = row.createCell(1);//列索引
if(cell1 == null){
System.out.println("cell1 null ");
}
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);// 定义单元格为字符串类型
cell1.setCellValue("A数据POI"+i);// 在单元格中输入一些内容
cell2.setCellType(HSSFCell.CELL_TYPE_STRING);// 定义单元格为字符串类型
cell2.setCellValue("B数据POI"+1);// 在单元格中输入一些内容 }
j++ ;
}
// 新建一输出文件流
FileOutputStream fp = new FileOutputStream("E:/poi.xls");
newbook.write(fp);// 把相应的Excel 工作簿存盘
fp.flush();
fp.close();// 操作结束,关闭文件
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
public void createJXL(){
try {
// 打开文件
WritableWorkbook book = Workbook.createWorkbook( new File("E:/jxl.xls "));
int j = 0 ;
while(j < sheet){ //控制sheet创建个数
WritableSheet sheet = book.createSheet("test"+j ,0);
Label label1 = null ;
Label label2 = null ;
for(int i = 0 ; i < leng ;i ++){
label1 = new Label(0,i,"A数据jxl"+i ); //第一个参数是列索引 第二个是行索引
label2 = new Label(1,i,"A数据jxl"+i );
sheet.addCell(label1); // 将定义好的单元格添加到工作表中
sheet.addCell(label2);
}
j++ ;
}
book.write();
book.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
long s = System.currentTimeMillis();
Testpj t = new Testpj();
t.createPOI();
t.createJXL();
long e = System.currentTimeMillis();
System.out.println("写入耗时:"+(e-s));
} }

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAABHklEQVQ4jc3Tv0sCcRjH8Wc4/wL9H4T0P3CpXYQcHQpuFIQayjvXQrnulhosHDpQsBZB8Q9wuWu1QVBcbMtNyaAm3y0e/fC4Lmvo4bO++D6fB74CLJdPm0X+MRaRn2HuowziDFNMVBFhajDvsHB4GYXBMQZxRikeVBHh0WDeDo+jKzz5gJ8dXjfAU4NZm4UbEse+4uC1qVYplSgU2Ntf4aHXeXrGLBjX65TLaEXyeTIZdrYjCskEIpLdRdMwTWybOxc/3GpxfsHpCUfH5HKk0xGF5JaHi1gm9jWuP3Ycbm+o1bAsDg9Q1U9YC8b9Pt0uzSZXl/LdrOHxmF6PTodGg0oFXY8oJLzOuveyf+f1vB8si17EDFj7zz5GyPwKvwECQrZ4yvBSdAAAAABJRU5ErkJggg==" alt="" />三、测试总结


1. poi已消耗内存换取部分效率,而jxl在内存消耗上一直很稳定。POI很容易内存溢出

2. poi随着数据量的增大,性能直线下降,当我增大到24000条每个sheet的时候,内存溢出。jxl却能运行。

建议在大数据量的时候使用jxl,可以保证效率和较小内存消耗。在具体开发中,对部分常用的excel下载,可生产副本文件,避免重复生产Excel消耗内存

3. 在测试的过程中,发现POI极其不稳定。获得的数据有时候相差特别大。每种测试情况我是重复测试4次,然后取平均值

aaarticlea/png;base64,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" alt="" />

Thanks and Regards

读-http://blog.csdn.net/jarvis_java/article/details/4924099

写-http://blog.csdn.net/jarvis_java/article/details/4925379

aaarticlea/png;base64,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" alt="" />