2012-05-14 40 views
3

我面臨OLEDB查詢2個問題如何使用OLEDB查詢,如果列名不列入從第一行

(問題1)

開始我需要的列名從Excel中得到的列名用戶上傳Excel表單。 我爲Excel連接字符串

connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+fileNameAndPath+"; 
Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; 

然後,我將使用這個命令

connection.Open(); 

DataTable schemaTable = connection.GetSchema("Columns"); 
Taking column name from each datarow like this 
string name = (string)row["COLUMN_NAME"]; 

它工作正常,如果列名出現在Excel中的第一行。但是,如果列名稱行不是從第一行開始的,它會將列名稱命名爲「F1,F2,......」。我該如何解決這個問題?有沒有什麼辦法可以告訴查詢,從哪一行獲取列名?

(問題2)

喜歡列標題我需要從從Excel特定範圍選擇數據。說喜歡從3行取數據,以行12 所以我用這樣的查詢,

Select RepName, Country from [Sheet1$3:12]. 

但它拋出異常,消息像這樣的「爲一個或多個必需的參數給出沒有價值。」

查詢中是否有語法錯誤?

如果是這樣,任何一個請告訴如何糾正查詢?

+0

我認爲問題2可能是問題1的後果。不幸的是,與電子表格交談的這種方法將只使用它認爲是列名的數據範圍的第一行。如果您可以控制用戶上傳的電子表格的格式,我會將列標題移動到第1行。如果不是,則必須將您的列名稱稱爲「F1」,「F2」而不是「Repname」和「Country ' – Pynner

+0

嗨Pynner,問題2不是問題1的後果。我通過在select語句中給出範圍解決了問題2,但我無法解決問題1 – user1294617

回答

1

問題1不能通過OLEDB解決,Excel是不是一個數據庫,它可以做的唯一事情是使用第一行作爲列名,或者第一行是空白,F1等

唯一你可以解決這個問題的方法是使用互操作來刪除空白行,然後通過OLEDB查詢或通過interop解析整個表格。

相關問題