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

我正在尝试使用下面的代码在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);


    }

http://img4.mukewang.com/64aa6cf90001c80406230100.jpg

侃侃无极
浏览 95回答 1
1回答

慕姐8265434

您需要doc.Close();在方法结束时调用Insert。这将保存并关闭所有底层流。您可以删除对 的调用doc.Save()。使用using需要Close您的声明可能会更干净:WordprocessingDocument doc;Body docBody;public void Insert(){&nbsp; &nbsp; using (doc = WordprocessingDocument.Create(@"d:\report1.docx", WordprocessingDocumentType.Document))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; Body docBody = new Body();&nbsp; &nbsp; &nbsp; &nbsp; MainDocumentPart mainPart = doc.AddMainDocumentPart();&nbsp; &nbsp; &nbsp; &nbsp; mainPart.Document = new Document();&nbsp; &nbsp; &nbsp; &nbsp; mainPart.Document.Body = docBody;&nbsp; &nbsp; &nbsp; &nbsp; ApplyFooter();&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP