2016-07-04 21 views
0

docという単語のヘッダーとフッターからすべての行を取得しようとしています。CのInterop PIAを使用して、MS Wordのヘッダーとフッターのすべての行を取得します。

HeaderFooter header = this.Doc.Sections[1].Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary] 
string text = header.Range.Text; 

をしかしRange.Textプロパティは常に最後の行を返すようだ:私は、次のコードを使用しています。私のヘッダがある場合は:

ヘッダー行1

ヘッダー行2

ヘッダー行3

私のコードは常に "ヘッダ行3" を返します。フッターにも同様の結果が得られます。私はheader.Range.WholeStory()に電話してみました。私はheader.Range.Paragraphsを呼び出して試して、Paragraphsコレクションの繰り返しを試みました。私は完全に迷っています。 MSDNのドキュメントは謎めいていて、私はそれを通して自分の道を見つけることができません。どんな助けもありがとう。

FWIW:私は、各ドキュメントがワイドドキュメントのライブラリが会社全体のテンプレートに準拠していることを検証するユーティリティをC#で作成しています。テンプレートは、ヘッダーとフッターに特定の情報(タイトル、ドキュメント番号、日付など)を含むように要求します。各データは正規表現に対してもチェックされます。私はフィールドやブックマークなどの使用はエレガントだろうと知っていますが、私が作業しているドキュメントがヘッダとフッタにテキストとして埋め込まれた情報を持っているのではないかと心配しています。

+0

のヘッダーの残りの部分を試すことができます私は、数年にSOで投稿していません。いくつかのことは変わっていないことを知っておくと良いです。理由を言わずに私の質問を投票してもらっても無礼な人に感謝します。私は明らかに本当に助けを求めたり、誰かが答えを期待したりしませんでした。私の質問を閉じる投票もありがとう。明らかに、あなたは私に尋ねる価値があるものとそうでないものを分かっています。 SOのコンサルタントは豊富な情報を提供しています。私は最初のGoogleのヒットが、何らかの賢明な理由で閉鎖された、まだ私が求めていた答えがあるので、いつも笑います。ありがとうございました!あなたは主の仕事をしています。 – dFlat

答えて

0

答えが見つかりました。ほとんどの事のように、それは目立つ場所に隠れていた。 Console.WriteLine()を使用してコンソールからデバッグしていましたが、スラッシュRは私の最高のものでした。

private string GetUsableTextFromRange(Word.HeaderFooter headerFooter) 
{ 
    Word.Range range = headerFooter.Range; 
    string textWithSlashRs = range.Text; 
    string usableText = textWithSlashRs.Replace("\r", Environment.NewLine); 
    return usableText; 
} 

最後に私はすべてのデータを持っていました。これが他の人に役立つことを願っています。

1

あなただけの場合

foreach (Section section in this.Doc.Sections) 
    foreach (HeaderFooter header in section.Headers) 
     if (header.Range.Text.Contains("1")) Debugger.Break(); 
関連する問題