2012-11-01 81 views
0

我創建一個測試用例的不同測試案例數量和每個測試用例如何訪問excel頭所具有的ID給它,我試圖從讀取Excel測試數據...使用OLEDB使用C#

這裏是我的excel表的佈局,不知道怎麼回事,拿出正確的設計

Test Cases

這裏我讀的代碼:

string connectionString = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + filename + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; 
    string testCaseName = "case_1"; 
    string query = "SELECT * from [Sheet1$] WHERE test_case_id =\"" + testCaseName + "\""; 
    DataTable dt = new DataTable(); 

    using (OleDbConnection conn = new OleDbConnection(connectionString)) 
    { 
     conn.Open(); 

     using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, conn)) 
     { 
      DataSet ds = new DataSet(); 
      dataAdapter.Fill(ds); 
      dt = ds.Tables[0]; 
     } 

     conn.Close(); 
    } 

問題:

test_case_id == 001_test工作正常,沒有任何問題

,但如果通過test_case_id = 0059_test然後我得到的數據同test_case_id這是0059_test但我'沒有得到正確的標題頭名,我我得到的標題爲test_case_id 001_test

我的問題:如何獲得特定的test_case_id(intro_text,api_text ...._?

+0

Excel中的數據需要採用常規表格格式。你應該只有一行標題。 –

+0

我知道,但我有一個要求,需要閱讀多個標頭 –

+0

我認爲你將不得不讀取所有的數據到一個表中,並單獨處理。根據您擁有的數據量以及有多少測試用例,我可能會考慮構建引用行號的每個標題ID的列表,然後您可以在列表中進行查找。看看我提供給這個問題的答案:[有沒有辦法找到一個範圍...](http://stackoverflow.com/questions/12948392/is-there-a-way-to-find- a-range-in-a-range-in-excel-csharp) –

回答

0

默認第一行作爲標題行。您需要在查詢中指定標題行。

例如:爲test_case_id 0059_test標題行數爲3,那麼你必須按如下方式編寫查詢:

string query = "SELECT * from [Sheet1$A3:C] WHERE test_case_id = \"" + testCaseName + "\""; 

其中A3是第一列標題,C是最後一個數據列。