C#Excel查找函数异常
我正在尝试创建一个C#应用程序,它使用Microsoft.Office.Interop.Excel访问Excel工作表 我能够成功加载工作表并读取数据,但是,当我使用find函数时,会出现异常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.
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查询中的数据