Контекст: Автоматизация MS Word с interop, C#, документ с 2000 разделами и 3 заголовками.Word Interop - верхние и нижние колонтитулы процесса только один раз
Проблема: эффективная обработка заголовков и колонтитулы (например, поиск текста & заменить в заголовке)
Кажется, способ обработки заголовков (или колонтитулы) в слове что-то вроде этого:
foreach (Microsoft.Office.Interop.Word.Section section in theDoc.Sections)
{
foreach (Microsoft.Office.Interop.Word.HeaderFooter header in section.Headers)
{
//processRange(theDoc, header.Range);
}
}
Проблема петля будет работать тысячу раз для этого документа я задеть, даже если он имеет только один заголовок. Поскольку раздел может иметь разные заголовки, очевидно, я не могу просто остановиться после первого попадания на заголовок. Но в данном случае, это задача, так как есть только 3 заголовки, а не 6000.
Я думал о том, что делает заголовок уникальным, так что я могу держать ключи в HashSet и просто пропустить, если уже есть.
Что это за ключ, если он есть? range.Start + range.End + range.StoryType (диапазон headerfooter)? range.text? Что-то другое ?
Возможно, существует лучший подход, чтобы избежать избыточности?
Благодарим за помощь.
-Cristian