将数据从Excel导入SQL Server 2008

时间:2013-11-07 14:26:24

标签: sql vb.net excel sql-server-2008

我在使用VB.Net的网站上进行了重新设计。系统将从Excel 97-2003文件中获取相当数据,这些数据由第三方上传,然后上传到SQL 2008.这就是问题,上传的文件的扩展名为.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。

打开文件

我在这里有一种方法吗?或者,当使用具有自定义扩展名的文件时,这是不可能的。

1 个答案:

答案 0 :(得分:0)

好吧,由于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。其次,我必须在表格的末尾添加一个简单的'$',否则它将无法找到合适的工作表。