2017-03-21 4 views
1

セミコロンで区切られたコンテンツを含むテキストファイルを反復処理して、別のExcelファイルの特定の列のすべての値を検索するアプリケーションを作成します。excel.Range.Findが間違った値を返すC#

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アプリケーションで手動で検索して正しい結果を得ることができます。たとえば、値「40」を検索して結果をcurrent_findに戻すと、current_find.Cells[3].Value2は"42"かこれに似ていますが、私が期待した結果ではありません。

もし誰かが私にヒント、あるいはすばらしい解決策を与えてくれたら、あなたは

答えて

0

申し訳ありません:)ありがとう、私は私のミスを発見し、他の誰かが同じならば、ここでの答えです:

私はExcel.Find方法が一致した行を返すと思ったが、それは返すように思えます一致したセル。だからcurrent_find.Cells[3].Value2current_find.Value2に修正しました。

関連する問題