C#中的Excel查找操作将跳过第一行

本文关键字:一行 Excel 中的 查找 操作 | 更新日期: 2023-09-27 18:27:32

下面是一个工作代码。我发现,在查找条件中,通过将搜索条件的起点更改为:wsSheet.Cells[65000,columnNumber],可以解决这个问题。不过,这并不是一个真正的解决方案。

是否有其他方法可以强制从excel表格的第一行开始查找操作?

public static string FindFirstStringInColumn(Excel.Workbook wbBook, string strSheet, string strSearchMe, string strColumnLetter)
    {
        Excel.Worksheet wsSheet = null;
        wsSheet = (Excel.Worksheet)wbBook.Worksheets[strSheet];
        Excel.Range currentFind = null;

        Excel.Range range = (Excel.Range)wsSheet.Columns[strColumnLetter, Type.Missing];
        int columnNumber = ExcelCOM.GetColumnNumber(strColumnLetter);
        //~~> Search for strSearchMe
        currentFind = range.Find(strSearchMe,
                        wsSheet.Cells[65000, columnNumber],
                        Excel.XlFindLookIn.xlValues,
                        Excel.XlLookAt.xlPart,
                        Excel.XlSearchOrder.xlByRows,
                        Excel.XlSearchDirection.xlNext,
                        false,
                        false,
                        false);
        if (currentFind != null)
        {
            string sAddress = currentFind.get_Address(false, false, Excel.XlReferenceStyle.xlA1, false, false);
            //~~> Display the found Address
            return (sAddress).ToString();
        }
        else
        {
            return ("Nothing found");
        }
    }

C#中的Excel查找操作将跳过第一行

该参数是可选的,请使用命名参数,不要指定它,它应该以范围中的"最顶端"单元格开始。

根据我收集到的信息,尝试指定

range.Cells[range.Count]

作为您的"After"参数值,它至少可以去掉硬编码的65000,并且应该可以正确地用于除整列以外的范围。