Как заголовок, у меня есть List<string> keywords;
а также Workbook
объектная модель, аналогичная Excel.
Я хотел бы получить все WorkbookCell
, которые соответствуют ключевым словам в списке.
Я подумал, может быть, параллельный поиск будет хорошей идеей:
//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 строк и сотен столбцов.