在线从Sharepoint上的Excel文件中读取数据,并将其批量插入sql-Visual Basic

问题描述

我有一个现有代码,可从共享驱动器中读取excel文件并将数据导入sql(Windows应用-Visual Basic)。现在,Excel文件已移至 Sharepoint Online 位置-使用OleDbConnection和sqlBulkcopy的现有代码不起作用。即使设置了对Sharepoint的授权访问权限,我也完全无法连接到打开的excel文件。 在研究了替代方法后-我能够使用Microsoft.Office.Interop.Excel在Sharepoint上获取excel文件的工作表名称,但是仍然卡住了将每张工作表中的数据插入sql的过程,因为它使用了OleDbConnection来优秀。 excel文件很大,有多个页面,因此最好使用批量插入...请让我知道如何实现?

批量插入的原始代码(在ExcelConnection1.Open()上获取错误-“ IErrorInfo.GetDescription失败,并显示E_FAIL(0x80004005)。”)请注意,filNm-实际上是URL“ https:// Actual Sharepoint path / filename” .xlsx“

Dim ExcelStringNm As String = "Provider=Microsoft.ACE.OLEDB.16.0;" &
                   "Data Source=" & filNm & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    Dim ExcelConnection1 As New OleDb.OleDbConnection(ExcelStringNm)

    For Cnt = 1 To SheetCnt

        Select Case Cnt
            Case 1 : SheetName = SheetName1
            Case 2 : SheetName = SheetName2
            Case 3 : SheetName = SheetName3
            Case 4 : SheetName = SheetName4
            Case 5 : SheetName = SheetName5
        End Select

        expr = "SELECT * FROM [" + SheetName + "]" + ";"
        Dim objCmdselect As OleDbCommand = New OleDbCommand(expr,ExcelConnection1)
        ExcelConnection1.open()
        sqlconn.ConnectionString = ConnString
        sqlconn.open()

        Using bulkcopy As sqlBulkcopy = New sqlBulkcopy(sqlconn)
            bulkcopy.DestinationTableName = TableNamesql

            Try
                objDR = objCmdselect.ExecuteReader
                bulkcopy.WritetoServer(objDR)
                objDR.Close()
                sqlconn.Close()
                ExcelConnection1.Close()
            Catch ex As Exception
            
                ExcelConnection1.Close()
                sqlconn.Close()
               
            End Try
        End Using
    Next

我使用以下代码获取工作表名称

将xlWorkSheet设置为Microsoft.Office.Interop.Excel.Worksheet Dim xlApp作为新的Microsoft.Office.Interop.Excel.Application

    xlApp.Workbooks.Open(filNm,True)
    Dim strSheetName As New List(Of String)
    For Each xlWorkSheet In xlApp.Sheets
        strSheetName.Add(xlWorkSheet.Name)
    Next

如何将xlWorksheet的每张表中的数据插入到sql中?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)