为啥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页脚不发布到文档的主要内容,如果未能解决你的问题,请参考以下文章
在Word2007中,如何通过Range.InsertXML方法将一个OpenXML插入到空白文档中?