OpenXML MainDocumentPart.Document.Save() 似乎没有保存在 .Net 5 中

问题描述

我一直在将应用程序从 .net 框架移植到 .net 5。我正在尝试通过读取模板文件、使用 Open-XML-PowerTools 替换一些文本并保存新版本来生成 Word 文档. 我无法让“保存()”做任何事情! 下面是一些稍微简化的代码来演示这个问题:

                byte[] content = System.IO.File.ReadAllBytes("c:\\Temp\\myrequesttemplate.docx");
                using (MemoryStream mstr = new MemoryStream())
                {
                    mstr.Write(content,content.Length);
                    using var docTest = WordprocessingDocument.Open(mstr,true);
                    {
                        docTest.ReplaceText("%NAME%",mrcrequest.RequesterName); // At this point,I can see by looking at the document.innerxml that the replacement has been successful.
                        docTest.MainDocumentPart.Document.Save();
                    }
                    using (FileStream fs = new FileStream("c:\\Temp\\TestWordDoc.docx",FileMode.CreateNew))
                    {
                        mstr.Writeto(fs);
                    }

                }

创建的文件只是旧文件的副本,没有替换。我可以看到使用调试器查看 MainDocument 的 innerXML 替换成功。它似乎没有写回流。 我试过使用“.MainDocumentPart.PutXDocument();”而不是“.Save()”——它没有区别。

我使用的是 DocumentFormat.OpenXML 2.12 版、System.IO.Packaging 5.0.0 和 Open-XML-PowerTools 4.4.0

任何人有任何想法吗?快把我逼疯了! 谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...