5

Visual Studio で OXML を使用して Word 文書を作成しています。どれくらいの長さになるかわかりませんが、ドキュメントのフッターに簡単なページ番号を追加する必要があります。

ヘッダーとフッターを生成するために、これを使用しました: https://msdn.microsoft.com/en-us/library/ee355228(v=office.12).aspx

私が理解しているように、これにより、ドキュメントに何かを書き込む前に、デフォルトのヘッダー/フッターが事前設定されます。これにページ番号を追加できるかどうかよくわかりません。私はこれに丸一日立ち往生していたので、本当に助けていただければ幸いです...

4

2 に答える 2

9

SimpleFieldをと で追加することInstructionにより、動的なページ番号を追加できます"PAGE"。Word は、そのようなフィールドを正しいページ番号で自動的に更新します。

に追加されるに を含めるために、GeneratePageFooterPart提供したリンクに を適応させることができることをコード化するには:SimpleFieldRunFooter

private static Footer GeneratePageFooterPart(string FooterText)
{
    var element =
        new Footer(
            new Paragraph(
                new ParagraphProperties(
                    new ParagraphStyleId() { Val = "Footer" }),
                new Run(
                    new Text(FooterText),
                    // *** Adaptation: This will output the page number dynamically ***
                    new SimpleField() { Instruction = "PAGE" })
            ));

    return element;
}

PAGEテキストを後置することにより、ページ番号の形式を変更できることに注意してください。Ecma Office Open XML Part 1 - Fundamentals And Markup Language Reference.pdfから:

現在のページ番号が 19 で、次のフィールドが更新された場合:

PAGE
PAGE \* アラビアダッシュ
PAGE \* アルファベットのページ
\* ローマ字

結果は次のとおりです。

19
- 19 -
S
xix

たとえば、ローマ数字を取得するには、SimpleField上記のコード行を次のように変更する必要があります。

new SimpleField() { Instruction = "PAGE \\* roman" })

または(ご希望の場合)

new SimpleField() { Instruction = @"PAGE \* roman" })
于 2016-07-18T16:53:14.533 に答える