0

私がここで間違っていることは何ですか?例の TestCaseName の唯一の行を読み取ろうとするとcase_1、別の行のデータを取得しています。

読み取りが要求されているものだけが読み取られるようにするにはどうすればよいですか? where句を使用していますが、フィルタリングしていないようです。

string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", EXCELFILENAME);

string testCaseName = "case_1
string query = String.Format("SELECT * from [{0}$] WHERE TestCaseName=\"{1}\"", workbookName, testCaseName);

OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);

DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);  
DataTable myTable = dataSet.Tables[0]; 

TestCaseName       Name    Active   Status  etc...
----------------------------------------------------------------
case_1             Tom     yes      Completed   etc...
----------------------------------------------------------------
case_2             John    yes                  etc...
----------------------------------------------------------------
case_3             Jim     yes                  etc...
----------------------------------------------------------------
case_4             Don     yes                  etc...
----------------------------------------------------------------
case_5             Sam     yes      Visitor     etc...
----------------------------------------------------------------
4

1 に答える 1

0

これが私がテストしたコードです。それは完全に機能しているようです。そうでない場合は、スプレッドシートが私のものとまったく同じように構成されていないとしか思えません。

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 TestCaseName=\"" + 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();
}
于 2012-10-31T01:29:21.423 に答える