oh my god,写20万数据到Excel只需9秒
2013-08-01 23:26
120 查看
还是菜鸟时,在某个.Net项目中,用户需要从业务系统导出Report,而数据量通常都在上万条以上,最初采用的方式就是在服务器端用NPOI生成Excel,把Data一行一行一个Cell一个Cell地写到Excel中的每个Cell中,若用户对Report格式要求高一点,还要一个Cell一个Cell设置单元格的Style,然后把Report给用户下载。结果上万条的数据用户导出需要几十分钟。这样导出Report,是个人都要crazy了。。。。。
当时,老板也没给压力,只是说,能不能搞定,搞不定我就从外面找个高手解决,下午4点给我答复,有压力才有动力,终于在某篇技术贴中发现,用NPOI写Excel有更方便更快捷的方式,可以把数据组织成二维数组,一次性写入到Excel中一个Range中,Style也可以通过Range直接设置。优化后,导出上万条数据只需几十秒,老板笑了。贴出最经典的几行代码
Range range = xst.get_Range(excel.Cells[0, 0], excel.Cells[9999,9999]);
range.Value2 = datas; //datas为一个二维数据数据
今年又在Java项目中,昔日的菜鸟也成了带头大哥,某小弟用常规的思路导出Report,上万条数据竟然需要十几分钟,还时不时地报内存溢出,实在时让人崩溃。查了下API,Java的apache中的POI却没有Range写入Excel的接口,但却提供了通过XML一次性写入Excel的方式,Demo了一下,写入20万数据到Excel,只需9秒。这次我笑了。。。。
参考以下网址:
http://libjakarta-poi-java.sourcearchive.com/documentation/3.6plus-pdfsg/BigGridDemo_8java-source.html
QQ:251171985
E-Mail: jthuahua@126.com
当时,老板也没给压力,只是说,能不能搞定,搞不定我就从外面找个高手解决,下午4点给我答复,有压力才有动力,终于在某篇技术贴中发现,用NPOI写Excel有更方便更快捷的方式,可以把数据组织成二维数组,一次性写入到Excel中一个Range中,Style也可以通过Range直接设置。优化后,导出上万条数据只需几十秒,老板笑了。贴出最经典的几行代码
Range range = xst.get_Range(excel.Cells[0, 0], excel.Cells[9999,9999]);
range.Value2 = datas; //datas为一个二维数据数据
今年又在Java项目中,昔日的菜鸟也成了带头大哥,某小弟用常规的思路导出Report,上万条数据竟然需要十几分钟,还时不时地报内存溢出,实在时让人崩溃。查了下API,Java的apache中的POI却没有Range写入Excel的接口,但却提供了通过XML一次性写入Excel的方式,Demo了一下,写入20万数据到Excel,只需9秒。这次我笑了。。。。
参考以下网址:
http://libjakarta-poi-java.sourcearchive.com/documentation/3.6plus-pdfsg/BigGridDemo_8java-source.html
QQ:251171985
E-Mail: jthuahua@126.com
相关文章推荐
- on my god,写20万数据到Excel只需9秒
- 写20万数据到Excel只需9秒
- OH MY GOD! 我的后台页面都被IE可缓存了。。。
- 如何快乐上手DroiBaaS 云代码操作! Oh My God, 怎么会这么简单!
- MyReport数据导出引擎——MyReport的好帮手,支持Excel导出
- 对序列化后的buffer进行strlen操作, oh my god
- Seasons' Show (Oh My God Your Granddaughter's Gone) [UNFINISHED]
- OH MY GOD
- LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面
- Flex:MyReport数据导出引擎——MyReport的好帮手,支持Excel导出
- InstallShield, Product Codes, Package Codes, and Upgrade Codes, Oh my god!
- oh mygod!伤寒还是什么?
- map按value排序, oh my god
- Seasons' Show (Oh My God Your Granddaughter's Gone) [UNFINISHED]
- Oh my God,甲骨文oracle 准备收购 Sun 了.
- oh my god
- sql大容量数据导出到Excel(单文件多sheet方法,适合数据不超过20万)
- 在Excel的一个sheet中导出大于20万的数据
- Oh My God
- oh my god windows 默认的FD_SETSIZE 居然是64