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;

 

 


posted on 2012-12-26 17:17  天上星  阅读(870)  评论(0编辑  收藏  举报

导航