0

例如,如何对 word 文档进行分页

  • 如果有 10 页:

    第 1 页,共 10 页

    第 2 页,共 10 页...

  • 如果有 15 页

    第 1 页,共 15 页

    15 个中的 2 个 ...

以此类推生成动态页数

4

2 回答 2

4

您提出问题已经三年了,但也许我可以帮助其他面临这个问题的人。

这是可以对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 回答