java大数据处理-千万级生成excel - 青春丶冭柔情
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、至于程序内存方面,只要你把把数据库批处理操作和文件写入操作及时的提交和刷新,程序基本上不会暂用太多的内存.性能上不会有问题.
以上是 java大数据处理-千万级生成excel - 青春丶冭柔情 的全部内容, 来源链接: utcz.com/z/392422.html