我正在尝试使用下面的代码在Word文档中添加页脚。该文件正在生成,但是当我尝试打开该文件时,它显示该文档不可读的消息。我不知道我在这里做错了什么。 WordprocessingDocument doc; Body docBody; public void Insert() { doc = WordprocessingDocument.Create(@"d:\report1.docx", WordprocessingDocumentType.Document); docBody = new Body(); MainDocumentPart mainPart = doc.AddMainDocumentPart(); mainPart.Document = new Document(); mainPart.Document.Body = docBody; ApplyFooter(); doc.Save(); } public void ApplyFooter() { // Get the main document part. MainDocumentPart mainDocPart = doc.MainDocumentPart; FooterPart footerPart1 = mainDocPart.AddNewPart<FooterPart>("r98"); Footer footer1 = new Footer(); Paragraph paragraph1 = new Paragraph() { }; Run run1 = new Run(); Text text1 = new Text(); text1.Text = "Footer stuff"; run1.Append(text1); paragraph1.Append(run1); footer1.Append(paragraph1); footerPart1.Footer = footer1; SectionProperties sectionProperties1 = mainDocPart.Document.Body.Descendants<SectionProperties>().FirstOrDefault(); if (sectionProperties1 == null) { sectionProperties1 = new SectionProperties() { }; mainDocPart.Document.Body.Append(sectionProperties1); } FooterReference footerReference1 = new FooterReference() { Type = DocumentFormat.OpenXml.Wordprocessing.HeaderFooterValues.Default, Id = "r98" }; sectionProperties1.InsertAt(footerReference1, 0); }
1 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
您需要doc.Close();在方法结束时调用Insert。这将保存并关闭所有底层流。您可以删除对 的调用doc.Save()。
使用using需要Close您的声明可能会更干净:
WordprocessingDocument doc;
Body docBody;
public void Insert()
{
using (doc = WordprocessingDocument.Create(@"d:\report1.docx", WordprocessingDocumentType.Document))
{
Body docBody = new Body();
MainDocumentPart mainPart = doc.AddMainDocumentPart();
mainPart.Document = new Document();
mainPart.Document.Body = docBody;
ApplyFooter();
}
}
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消