C# 使用OleDb数据检索读取Excel行
帮帮忙,我做错了什么?如果我试图将示例TestCaseName的唯一一行读取到C# 使用OleDb数据检索读取Excel行,c#,excel,C#,Excel,帮帮忙,我做错了什么?如果我试图将示例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;""", EXCELFI
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...
----------------------------------------------------------------
这是我测试的代码。它似乎工作得很好。如果你没有,那么我只能假设你的电子表格结构与我的不完全相同
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();
}
SQL中的“columns”代表什么?这是一个输入错误,应该是
TestCaseName
而不是columns
我无法使用几乎相同的代码重现您的错误。你的和我的唯一区别是我创建了一个OleDbConnection对象,并在OleDbDataAdapter的构造函数中使用了它。但我不认为这会改变你所说的。你检查过你的Excel表格在标题上方没有任何空行吗?我没有得到错误,但是它混淆了ex的数据。如果我想检索case2的数据,那么我得到的是case1的数据。你能发你的代码吗?你是如何测试的?