java大数据处理-千万级生成excel

     最近在整理整理java大数据处理这一系列的文章,在网上发现一个java写excel文件的方式,非常的有技巧,并且性能非常高,我在自己机器上简单的操作了一下,感觉非常的棒
 

这里就把这个方法和大家分享一下,一起讨论一下这种方式的成熟度.
 
简单说明
   1、核心原理-查看excel的"源代码" 找到数据存放的位置,然后用我们即将要写的数据替换成那一部分数据即可!!
   2、excel每个文件的文件条数都是有限定的,具体多少忘记了,不要向一个excel里面写太多的数据.如果数据太多,可以分文件存储.
 
下面简单的说一下开发思路.
 
1、先 新建一个excel文件。填上要你要生成文件的基本格式 - 表头和两条记录
2、直接通过excel的 另存为功能把整个excel另存为 html文件,我们这里就叫 model.html
3、用任意文本编辑器打开网页model.html,就看到源代码!!
4、直接通过 肉眼观察就能够看到整个model.html文件分为3个部分   文件头  + 记录行  +文件尾。
5、把文件头和文件尾巴单独提取出来备用
6、记录行里面的内容就是excel里面存放的数据,我们只需要 把数据库的数据查询出来循环生成这种格式的数据即可.
   6.1、 把文件头写入到一个新文件 temp.txt文件中去
   6.2、直接使用jdbc从数据库中查询数据,比如一次查询5000千行数据,通过StringBuffer拼接成上面 记录行的格式,然后追加到文件temp.txt中去
        循环这一步骤,知道所有的数据全部生成并且追加到temp.txt文件中
   6.3、 把文件尾追加到temp.txt中去
7、 通过java io流把 temp.txt 文件写入到一个后缀为xls的文件即可。
 
注意事项
 
 1、如果数据量很大的话建议分批次从数据库中查询,然后写入到文件中, 每批次务必要调用 flush 方法把数据刷到文件里面去.
 2、如果数据库要进行事务操作,并且数据库特别大的话, 可以根据上面的批次进行分配处理,每个批次务必要执行 PreparedStatement.executeBatch()
 3、至于程序内存方面,只要你把把数据库批处理操作和文件写入操作及时的提交和刷新,程序基本上不会暂用太多的内存.性能上不会有问题.

转载于:https://www.cnblogs.com/wh-king/articles/2505726.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值