日期:2014-05-17  浏览次数:20409 次

求.net导出百万数据到excel 中思路
各位大侠,小弟咨询下,导出excel思路。
1.高性能,支持100万数据导出到Excel
2.希望30秒内
3.是做的Web系统,客户要求点按钮导出所有查询数据,数据量大概100万左右

一般都是传递个数据集DataTable或DataSet 然后导出。希望大家能聊聊,有什么办法,能满足要求,提高性能。谢谢大家了。
.net导出百万数据 .NET Web Excel

------解决方案--------------------
set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;DATABASE='+@FileSavePath+''',['+@SheetNameNow+'$])'

试试这个,把这个写成存储过程,可以导出到多个sheet中,效率我试过300万10秒钟以内,不过有个缺点是当一个人导出数据的时候,服务器cpu会使用很高,所以要限制一下当一个人导出的时候,另一个人不能导出,网上查找下相关资料

这个是导出到一个sheet中的
http://www.cnblogs.com/slyzly/articles/2657424.html
------解决方案--------------------
分页,NPOI ,多线程
------解决方案--------------------
引用:
谢谢大家意见,现在我实现了,但是时间要求有点差距,导出70万条数据到excel,分多个sheet,每个sheet6万,90万条数据大概120秒,是放在服务器端的,然后压缩,做个链接给他们自己去下载.一个企业一天只能全部导出1次,晚上会删除服务器导出的东西.导出的瓶颈在,如何加载百万条数数据,此时我都是放在内存中的.
1.方法实现是用微软COM,office自己的接口,优点是导出excel小,样子漂亮.但是占内存.
2.方法实现是用NPOI,第三方组件,速度也还可以,样子难看可能我不会调样式,内存占用小。


不建议一次加载数百万的数据,容错性,效率都得不到保证,建议还是以分页的方式去执行流程:

取一页,生成一页数据->(重复这个过程)