百万级数据读写Excle
来源:互联网 发布:支持双系统备份软件 编辑:程序博客网 时间:2024/05/15 23:51
Excel 2003及以下的版本。一张表最大支持65536行数据,256列。也就是说excel2003完全不可能满足百万数据导出的需求。Excel 2007-2010版本,一张表最大支持1048576行,16384列。
目前读写Excle常用JAVA技术分为POI、JXL、FASTEXCLE。相比其它两种技术,POI支持公式、宏以及格式设置,效率高。
对于大数据量的写入,POI在最新的版本中引入了sxssf,支持对大数据量的写操作。在创建SXSSFWorkbook对象时,需要设置一个窗口大小,sxssf也就是通过将大数据量先写到本地磁盘,在通过读取本地磁盘数据,根据设置的窗口大小,多次将数据写入Excle中。这个窗口大小对写Excle的性能有较大影响。官网提供的demo:http://poi.apache.org/spreadsheet/how-to.html#sxssf
对于大数据量的读取,POI没有提供相关读取接口,但是Excle2007创建的Excle文件内部实际是通过XML形式组织起来的。有兴趣的TX可以将Excle文件的扩展名修改为.ZIP,载解压看看该Excle文件的数据保存形式。通过流的方式对大数据量Excle文件的读取,可以大大缩短读取数据的时间。
下面附上测试的时间指标以及源码。
测试环境
内存:4G
CPU:4核
写入excle指标对比(每行30个单元格,写入1000以内随机数,单个sheet页)
数据量(条)
CPU(峰值)
内存(GB)
写入磁盘耗时(s)
写入Excle耗时(s)
总耗时(s)
文件大小
500
30%
2.81
0.719
0.234
0.953
75KB
1000
32%
2.81
0.719
0.281
1
147KB
5000
32%
2.85
0.968
0.438
1.406
717KB
1万
32%
2.86
1.219
0.64
1.859
1.43MB
5万
34%
2.86
3.172
2.610
5.782
7.13MB
10万
30%
2.86
5.610
5.656
11.266
14.2MB
50万
30%
2.87
30.741
25.258
55.999
71.4MB
100万
32%
2.87
57.938
131.813
189.751
143.1MB
读取excle指标对比(每行30个单元格,写入1000以内的随机数,10个sheet页)
数据量(条)
CPU(峰值)
内存(GB)
写入磁盘耗时(s)
写入Excle耗时(s)
总耗时(s)
文件大小
500
29%
2.81
0.734
0.281
1.015
80KB
1000
30%
2.81
0.734
0.328
1.062
151KB
5000
33%
2.85
0.813
0.640
1.435
724KB
1万
31%
2.86
0.937
1.078
2.015
1.43MB
5万
34%
2.92
2.827
3.546
6.373
7.14MB
10万
33%
2.94
5.457
5.159
10.616
14.2MB
50万
30%
2.93
23.618
24.524
48.142
71.2MB
100万
32%
2.97
47.782
96.834
144.616
142.41MB
工程中需要通过maven导入xercesImpl、poi-ooxml两个Jar包。
工程源码在我的CSDN资源中。地址:http://download.csdn.net/detail/jisuanjihongming/9768848
- 百万级数据读写Excle
- 百万级数据查询
- 百万级数据优化
- Repeater百万级数据分页
- 百万级数据库优化
- 百万级数据查询优化
- 百万级数据查询优化
- 百万级数据查询优化
- 百万级数据查询优化
- 百万级数据查询分页
- 百万级数据查询优化
- Neo4j 百万级数据导入
- mysql百万级数据优化
- jdbc导入百万级数据
- 百万级数据库优化
- Mysql 百万级数据优化资料
- Mysql 百万级数据优化资料
- SQL百万级数据库优化方案
- C++递归算法经典实例详解
- 网球追踪器
- $(function(){});只加载一次,jQuery预加载函数只加载了一次问题
- 3 faster rcnn的anchor产生问题
- 算法训练 数的统计
- 百万级数据读写Excle
- 4. Median of Two Sorted Arrays Hard
- AndHotFix 阿里HotFix(热修复)
- LeetCode Path Sum
- 智能网球拾取机器人
- VMware虚拟机中安装 Androidx86 4.4 R5安装配置详细图文教程
- java提高篇之理解java的三大特性——多态
- JDK动态代理
- background-position设置为百分比值