2009-06-16 9 views
0

我正在嘗試使用OleDbDataAdapter函數將Excel 97單個選項卡式電子表格加載到SQL Server表中。從我發現的所有文檔中,第一個參數應該是「select * from [sheet1 $]」。只有在工作表中的選項卡被命名爲Sheet1時,這對我纔有效。如果我將[]括號內的內容更改爲實際的標籤名稱,它也可以正常工作。將XLS文件加載到vb 2008中時的標籤名稱是什麼?

問題是加載的電子表格來自另一個系統,並且系統會在每次加載時更改標籤名稱。如何計算出標籤名稱是什麼,以便我的用戶不必打開電子表格並重命名標籤?

回答

1

好吧,首先,打開OLEDB連接到您的Excel電子表格。

然後,使用類似如下(VB.NET中所示):

Imports System.Data 
Imports System.Data.Odbc 
Imports System.Data.OleDb 

Dim DSN As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MYEXCELFILE.XLS;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;MAXSCANROWS=12""" 
Dim OleDbConn As New OleDbConnection(DSN) 
OleDbConn.Open() 
Dim tables As System.Data.DataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing) 
Dim tableName As String 
Dim canBeImported As Boolean 
For Each dr As System.Data.DataRow In tables.rows 
    tableName = dr.Item("TABLE_NAME").ToString 
    canBeImported = (tableName.IndexOfAny(New Char() {" ","[","]","'","""","`",";"}) < 0) 
Next 
OleDbConn.Close() 

通過所有的Excel文件中的表(表=表或指定範圍)的這種將循環,並獲得名字每個。另外,它將過濾掉任何無法通過ODBC訪問的字符的表(空間是最常見的問題)。

+0

我需要導入哪些名稱空間才能編譯? – user66061 2009-06-16 16:37:16

0

我看着這個在過去,我一直得出的結論,我不得不執行的人給我的電子表格選項卡上的名字,似乎沒有要找到一種可靠的方法他們。

相關問題