タイトルのとおり、Excel に似List<string> keywords;
たオブジェクト モデルがあります。Workbook
WorkbookCell
リスト内のキーワードに一致するすべてを取得したいと思います。
私は多分 Parallel 検索が良い考えだと思っていました:
//Loop through all the Worksheets in parallel
Parallel.ForEach(Workbook.Worksheets, (ws, st) =>
{
if (!st.ShouldExitCurrentIteration)
{
//Loop through all the rows in parallel
Parallel.ForEach(ws.Rows, (wr, tk) =>
{
if (!tk.ShouldExitCurrentIteration)
{
//Loop through all the columns in parallel
Parallel.ForEach(wr.Cells, (cell, ctk) =>
{
if (cell.Value != null)
{
var cellValue = cell.Value.ToString();
//Block keyword found, add the occurance
var matchedKeyword = IsKeywordMatched(cellValue);
if (matchedKeyword != null)
{
matchedKeyword.AddMatchedCell(cell);
}
}
});
}
});
}
});
実際、これはあまりにも多くの並列でしょうか? より良いアイデアがあれば教えてください。
** 通常は 20 未満のワークシートしかありませんが、すべてのワークシートには 10000 を超える行と数百の列が含まれます。