Windows フォーム GUI 内のプログレス バーの一部として、Excel 列内の一意のエントリの合計を取得しようとしています。それでも、以下の関数を呼び出すと、単一の行しか返されません。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;
}