C#Excel查找函数异常

C#Excel查找函数异常,c#,excel,office-interop,C#,Excel,Office Interop,我正在尝试创建一个C#应用程序,它使用Microsoft.Office.Interop.Excel访问Excel工作表 我能够成功加载工作表并读取数据,但是,当我使用find函数时,会出现异常 Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(sheetName); Excel.Worksheet xlWorksheet = xlWorkbook.

我正在尝试创建一个C#应用程序,它使用Microsoft.Office.Interop.Excel访问Excel工作表

我能够成功加载工作表并读取数据,但是,当我使用find函数时,会出现异常

Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(sheetName);
Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
Excel.Range colRange = xlWorksheet.Columns["A"];
Excel.Range resultRange = colRange.Find(row[2].ToString(), null, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false, false, Type.Missing);
(我确信第[2]行已初始化并成功使用ToString())

例外情况如下所示:

Exception thrown: 'System.Runtime.InteropServices.COMException' in mscorlib.dll
   at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
   at Microsoft.Office.Interop.Excel.Range.Find(Object What, Object After, Object LookIn, Object LookAt, Object SearchOrder, XlSearchDirection SearchDirection, Object MatchCase, Object MatchByte, Object SearchFormat)
   at ServiceBOMVATool.MainWindow.EnterModel_Click(Object sender, RoutedEventArgs e) in C:\Users\ta4935\source\repos\ServiceBOMVATool\ServiceBOMVATool\MainWindow.xaml.cs:line 445

有人知道可能出了什么问题吗?提前感谢您的帮助。

您将
null
作为第二个参数传递(对于
之后的
参数)。但是
null
在这里不是有效值。如果您不想传递此参数,请使用
Type.Missing
,就像您对上一个参数所做的那样:

Excel.Range resultRange = colRange.Find(
    row[2].ToString(), 
    Type.Missing, // Null is not allowed here
    Excel.XlFindLookIn.xlValues, 
    Excel.XlLookAt.xlPart, 
    Excel.XlSearchOrder.xlByRows, 
    Excel.XlSearchDirection.xlNext, 
    false, 
    false, 
    Type.Missing);
或者,只需按名称指定要使用的参数。这将自动为所有未指定的参数使用
Type.Missing

// Specifiy parameters by name to leave out some
Excel.Range resultRange = colRange.Find(
    What: row[2].ToString(),
    LookIn: Excel.XlFindLookIn.xlValues,
    LookAt: Excel.XlLookAt.xlPart,
    SearchOrder: Excel.XlSearchOrder.xlByRows,
    SearchDirection: Excel.XlSearchDirection.xlNext,
    MatchCase: false,
    MatchByte: false);

我猜xlsheet.Columns[“A”]必须是范围。你能试着确认一下吗?@PraveenRai我改变了这一点,仍然抛出了同样的例外OK,你是怎么弄到的?colRange.Find(第[2]行)。ToString(),null,…行来自一个数据表,其中包含我正在与列a中的excel工作表进行比较的SQL查询中的数据