通过 Microsoft OLE DB 提供程序使用 EXCEL 作为数据源

Posted

技术标签:

【中文标题】通过 Microsoft OLE DB 提供程序使用 EXCEL 作为数据源【英文标题】:Using EXCEL as datasource through Microsoft OLE DB provider 【发布时间】:2011-05-23 13:19:31 【问题描述】:

我们经常使用一些 Excel 文件作为我们数据库中大量导入的数据源。在代码层面,我们总是将对应的数据源称为:

set rs = New ADODB.recordset
rs.open "SELECT * FROM [sheet1$]", myConnectionString, etc

当然,此过程仅在 Excel 文件中有一张名为 [sheet1] 的工作表时才有效。我想在这里添加一些工作表管理代码,但不必创建原始 Excel 文件的实例、打开它等等(我的用户可能会得到一个具有不同工作表名称的文件,并且可能没有安装 Excel )。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以使用 ADO OpenSchema 方法打开记录集,然后列出工作簿中的表(工作表)名称。

Public Sub SheetsInWorkbook()
    Dim strConnect As String
    Dim cn As Object
    Dim rs As Object
    Dim strPath As String

    strPath = CurrentProject.Path & Chr(92) & "temp.xls"
    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source='" & strPath & "';" _
        & "Extended Properties='Excel 8.0';"
    Set cn = CreateObject("ADODB.Connection")
    cn.ConnectionString = strConnect
    cn.Open
    Set rs = cn.OpenSchema(20) '20 = adSchemaTables '
    Debug.Print "TABLE_NAME"
    Do While Not rs.EOF
        Debug.Print rs!TABLE_NAME
        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

【讨论】:

为 HansUp 点赞!谢谢! 我希望这比自动 Excel 打开电子表格并检查工作簿中第一个工作表的名称更有效,这是我一直这样做的方式。

以上是关于通过 Microsoft OLE DB 提供程序使用 EXCEL 作为数据源的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Office 12.0 Access 数据库引擎 OLE DB 提供程序问题

SQL Server 2008 R2 中缺少 Microsoft Office 12.0 Access 数据库引擎 OLE DB 提供程序?

无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”的数据源对象

SQL Server:无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象

请求的 OLE DB 提供程序 Microsoft.ACE.OLEDB.16.0 未注册。如果未安装 32 位驱动程序,请在 64 位模式下运行该软件包

用于ODBC驱动程序的OLE DB提供程序错误“80004005”