Excel和数据库的导入与导出
平常我们把Excel中的资料导入到数据库中时,经常会用VBA的方式操作,速度慢并要写许多代码。Excel文件本身也是一个小型数据库。
连接Excel时用的是连接Access数据库的模式,即OleDB Jet 4.0的驱动,连接的ConnectionString可以设计为以下格式:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\aa.xls;Extended Properties="Excel 8.0"
其它的操作和平常数据库一模一样。
如果要把数据库如MSSql中的表导入到Excel中,则用MSSql的连接字符串,说白了就是用select * into destable from sourcetable这个语句。
如下的Sql命令语句:
select top 65535 * into [Excel 8.0;database=aa.xls].[Sheet1] from table01
因为Excel每个sheet最多只能有65536行,最多为256列,所以在导出大量的数据时最后加上top 65565,还有一行为列头。
[Excel 8.0;database=aa.xls].[Sheet1]是要导入的Excel的sheet,要用广括号括起来,注意:这里的aa.xls是不存在的,所以在执行此语句之前一定不要存在此文件。
如果想把数据追加到一个Excel中,即导入前Excel已存在,则用insert into destable select * from sourcetable这样的语句,
但一定要设计好相关的字段和数据类型,要不会出错。
注意:在连接Access时,新的操作系统用以下的连接字符串会提示:
Provider=Microsoft.Jet.OLEDB.4.0;Password=110;Data Source=E:\db1.mdb;Mode=Share Deny None;Persist Security Info=True
会出现以下提示:
大家可以在下图中设置一下:
在图一中不要保存密码
图一
在图二中设置它的密码:
这样的话就可以连接成功了,以上是Delphi中的设置,用C#2010是正常的。
此时它的连接字符串为:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\db1.mdb;Persist Security Info=False;Jet OLEDB:Database Password=110;