我正在尝试获取excel列中的唯一条目,以获取我的Windows窗体gui中的部分进度条。然而,当我调用下面的函数时,它只返回一行。我正在使用worksheet.rows.count来查找唯一的“过程ID”条目。
public static int procedureTotals(string excelFile) {
string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile
+ ";Extended Properties='Excel 12.0;HDR=YES;'";
string sql = null;
string worksheetName = null;
DataTable schema = null;
DataTable worksheet = null;
DataSet workbook = new DataSet();
OleDbConnection objconn = new OleDbConnection(connection);
objconn.Open();
schema = objconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
worksheetName = schema.Rows[0]["Table_Name"].ToString();
sql = "SELECT DISTINCT 'Procedure ID' FROM[" + worksheetName + "]";// GROUP BY 'Procedure ID'";
//data adapter
OleDbDataAdapter objAdapter = new OleDbDataAdapter();
objAdapter.SelectCommand = new OleDbCommand(sql, objconn);
objAdapter.Fill(workbook);
worksheet = workbook.Tables[0];
objconn.Close();
return worksheet.Rows.Count;
}
答案 0 :(得分:1)
sql = "SELECT DISTINCT 'Procedure ID' FROM[" + worksheetName + "]";
这里只检索一列数据。请将查询更新为
sql = "SELECT DISTINCT * FROM [" + worksheetName + "]";
并尝试这个.. :))
答案 1 :(得分:0)
您正在选择列标题,因此它会返回一条记录"生产者ID"因为你把它放在它周围,好像它是一个字符串。
您将不得不将列名更改为非间隔字(Procedure_ID),因此您不需要单引号。当您使用单引号时,系统会认为您尝试在搜索中包含标题,并且只返回一行>>标题。
我希望我解释正确。