さて、指定されたテキスト文字列を含む行を見つける必要がある非常に大きな Excel シートがあります。このシートのサイズは 10,000 行程度です。現在、次のようなことを行っています。
sheet = workbook.ActiveSheet;
// FIND the tape id in column: __________
int cellRow = 0;
int x = 0;
for (x = 1; x <= 1000000; x++)
{
if (sheet.Cells[43][x].text.Contains(tapeID))
{
cellRow = x;
break;
}
}
問題は、これがかなりの時間続くことです....したがって、私のニーズには遅すぎます。sheet.find() メソッドを実行しようとしましたが、間違ったセル全体が返されました..誰かが sheet.find の実装を手伝ってくれたり、これを行うためのより速い方法について教えてくれませんか?
次のようにfindを実装しました:
sheet = workbook.ActiveSheet;
Microsoft.Office.Interop.Excel.Range currentFind = currentFind = sheet.Cells.Find(tapeID, Type.Missing,
Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues, Microsoft.Office.Interop.Excel.XlLookAt.xlPart,
Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, false,
Type.Missing, Type.Missing);
しかし、文字列値 = currentFind[0][0].Text で中身を見ると
私は間違ったセルを取得します.....Excelはここでゼロアドレスを使用しますか?...調査します