在Excel中如何搜索列中的值并使用c#获得该行中的所有值

本文关键字:何搜索 搜索 Excel | 更新日期: 2023-09-27 18:13:23

我正在尝试搜索列"C"上的值并获得匹配的单元格名称,例如C14,现在我如何选择第14行中的值。

     private static MyObject GetRowValue(int rowNumber)
     {
        string connString = "";           
        string path = "C:''Code''MyFile.xls";           
        connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='"Excel 8.0;HDR=Yes;IMEX=2'"";
        string query = "SELECT * FROM [Sheet1$A" + rowNumber + ":BD" + rowNumber + "]";
        using (OleDbConnection connection = new OleDbConnection(connString))
        {
            var adapter = new OleDbDataAdapter(query, connection);
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            DataTable dt = ds.Tables[0];
        }
     }

如果行号是10,他们我试图获得第10行的所有值,但它返回第10行之后的所有行。

在Excel中如何搜索列中的值并使用c#获得该行中的所有值

用这个公式:

string query = @"SELECT * FROM [Sheet1$"+ (rowNumber-1) + ":" + (rowNumber) + "]";

如果rowNumber=10,则获取第10行中的所有值。

这有帮助吗?

如果是我,我会让Excel为我做这项工作。你需要Office.Interop.Excel命名空间。

private static ReadRows(string SearchValue, int StartRow)
{
    int r = StartRow;
    Excel.Application xl = new Excel.Application();
    xl.Workbooks.Open(your workbook);
    Excel.WorkSheet ws = xl.Workbooks(1).Worksheets(1);
    do
    {
        if(ws.Cells(r,3).value == SearchValue)
        {
            // read the entire row
            string colA = ws.Cells(r,1).value;
            string colB = ws.Cells(r,2).value;
            //...
            // or loop through all columns 
            int c = 1;
            do
            {
                // add cell value to some collection
                c++;
            } while (ws.Cells(r,c).Value != "");
        }
        r++;
    } while (ws.Cells(r,3).Value != "");   // 3 because you want column C
}