上下文:使用互操作的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
答案 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