2015-09-28 28 views
0

在我當前的項目中,我將創建一個程序,每天讀取一個新的Excel電子表格(每天向網絡文件路徑添加一個新電子表格)並導出到數據庫。每當我嘗試寫入數據表變量時,都會收到此錯誤:連接字符串/數據適配器問題

System.Data.OleDb.OleDbException(0x80004005):外部表格未處於預期格式。

使用下面的代碼片段,在最後一行出現錯誤:

  xls_sql = "SELECT * FROM [" & FN & "]" 

     Dim dt2 As DataTable 
     Dim myAdapter2 As Data.OleDb.OleDbDataAdapter 
     dt2 = New DataTable() 
     myAdapter2 = New Data.OleDb.OleDbDataAdapter(xls_sql, Replace(My.Settings.xlsfile, "FileNameHere", FN)) 
     myAdapter2.Fill(dt2) 

我想我已經解決了該問題是,即使程序(我沒有的知識或訪問)添加日常的Excel文件將它們列爲.xls文檔,它們實際上被格式化爲.xml文檔。我的第一個線索是,當打開其中一張紙時,它看起來像一個普通的Excel表格,但是當我去「另存爲」時,默認選擇的選項是「XML」。

我使用這個當前的連接字符串XML:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\temp\FileNameHere;Extended Properties="Excel 12.0 Xml;HDR=YES"; 

,因爲我不得不尋找一個合適的替換我以前的.xls串,我知道的作品。

這個字符串是否正確?
任何人都可以闡明我的問題?

+0

右鍵單擊xls文件並用記事本打開:它包含XML代碼?如果這樣的話使用.NET類來讀取XML。 – tezzo

回答

0

我不確定它是否能解決您的問題,但我有一個導入xls電子表格的功能。我使用的連接字符串是這樣的:

Dim conexao_Excel As String = "Provider=Microsoft.Jet.OleDb.4.0;" _ 
          & "data source=""" & arquivo & """;" _ 
          & "Extended Properties=Excel 8.0;" 

da = New OleDb.OleDbDataAdapter("SELECT * FROM [" & nome & "$] WHERE valor IS NOT NULL ", conexao_Excel) 

它對我來說非常合適。 arquivo是包含文件路徑的變量,nome是表單的名稱。

希望有所幫助。