excel.Range.Find returns 错误值 C#
excel.Range.Find returns wrong value C#
我想编写一个应用程序迭代一个文本文件,内容以分号分隔,并在另一个 Excel 文件的特定列中搜索每个值。
我能够在 Excel 中打开文本文件,并且打开方式正确(我使应用程序可见并检查其格式是否正确)。现在,如果我遍历文本 table 并使用 Excel.Range.Find
方法,它总是 returns 错误的行。
Microsoft.Office.Interop.Excel.Range current_find = usedRange_2.Cells[3].Find((String)(row.Cells[7]).Value2
Microsoft.Office.Interop.Excel.Range first_find = null
//for each row in tableOftextFile
if (first_find == null && current_find!=null)
{
first_find = current_find;
}
do
{
if (((String)current_find.Cells[3].Value2).Contains((String)row.Cells[7].Value2))
{
//this part is never reached somehow.
break;
}
else
{
current_find = usedRange_2.FindNext(current_find);
}
} while (current_find!=first_find && current_find!=null);
我的应用程序中的所有内容都运行良好,因此工作簿或工作表或任何其他方面应该没有问题。
查找操作必须找到一些东西,因为值存在,我可以在 Excel 应用程序中手动搜索它们并获得正确的结果,但是例如,如果我搜索值“40”并返回结果current_find
,current_find.Cells[3].Value2
是“42”或类似的东西,但不是我预期的结果。
如果有人可以给我一个提示,甚至是一个很棒的解决方案。谢谢:)
抱歉,我发现了我的错误,如果其他人也犯了同样的错误,这里是答案:
我认为 Excel.Find 方法 Returns 匹配的行,但似乎 return 匹配的单元格。所以我将 current_find.Cells[3].Value2
更正为 current_find.Value2
,我很高兴。
我想编写一个应用程序迭代一个文本文件,内容以分号分隔,并在另一个 Excel 文件的特定列中搜索每个值。
我能够在 Excel 中打开文本文件,并且打开方式正确(我使应用程序可见并检查其格式是否正确)。现在,如果我遍历文本 table 并使用 Excel.Range.Find
方法,它总是 returns 错误的行。
Microsoft.Office.Interop.Excel.Range current_find = usedRange_2.Cells[3].Find((String)(row.Cells[7]).Value2
Microsoft.Office.Interop.Excel.Range first_find = null
//for each row in tableOftextFile
if (first_find == null && current_find!=null)
{
first_find = current_find;
}
do
{
if (((String)current_find.Cells[3].Value2).Contains((String)row.Cells[7].Value2))
{
//this part is never reached somehow.
break;
}
else
{
current_find = usedRange_2.FindNext(current_find);
}
} while (current_find!=first_find && current_find!=null);
我的应用程序中的所有内容都运行良好,因此工作簿或工作表或任何其他方面应该没有问题。
查找操作必须找到一些东西,因为值存在,我可以在 Excel 应用程序中手动搜索它们并获得正确的结果,但是例如,如果我搜索值“40”并返回结果current_find
,current_find.Cells[3].Value2
是“42”或类似的东西,但不是我预期的结果。
如果有人可以给我一个提示,甚至是一个很棒的解决方案。谢谢:)
抱歉,我发现了我的错误,如果其他人也犯了同样的错误,这里是答案:
我认为 Excel.Find 方法 Returns 匹配的行,但似乎 return 匹配的单元格。所以我将 current_find.Cells[3].Value2
更正为 current_find.Value2
,我很高兴。