如何使用C#使用OLEDB访问Excel头文件

时间:2012-11-01 20:01:10

标签: c# excel

我正在为多个不同的测试用例创建一个测试用例,每个测试用例都有id,我试图从excel中读取测试数据......

这是我的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

的标头

我的问题:如何获取特定{{1}}的标题(intro_text,api_text ...._?

1 个答案:

答案 0 :(得分:0)

默认情况下,第一行被视为标题行。您需要在查询中指定标题行。

例如:对于 test_case_id 0059_test标题行号为3 ,您必须按如下方式编写查询:

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

其中A3是第一个列标题,C是最后一个数据列。