在网上看到很多使用ASP.NET将数据库中的数据导出到excel的方法,有的甚至方法一、二、三、四列出一大堆,基本上全是通过DataSet或DataTable采用循环的方式每行每列的读取写入的,看得头晕。
如果你的数据库用的是ACCESS或SQLServer,为什么要这么麻烦呢?他们和EXCEL的很多东西是相通的,为什么不采用一种更优雅的方式呢?
经过本人摸索,终于找到,源代码就不给了,因为这种方法的源代码很少。思路如下:
1、提前在服务器某个目录,建立一个excel模板文件,里面包含一个我们所需要的对应名称的空表tablename。
2、在执行导出时,先把这个模板文件复制一份,新文件名newfilename可以加个时间或随机数后缀。
3、关键部分,一个SQL语句搞定:insert into [Excel 8.0;database=newfilename].[tablename$] select ... from ...(此语句在操作ACCESS导出EXCEL成功,SQLServer导EXCEL没试过)
4、正常的话,数据瞬间就导入到EXCEL文件中了。
5、直接告诉浏览器EXCEL文件的下载路径,或读取文件流向浏览器发送数据。
采用这种方法的是优点是程序编码简洁,导出速度快,服务端不需要安装EXCEL;缺点是导出的数据是不带任何格式的,你如果想设置excel文件里面的格式,那得再想办法了。