excel.Range.Find返回错误的值C#

时间:2017-03-21 10:12:23

标签: c# excel interop excel-interop

我想编写一个迭代文本文件的应用程序,用分号分隔内容,并搜索另一个Excel文件中特定列的每个值。

我能够在Excel中打开文本文件并以正确的方式打开(我使应用程序可见并检查其格式是否正确)。现在,如果我遍历文本表并使用Excel.Range.Find方法,它总是返回错误的行。

    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应用程序中手动搜索它们并获得正确的结果,但例如,如果我搜索值&​​#34; 40"并且结果返回到current_findcurrent_find.Cells[3].Value2是" 42"或类似的东西,但不是我期望的结果。

如果有人可以请给我一个暗示,甚至是一个很棒的解决方案。谢谢:))

1 个答案:

答案 0 :(得分:0)

抱歉,我发现了自己的错误,如果其他人也这样做了,这就是答案:

我认为Excel.Find方法返回带匹配的行,但似乎返回带有匹配的Cell。所以我更正了current_find.Cells[3].Value2current_find.Value2,我很高兴。