OpenXML合并文档 - 如何使用生产力工具查看内容

时间:2015-06-04 12:50:00

标签: openxml

我也很擅长OpenXML。我们基本上有一个Word模板,根据用户在我们拥有的网站中选择的记录数量,我们从数据库中提取记录并使用模板创建word文档。然后,我们将所有这些文档组合成一个主Word文档,该文档提供给用户。我们使用OpenXML和altchunks来做到这一点:

string altChunkId = "AltChunkId" + itemNo.ToString();
MainDocumentPart mainPart = myDoc.MainDocumentPart;
AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(                                     AlternativeFormatImportPartType.WordprocessingML, altChunkId);
using (FileStream fileStream = File.Open(createdFileName, FileMode.Open))
{
  chunk.FeedData(fileStream);
  fileStream.Close();
}
AltChunk altChunk = new AltChunk();
AltChunkProperties altChunkProperties = new AltChunkProperties();
MatchSource matchSrc = new MatchSource();
matchSrc.Val = true;
altChunkProperties.Append(matchSrc);
altChunk.AppendChild(altChunkProperties);
altChunk.Id = altChunkId;
mainPart.Document.Body.Append(altChunk);
mainPart.Document.Save();

当我在Productivity工具中打开其中一个模板文档时,我可以看到我期望的所有元素:

enter image description here

然而,当我查看“主”文档时,我所能得到的只是MatchSource:

enter image description here

我不明白为什么我在主文档中看不到段落标记等。任何人都可以帮我理解我将如何看到这些信息?文档结构有问题吗?

1 个答案:

答案 0 :(得分:1)

这是因为altchunck的方式被合并到主文档中。 altchunck不会更改主文档的openxml标记,但会将文件添加为嵌入资源。您可以将其视为将某些内容附加到电子邮件中,而不是将其添加到实际的电子邮件正文中。有一些第三方解决方案,如Document Builder,将通过修改主文档标记来合并文档。然后,您可以在生产力工具中看到您的期望。