2016-11-11 6 views
0

コンテキストinteropを持つMS Wordオートメーション、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つのヘッダーしかないので、目的は630ではなくです。

ヘッダーをユニークにすることを考えていたので、ハッシュセットにキーを保持して、そこにあればスキップします。

もしあれば、その鍵は何ですか? range.Start + range.End + range.StoryType(headerfooterの範囲)? range.text?他に何か?

おそらく冗長性を避けるためのより良いアプローチはありますか?

ありがとうございました。

-Cristian

答えて

0

私はただ1つまたは少数のセクションや多くのセクションがある場合story_rangeモードを使用するがある場合、セクション・モードを使用して基本的に、ハイブリッドソリューションになってしまいました。インターネット上の投稿に基づいてセクションモードが実際に速いのは、セクションが1つしかない場合です。

セクションモードについては、質問に記載されています。 物語レンジモードは、これらの記事で説明されています

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