以下是工作代码。我发现在查找条件中,通过将搜索条件的起点更改为:wsSheet.Cells [65000,columnNumber],它将解决问题。但这不是一个真正的解决方案。
是否有另一种方法可以强制Find操作从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");
}
}
答案 0 :(得分:0)
该参数是可选的,使用命名参数并且不指定它,这应该从范围中的“最顶层”单元格开始。
答案 1 :(得分:0)
从我能够收集到的内容,请尝试指定
range.Cells[range.Count]
作为你的“After”参数值,它至少可以去除硬编码的65000,并且应该对除整列之外的范围正常工作。