为啥openxml页脚不发布到文档

Posted

技术标签:

【中文标题】为啥openxml页脚不发布到文档【英文标题】:Why is openxml footer not posting to document为什么openxml页脚不发布到文档 【发布时间】:2020-10-18 23:53:24 【问题描述】:

我遵循了一些示例,但我根本无法使用 openxml 将页脚打印到文字处理文档。我打赌我在这里遗漏了一些微不足道的东西,但我就是看不到/找不到它。

            MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
            mainPart.Document = new Document();
            Body docBody = mainPart.Document.AppendChild(new Body());
            FooterPart footerPart = mainPart.AddNewPart<FooterPart>();
            string footerId = mainPart.GetIdOfPart(footerPart);

            SectionProperties sectionProperties = new SectionProperties();
            FooterReference footerReference = new FooterReference()  Id = footerId, Type = HeaderFooterValues.Default ;sectionProperties.Append(footerReference);
            PageMargin pageMargin = new PageMargin()  Top = 1440, Right = (UInt32Value)1440U, Bottom = 1440, Left = (UInt32Value)1440U, Header = (UInt32Value)720U, Footer = (UInt32Value)1080U, Gutter = (UInt32Value)0U ;
            sectionProperties.Append(pageMargin);

            Footer footer = new Footer();
            Paragraph paragraph50 = new Paragraph();
            Paragraphproperties footerProperties = new ParagraphProperties();

            footerProperties.Append(new ParagraphStyleId()  Val = "Footer" );
            footerProperties.Append(new Justification()  Val = JustificationValues.Both );
            footerProperties.Append(sectionProperties);
            paragraph50.Append(footerProperties);
            footer.Append(paragraph50);
            footerPart.Footer = footer;

            RunProperties frp = new RunProperties();
            frp.Color = new Color()  Val = "C0C0C0" ;
            frp.FontSize = new FontSize()  Val = "15" ;

            Run frun1 = new Run();
            frun1.Append(frp);
            frun1.Append(new Text("UNIFORM INSTRUMENT"));

            paragraph50.Append(frun1);

【问题讨论】:

【参考方案1】:

直接的问题是您将部分属性附加到 footerPart,而应该将它们附加到 docBody

即如果你改变了

        footerProperties.Append(sectionProperties);

        docBody.Append(sectionProperties);

然后您应该能够打开生成的 .docx 并查看页脚。

就个人而言,我发现 Office Open SDK 生产力工具对于理解如何构建 Word 文档非常有用 - 我认为只有 WIndows,但它是可用的下载之一here

【讨论】:

感谢您的帮助,这不是我唯一的错误,但是......核心错误是未能包含所需的命名空间声明 @Jim,我想知道这一点,但是当我运行您的代码时,缺少命名空间定义似乎不是问题,并且必要的定义(“w:”,以保持简短) 无论如何都在输出中。但是我们来了!

以上是关于为啥openxml页脚不发布到文档的主要内容,如果未能解决你的问题,请参考以下文章

Git 和 OpenXML 文档

使用 openxml 将标题添加到 docx

在Word2007中,如何通过Range.InsertXML方法将一个OpenXML插入到空白文档中?

OpenXML - 将书签应​​用于 Word 文档中的段落

使用OpenXML操作Office文档

如何使用openxml C#在word文档中添加形状?