为了账号安全,请及时绑定邮箱和手机立即绑定

添加页脚后打开的 XML 文档无法读取

添加页脚后打开的 XML 文档无法读取

C#
侃侃无极 2023-07-09 16:16:30
我正在尝试使用下面的代码在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();

    }

}


查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信