C# oledb中的select distinct查询只返回一行。为什么要这样做

C# oledb中的select distinct查询只返回一行。为什么要这样做,c#,sql,oledb,C#,Sql,Oledb,我试图获取excel列中的全部唯一条目,作为windows窗体gui中进度条的一部分。然而,当我调用下面的函数时,它只返回一行。我正在使用sheetwork.rows.count查找全部唯一的“过程ID”条目 public static int procedureTotals(string excelFile) { string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile

我试图获取excel列中的全部唯一条目,作为windows窗体gui中进度条的一部分。然而,当我调用下面的函数时,它只返回一行。我正在使用sheetwork.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;
    }
这里只检索一列数据。请将查询更新为

sql = "SELECT DISTINCT * FROM [" + worksheetName + "]";

请尝试以下操作:)

您选择的是列标题,因此它将返回一条记录“Producer ID”,因为您将它作为字符串加引号

您必须将列名更改为无空格的单词(Procedure\u ID),这样就不需要单引号。当您使用单引号时,系统会认为您试图在搜索中包含标题,并且只返回一行>>标题


我希望我的解释是正确的

您200%确定这里应该有多行吗?您需要在单元格区域而不是工作表上执行选择。只有一张工作表。是的,marc,excel文档中大约有55000个条目。罗伯特,我如何指定单元格范围?在[0]列中,如果有帮助的话?
sql = "SELECT DISTINCT * FROM [" + worksheetName + "]";