簡體   English   中英

將數據從Excel導入SQL Server 2008

[英]Import data from Excel to SQL Server 2008

我正在使用VB.Net的網站上進行重新設計。 系統將從Excel 97-2003文件中獲得相當多的數據,這些文件由第三方上傳,然后上傳到SQL2008。這是問題所在,上傳的文件具有擴展名.P。 我使用下面的代碼嘗試獲取數據並上傳到數據庫。

Dim xlApp As New Excel.Application
    xlApp.Workbooks.Open(Filename:=Server.MapPath("~/ExtractFiles/10-31-13.P"))
    xlApp.ActiveWorkbook.SaveAs(Filename:=Server.MapPath("~/ExtractFiles/10-31-13.xls"), FileFormat:=51)
    If Not xlApp Is Nothing Then
        xlApp.ActiveWorkbook.Close()
        xlApp.Quit()
        xlApp = Nothing
    End If

    PrmPathExcelFile = Server.MapPath("~/ExtractFiles/10-31-13.P")

    plmExcelCon = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PrmPathExcelFile + ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1""")
    cmdLoadExcel = New System.Data.OleDb.OleDbDataAdapter("select * from [10-31-13]", plmExcelCon)

    Dim dt As System.Data.DataTable
    dt = New System.Data.DataTable
    cmdLoadExcel.Fill(dt)
    plmExcelCon.Close()

當代碼到達cmdLoadExcel.Fill(dt)行時,我僅收到一條錯誤消息:“外部表未采用預期的格式。”。 我假設這與我嘗試更改文件擴展名有關。 但是,我似乎無法打開擴展名為.P的文件。

我在這里有什么方法可以忽略嗎? 還是在帶有自定義擴展名的文件中工作時這是不可能的。

好了,由於varocarbas的提示,我找到了答案。 為了將來參考,請對照Excel文件類型再次檢查OledbConnection。 在進行以下更改后,它起作用了:

plmExcelCon = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PrmPathExcelFile + ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1""")
cmdLoadExcel = New System.Data.OleDb.OleDbDataAdapter("select * from [10-31-13$]", plmExcelCon)

首先,要使用我的Excel版本,我需要使用ACE.OLEDB.12.0和Excel 8.0。 其次,我必須在表選擇的末尾添加一個簡單的“ $”,否則將無法找到正確的工作表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM