首页 新闻 会员 周边

求助:希望园友指点Excel导出方案。

0
悬赏园豆:10 [已解决问题] 解决于 2013-06-06 14:00

场景:导出数据在10~20w,单行字段在50个左右,需要导出为xlsx格式。

测试:1、使用NPOI2.0时,导出xls(不超过65536行)很快,导出为xlsx时,会因为数量量的增加,速度明显缓慢很多,我导出时,会花接近20分钟,同时,最后会有一个错误(xml生成错误)。

   2、采用Aspose.Cells,这个导出速度什么的都非常快,完全符合要求。(为什么不采用:公司要求,不能使用付费软件(购买除外))。

问题:希望各位园友,提供免费或开源的导出大量数据到瞎xlsx的解决方案的思路,感谢大家~

幻天芒的主页 幻天芒 | 高人七级 | 园豆:37175
提问于:2013-06-05 09:31
< >
分享
最佳答案
0

看看这个如何 没测这速度怎样

FYI

http://epplus.codeplex.com/SourceControl/latest

收获园豆:10
Yu | 专家六级 |园豆:12980 | 2013-06-05 09:54

好,我先测试下,待会贴测试结果。感谢~

幻天芒 | 园豆:37175 (高人七级) | 2013-06-05 10:02
测试项目:Epplus
2013/6/5 10:55:03 Start Run... 2013/6/5 10:55:05 10000... 2013/6/5 10:55:08 20000... 2013/6/5 10:55:10 30000... 2013/6/5 10:55:13 40000... 2013/6/5 10:55:16 50000... 2013/6/5 10:55:19 60000... 2013/6/5 10:55:22 70000... 2013/6/5 10:56:03 End... 总数据:73258行,每行包含列42个。 耗时:1分钟;生成文件15.3M。 内存占用:500M。

这个速度是满足要求了,就是内存占用有点夸张~

幻天芒 | 园豆:37175 (高人七级) | 2013-06-05 10:58

@幻天芒: 

500M 还好了 
Yu | 园豆:12980 (专家六级) | 2013-06-05 12:30

@Yu: 考虑到并发的话,害怕内存不足。同样环境,Aspose只需要18s,内存150m。呵呵~。感谢你~

幻天芒 | 园豆:37175 (高人七级) | 2013-06-05 12:58

@幻天芒:

嗯 , 桌面形式 我还没试, 反正开源 看看有没有的优化,

不过我直接用WEB GRIDVIEW形式导出6W,速度还行15s左右

Yu | 园豆:12980 (专家六级) | 2013-06-05 13:12

@Yu: 导出65536以下,用NPOI就可以了,很快速。我这个也是Web的哦~Aspose.Cells,不管是效率还是内存占用,都是最好的,就是不敢用,哎。Epplus的速度还行,就是内存占用有点吓人,不知道是否有办法优化下。

幻天芒 | 园豆:37175 (高人七级) | 2013-06-05 17:57

@幻天芒: 我是通过这种方式导出的

http://www.cnblogs.com/yipeng-yu/archive/2013/03/21/2972720.html 

效率还是内存占用 都是可以的

Yu | 园豆:12980 (专家六级) | 2013-06-06 08:46

@Yu: 这种适合小数据量导出,数据量大了,可行性不大吧~我这个直接装DataTable是完全不行的。

幻天芒 | 园豆:37175 (高人七级) | 2013-06-06 11:58

@幻天芒: 我这也是 10w左右的导出 没什么问题

Yu | 园豆:12980 (专家六级) | 2013-06-06 13:44

@Yu: 哦,那还不错。我这边是用后台线程导出文件,然后前台直接下载的做法。数据量当前的还不大,只有10来w,不过是增量式的。现在的导出数据可能在20M,没有采用网页导出的方式,呵呵~谢谢你。

幻天芒 | 园豆:37175 (高人七级) | 2013-06-06 14:00
其他回答(1)
0

我的天呢!

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-06-05 09:44

何出此言?

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2013-06-05 09:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册