如何在java中引入excel表格

发布网友 发布时间:2022-04-20 10:02

我来回答

4个回答

热心网友 时间:2023-08-04 04:24

这有两个方法,一个是POI,一个是JXL,通过楼上几位大侠的答案,我想你也了解了。在这就不说这一块了。我想给你说说这两者的比较和应用领域,楼主根据自己的需求确定使用某种技术。当数据量较大时(超过1万行),无论是时间消耗还是内存消耗,JXL均优于POI。

根据最终的测试结果,估计得出来不同的结论可能是采用的版本不同所致(还没研究JXL及POI的源码)。

具体情况请参见此文及相关下方我测试的Java源码及测试数据:

http://blog.csdn.net/haotangyu/archive/2009/12/03/4931670.aspx

我的测试环境:
jxl-2.4.2.jar
poi-3.1.jar
MyEclipse8.0 Run JVM设置:-Xms256m -Xmx512m
机器:4G、P7

分别准备了1千、1万、5万行的Excel,各为58列。(此测试代码稍加整理即可做为Excel导入工具类)

加载时间(ms)
总耗时(ms)
总消耗内存量(M)

1千条:746K
POI
572
609
8

JXL
296
422
12

JXL-Close
172
329
-2

1万条:12.8M
POI
4847
5066
91

JXL
634
2236
135

1万条:7.3M
POI
1266
2019
73

JXL
488
1159
70

JXL-Close
343
1107
2

5万条:36.8M
POI
7556
8633
208

JXL
2319
5581
96

JXL-Close
2543
6210
-201

可以看出

1.加载速度及总耗时,POI3.2始终劣于JXL2.4

2.后续解析速度上(没列,是总耗时减去加载时间),POI3.2总体上优于JXL2.4

3.1万条数据以上时,消耗内存量方面,POI3.2劣于JXL2.4

两点说明:

1.这里面有个有趣的细节:那个1万条12.8M的文件是我根据那个5万条的Excel选中后4万行按Del生成的,后来发现那4万行并没有真正删除,还有,是空行而已。后选中后右键删除(试了几次后才成功),总算真正清除了,体积也缩小了很多,从实验看来,空白格不但对Excel体积有影响,对程序读取影响也很大。程序中POI方式读取中设计了对空白行的判断,但加载还是多花了时间;

2.标识为JXL的数据,为代码中未加入WorkBook.close()方法时试验(注意代码中注释掉的wb.close()一行);而JXL-Close则添加了close方法调用,可以看出时间消耗未明显增加,但内存消耗却大大降低(负的)。刚看了反编代码,果然,close方法中调用了System.gc()。

根据 haotangyu的代码进行的测试结果,还是上面那些文件,同样可以得出以上第1、2条结论:

加载时间(ms)
总耗时(ms)

1千条:746K
POI
499
515

JXL
203
359

1万条:7.3M
POI
1716
1731

JXL
390
1108

5万条:36.8M
POI
7878
7925

JXL
2309
5711

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/amosryan/archive/2010/03/24/5412340.aspx

热心网友 时间:2023-08-04 04:25

你可以用jxl包,结合JTable来实现对excel的增删改操作,然而对于含有图形、图像的excel这样是不行的。

JTable:
-----------------
-----------------
-----------------
更新 增加一行 删除该行

热心网友 时间:2023-08-04 04:25

上百度搜索 POI
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

可以上 Apache 官网下这个jar包,

热心网友 时间:2023-08-04 04:26

POI

poi.apache.org/

1.POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:\test.xls"));
2.HSSFWorkbook wb = new HSSFWorkbook(fs);
3. } catch (IOException e) {
4. e.printStackTrace();
5. }
6. HSSFSheet sheet = wb.getSheetAt(0);
7. HSSFRow row = sheet.getRow(0);
8. HSSFCell cell = row.getCell((short) 0);
9. String msg = cell.getStringCellValue();

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com