Word Interop - 仅处理页眉和页脚一次

时间:2016-11-11 17:12:58

标签: c# ms-word office-interop

上下文:使用互操作的MS Word自动化,c#,包含2000个部分和3个标题的文档。

问题有效处理标题和页脚(例如文字搜索和标题中的替换)

在单词中处理标题(或页脚)似乎是这样的:

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。

我在考虑是什么使得标头是唯一的,所以我可以将密钥保存在一个哈希集中,只要已经存在就跳过。

如果有钥匙,该钥匙是什么? range.Start + range.End + range.StoryType(headerfooter的范围)? range.text?还有别的吗?

是否有更好的方法可以避免冗余?

感谢您的帮助。

-Cristian

1 个答案:

答案 0 :(得分:0)

我最终得到了一个混合解决方案,如果只有一个或几个部分,则基本上使用sections-mode;如果有很多部分,则使用story_range-mode。基于互联网上的帖子,如果只有一个部分,则分段模式实际上更快。

问题中描述了部分模式。 故事范围模式在这些帖子中描述:

https://wls.wwco.com/blog/2010/07/03/find-and-replace-in-word-using-c-net/ http://word.mvps.org/faqs/customization/ReplaceAnywhere.htm

相关问题