关于数据库导出excel的备忘录
长期以来一直需要做这样的工作,定期把数据库中某个表的内容原封不动的导出到excel中,大体上有几个需求
1.程序可以根据输入参数自动更换读取库表。
2.程序可以原封不动的复制表中所有列,并保存到excel
3.sheet中要加上标题行,内容为表名称
4.sheet的名称要和表名称一样
解决方案
1.使用数据库端技术实现,DTS加计划任务即可实现
2.使用应用程序读取数据,然后写入dts。
方案1问题
1.存储过程中库表名称做参数难以实现
2.没了
优点是稳定性好,有日志,好追踪,好维护
方案2问题
1.数据量大,数据库不能一次读完,读数据过程中数据连接断开,数据丢失
2.Excel因为各种奇怪原因崩溃.
3.应用程序本身崩溃,导致excel对象没有释放。
4.其它未知风险
优点
开发熟练。
最后使用vbs脚本开发,原因,用户不需要部署.net framework。
设计思路
1.把数据库链接,要执行的sql语句分别写到单独配置文件,实现工厂模式。这样每次修改配置文件即可
2. 读取内容写成.csv格式,这一格式是纯文本,写完之后再统一便利文件夹下的CSV,一次性另存为excel。这一技术的缺点是无法写入sheet名称,且不能保证sheet格式,后放弃
3.一旦抛出异常,便利内存中excel进程,然后杀死即可。
大体就写这样一个脚本,vbs链接数据库,vbs读文件 ,vbs写文件,vbs遍历进程杀死脚本。