代码库(2)--Excel文件数据导入到SQL Server

时间:2022-12-07 06:34:54

说明
   在实施系统时,经常需将Excel中的数据导入到SQL中
   使用下面一句话即可将Excel数据导入到SQL中,此方法可将数据导入到已有的表结构中
   可直接使用SqlCommand执行即可

代码
SELECT 字段1[...] FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel   5.0;DatabASE=[Excel表.xsl文件的路径];HDR=YES;IMEX=1 ', Sheet1$')

备注:常见问题解决
【问题一】:已拒绝对 OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 的特殊访问。必须通过链接服务器来访问此提供程序。
【分析】:这是因为您当前用来访问数据库的登录的权限不够(权限太低)。
【解决】:要么您还用sa登录,要么修改当前登录的权限,
                步骤如下:企业管理器→安全性→登录→找到你所用的登录名→右击"属性"→服务器角色→将System Administrator选项打钩→确定即可。

【问题二】:OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。  OLE DB 错误跟踪[OLE/DB Provider 'MICROSOFT.JET.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005:  提供程序未给出有关错误的任何信息。]。
【分析】:
      首先先检查一下你用来导入的Excel表是否已经打开,如果打开了,请关闭后重试一下。
还是不行的话,继续往下看。如果你用来数据库操作的sql语句是用striing字符串保存的,且其中包含着.xsl文件的存放路径。那么问题可能就出在这个路径上。您是否值用了一个斜杠"\"。如果只有一个斜杠的话,在运行前,错误列表中会提示"无法识别转义序列"。一旦运行,该提示就会消失,可能您就是因为这样而没有注意到这错误。
【解决】:把单斜杠("\") 改成 双斜杠("\\")   如:e:\\aillo\\tt.xsl

【问题三】:关于【无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASC" 的实例。】的解决方法
实际上就是将SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)两个服务的登录身份改为LocalSystem

【问题四】:不支持对系统目录进行即席更新问题的解决方案
    USE master;  
    GO  
    EXEC sp_configure 'show advanced option', 1  
    RECONFIGURE WITH OVERRIDE;  --加上WITH OVERRIDE  ;  
    GO  

【问题五】:配置选项 'show advanced options' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。  
    消息 5808,级别 16,状态 1,第 2 行      不支持对系统目录进行即席更新。  

解决方案:  
    exec sp_configure 'show advanced options', 1;  
    GO  
    RECONFIGURE WITH OVERRIDE;  --加上WITH OVERRIDE  
    GO  

【问题六】:无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象
management studio--->服务器对象-->链接服务器-->Microsoft.Jet.OLEDB.4.0-->右键属性-->访问接口选项:全都不选