各位大侠,小弟咨询下,导出excel思路。
1.高性能,支持100万数据导出到Excel
2.希望30秒内
3.是做的Web系统,客户要求点按钮导出所有查询数据,数据量大概100万左右一般都是传递个数据集DataTable或DataSet 然后导出。希望大家能聊聊,有什么办法,能满足要求,提高性能。谢谢大家了。.net导出百万数据.NETWebExcel

解决方案 »

  1.   

    我都怀疑100万数据的excel文件用excel打开能不能做到在30秒内。
      

  2.   

    100万数据的excel文件至少有几十M了吧,你确定用户想打开这样一个文件?
      

  3.   

    打开Excel的时候,也要从硬盘上加载数据到内存,然后才能在表格上显示出来。100万的数据,加载也要需要时间吧。
      

  4.   


    我有一个问题。Excel一个sheet能容纳100万数据么?打开的时候是一种什么机制啊,是要把所有的数据加载到内存,然后在显示么?还是跟分页似的,先加载一部分到内存?
      

  5.   

    哥们,我想这个真有难度,你只能分批存不同EXCEL 30秒估计够呛。再说客户查直接在线查就得了。打开那个EXCEL估计不是打开打不开的事。是他的机子死不死的事。
      

  6.   

    即使能导到excel中,估计那个文件打开时也够呛吧,直接 死机掉了
      

  7.   

    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
      

  8.   

    这个需求本身就是不合理的~
    Excel也有65535行等的上限约束~
      

  9.   

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

  10.   

    直接30s内打开这个excel应该也有问题吧!更何况还要生成,有难度!
      

  11.   

    我想不太可能!Excel2007最多只能容纳65000多一点数据,2010可以是1000000条数据。30秒?不可能