0

たとえば、Word文書をページ分割する方法

  • 10ページある場合:

    1/10ページ

    2/10ページ..。

  • 15ページある場合

    1/15ページ

    15の2..。

など、動的なページ数を生成します

4

2 に答える 2

4

あなたが質問をしてから3年が経ちましたが、この問題に直面している他の人々を助けることができるかもしれません。

これは、Word文書をページ分割できるコードです。

string documentPath = @"C:\Temp\FooterPOC.docx";

using (WordprocessingDocument package =
    WordprocessingDocument.Create(
    documentPath, WordprocessingDocumentType.Document))
{
    {
        MainDocumentPart objMainDocumentPart = package.AddMainDocumentPart();
        Document objDocument = new Document();
        objMainDocumentPart.Document = objDocument;
        Body objBody = new Body();
        SectionProperties objSectionProperties = new SectionProperties();
        FooterPart objFootPart = objMainDocumentPart.AddNewPart<FooterPart>();
        Footer objFooter = new Footer();
        objFootPart.Footer = objFooter;

        Paragraph objParagraph_1 = new Paragraph();
        ParagraphProperties objParagraphProperties = new ParagraphProperties();
        ParagraphStyleId objParagraphStyleId = new ParagraphStyleId() { Val = "Footer" };

        objParagraphProperties.Append(objParagraphStyleId);
        Justification objJustification = new Justification() { Val = JustificationValues.Right };
        objParagraphProperties.Append(objJustification);
        objParagraph_1.Append(objParagraphProperties);

        Run objRun_1 = new Run();
        Text objText_1 = new Text() { Space = SpaceProcessingModeValues.Preserve };
        objText_1.Text = "Página ";
        objRun_1.Append(objText_1);
        objParagraph_1.Append(objRun_1);

        Run objRun_2 = new Run();
        FieldChar objFieldChar_1 = new FieldChar() { FieldCharType = FieldCharValues.Begin };
        objRun_2.Append(objFieldChar_1);
        objParagraph_1.Append(objRun_2);

        Run objRun_3 = new Run();
        FieldCode objFieldCode_1 = new FieldCode();
        objFieldCode_1.Text = "PAGE";
        objRun_3.Append(objFieldCode_1);
        objParagraph_1.Append(objRun_3);

        Run objRun_6 = new Run();
        FieldChar objFieldChar_3 = new FieldChar() { FieldCharType = FieldCharValues.End };
        objRun_6.Append(objFieldChar_3);
        objParagraph_1.Append(objRun_6);

        Run objRun_7 = new Run();
        Text objText_3 = new Text() { Space = SpaceProcessingModeValues.Preserve };
        objText_3.Text = " de ";
        objRun_7.Append(objText_3);
        objParagraph_1.Append(objRun_7);

        Run objRun_8 = new Run();
        FieldChar objFieldChar_4 = new FieldChar() { FieldCharType = FieldCharValues.Begin };
        objRun_8.Append(objFieldChar_4);
        objParagraph_1.Append(objRun_8);

        Run objRun_9 = new Run();
        FieldCode objFieldCode_2 = new FieldCode();
        objFieldCode_2.Text = "NUMPAGES";
        objRun_9.Append(objFieldCode_2);
        objParagraph_1.Append(objRun_9);

        Run objRun_12 = new Run();
        FieldChar objFieldChar_6 = new FieldChar() { FieldCharType = FieldCharValues.End };
        objRun_12.Append(objFieldChar_6);
        objParagraph_1.Append(objRun_12);

        objFooter.Append(objParagraph_1);

        string strFootrID = objMainDocumentPart.GetIdOfPart(objFootPart);
        FooterReference objFooterReference = new FooterReference()
        {
            Type = HeaderFooterValues.Default,
            Id = strFootrID
        };

        objSectionProperties.Append(objFooterReference);
        objBody.Append(objSectionProperties);
        objMainDocumentPart.Document.Append(objBody);
    }
}

私はここでこのコードを見つけました。少しバグがありましたが、とても助かりました!

不要だと思った行がいくつかあったので、削除してうまくいきましたが、私はopenXMLの初心者なので、実際には必要だったのかもしれません。

乾杯!

于 2015-09-14T18:56:34.700 に答える
1

Open Xml SDKは、レイアウト(WordprocessingMLドキュメントのページ付けなど)や再計算機能などのアプリケーションの動作を提供しません。詳細については、@ http://blogs.msdn.com/b/brian_jones/archive/2008/10/06/open-xml-format-sdk-2-0.aspxをご覧ください。

于 2012-06-13T18:32:25.230 に答える