最近有一个需求,就是用户点击WEB页面“导出”按钮时把SQL SERVER数据库中一张表的数据导出到EXCEL,然后再下载下来。网上的解决方案感觉不太满意,故来园子求大神们来讨论一下,提个解决办法。奖励不多,只求解决问题,大家共同进步!
150万的数据全部导到一个excel估计打开都会很费劲,多导几个文件,再不也要多导几个sheet。
excel最大行数,不同版本有所不同。
Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。
Excel2003的最大列数是256列,2007以上版本是16384列。
激活a1单元格,按CTRL+SHIFT+右箭头,选择1行所有单元格,输入=COLUMN(),按ctrl+enter填充,鼠标移到1行最后一个单元格,看到的数字就是Excel当前版本的最大列数。
excel最大行列数总结:在 Excel 2010 和 Excel 2007 中,工作表的大小为 16,384 列 × 1,048,576 行,在 Excel 97-2003 中,工作表的大小为 256 列 × 65,536 行。在 Excel 中,超出最大行列数单元格中的数据将会丢失。
补充,我要开骂了。
解决方案感觉不太满意,
这句话如此欠揍,就好象辛苦花了两个月时间,帮客户做了一个方案,换来一句,不太满意,
至于哪儿不满意,欠奉。
想起来工信部的网站审核。不通过的理由,您的网站不符合工信部相关审核要求,退回。
感觉楼主相当的工信部....
咱以前都是分割出来的 就算150万能导入一个 Excel文件里,打开也会卡死的。
以前是50万的分割 存储多个文件 当然不是针对客户啦
@爱编程的大叔: 想帮助的我感谢,不想帮助的我也不埋怨。有高招能赐教的我感激,不想赐教的你别说就行了,没有人强迫你。这都是自愿的,何必呢?
用reader
导出到excel的方法,我想你是懂的吧?如果不懂,或者你觉得方案不好,应该提导出到excel的优化方案。此处不赘述。
至于150万,是否这个才是关键?
excel的sheet的数据最大记录有限制(你大叔已经有描述,不赘述),明显你的150万是不可能的。
建议:
1、优化导出到excel的方案
2、对数据进行分类,每个大类一个文件夹或文件命名方式
3、再分小类,每个小类一个xlsx文件
4、对分类下的数据再分类(比如按日期)分sheet
5、导出数据
至于你大叔的开骂,那确实,别理他,他就一粗人~~~但是呢,你还真的值得你大叔开骂。
大家没义务去帮你解决问题,那是要死脑细胞的。但你有问题总要解决吧?对,要解决问题!
那怎么办?把你遇到的问题细化,比如这个方案的大体策略,存在什么的缺点,希望达到怎么样的效果等等,咱(咱也算你大叔的大叔吧)才好有的放矢啊,要不,有尸米也不能乱拉,对不?
想帮助的我感谢,不想帮助的我也不埋怨。有高招能赐教的我感激,不想赐教的你别说就行了,没有人强迫你。这都是自愿的,何必呢?
150W行导出成数据有多大?至少几百M了吧,你http直接下载几百M的东西,你们的服务器这么强?
这事我还真干过...
说说我的做法:(整体采用队列实现,所以导出不是及时性的,具体操作就是:客户发起导出任务,过段时间,自己来下载。)
1、利用DataReader写文本文件(csv);
2、利用Excel组件,转换csv到Excel格式并提供现在
你这个基本就是类似淘宝订单API里面的异步下载了。
基本上的思路肯定是这么干的,好的设计不过是如何更优雅一些。
干这事本身不难,难的是权衡,用户导向及UI设计。
@爱编程的大叔: 确实如此!这种方式能够突破那个行数限制。这个数据量(生成的csv超级大)也必须做队列。对于文件下载,还可以结合ftp来实现。曾近遇到过这么变态的客户,哎 ~