将数据从Excel导入到SQL Server 2008

我正在使用VB.Net的网站进行重新devise。 系统会从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的文件。

有没有我在这里忽略的方法? 或者,这是不可能的,当从一个自定义扩展名的文件工作。

好吧,我find了答案,感谢varocarbas的提示。 为了将来参考,请根据Excel文件types仔细检查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。 其次,我不得不在表格末尾添加一个简单的“$”,否则就无法find合适的工作表。