订餐系统总结(二)sqlserver 与excel
想通过这篇文章描述一下从sqlserver导入数据到excel和从excel导出数据到sqlserver的几种方法。
一、通过SQL语句直接导入到数据库
数据的导入与导出是每个系统基本都具有的功能,在开始的时候,自己想的是把用户的信息从数据库中直接导入到sqlserver数据库,于是,沿着这个思路也就有了第一种方法:
首先要执行语句:
如果不执行上述语句,会报错,自己可以试下!(在sql2005的外围配置管理器里也可以设置)
然后执行如下语句(excel为excel97-03)便可以查询出excel中的数据,我查的是excel工作薄中的teacherInfo工作表
显示结果如下:
说明:1、提供程序版本:必须使用 Jet 4.0 提供程序;Jet 3.51 提供程序不支持 Jet ISAM 驱动程序
2、Excel 版本:对于 Excel 95 工作簿(Excel 版本 7.0),应指定 Excel 5.0;对于 Excel 97、Excel 2000 或 Excel 2002 (XP) 工作簿(Excel 版本 8.0、9.0 和 10.0),应指定 Excel 8.0 版本。
二、其实我原来是这样想的,后来通过和艳梅师姐讨论,说这是不可以的。对信息的导入不能通过直接对数据库进行操作,因为如果系统交付用户使用后,用户是不会操作数据库的,所以应该在系统的后台通过代码来实现用户信息的导入。
系统采用了三层架构,代码实现如下:
1、界面层,导入按钮:
2、B层的主要方法
3、在D层采用了抽象工厂加反射,所以直接给出DAL层的接口实现:
下面是SQLHelper中的对应的方法:
说明:列标题:默认情况下,系统认为 Excel 数据源的第一行包含可用作字段名的列标题。如果不是这种情况,则必须将该设置关闭,否则,第一行数据将会“消失”,而被用作字段名称。这可通过向连接字符串的扩展属性添加可选的 HDR= 设置来完成。默认情况下(无需指定)是 HDR=Yes。如果没有列标题,则需要指定 HDR=No;提供程序将字段命名为 F1、F2 等等
2、关于IMEX的值,可以参考:http://support.microsoft.com/kb/194124
http://www.cnblogs.com/xingyukun/archive/2007/04/30/733461.html
这样就实现excel的完美导入!
三、sqlserver导出到excel
可以直接通过DTS(data transformation service)导出和导入excel数据到sqlserver。因为都是图形化的界面,在此不再赘述了。
四、在系统里面有一个需求就是要把数据,导出到excel,现在给出从dataTable把数据导出到excel的实现:
说明:对于有的字符串是0开头的话,excel会自动把前面的0去掉,于是在导出的时候加了一个方法,就是在前面加一个单引号。(我的表第一列就是这种情况)。
到此,关于sqlserver与excel的几种导入与导出关系都介绍完毕了,其实还有好东西要了解和掌握的,如果想深刻地理解,最好还是参考MSDN的帮助。
猛击此处:http://support.microsoft.com/kb/257819