我正在使用WordprocessingDocument
来读写Word文档中的内容,但是当我使用MemoryStream
打开文档时,它没有向我显示图像和页眉/页脚中已经存在的内容。 Word文档。下面是相同的代码。
private void AddReport(MainDocumentPart parent, MemoryStream report)
{
using (MemoryStream editingMemoryStream = new MemoryStream())
{
report.Position = 0;
report.CopyTo(editingMemoryStream);
editingMemoryStream.Position = 0;
using (WordprocessingDocument newDoc = WordprocessingDocument.Open(editingMemoryStream, true))
{
WP.Body Template = newDoc.MainDocumentPart.Document.Body;
var Main = newDoc.MainDocumentPart;
var cloneTemplate = Template.CloneNode(true);
parent.Document.Body.PrependChild(new WP.Paragraph(new WP.Run(cloneTemplate)));
parent.Document.Save();
}
}
}
word文档的屏幕截图: enter image description here 在此,父文档是我在上面文档之前的文档。任何帮助将不胜感激。预先感谢。
答案 0 :(得分:0)
页眉,页脚和图像不是文档正文的一部分,因此在描述的情况下不会被带到另一个文档中。
所有这些信息都存储在Word文件的“ zip包”中包含的单独的“ xml部件”中。 Body
部分仅包含 refereces (“相关”部分中列出的关系ID,指向/链接到包中包含的相关xml部分)。
这可以通过在Open XML SDK生产率工具中打开文档并检查基本的Word Open XML来看到。
为了将此类内容复制到另一个文档中,不仅必须克隆主体,而且还要克隆每个具有所需内容的xml部分,同时动态生成必要的关系-这不是一件容易的事。互联网上以及其他地方(包括我的博客WordMeister)上的帖子都展示了如何完成此操作的基础知识,您可以以此为起点来了解所需的方法。
或者,根据父文档的类型,从“新”文档的副本开始并用其他内容进行编辑可能更有意义。
FWIW,为了完整起见,在这里提到:COM对象模型将执行所描述的操作-复制文档的主体并将其粘贴到另一个文档中会保留所有这些信息。但是Word应用程序正在执行开发人员在使用Open XML SDK时需要进行编码的所有“繁重工作”。