我也很擅长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工具中打开其中一个模板文档时,我可以看到我期望的所有元素:
然而,当我查看“主”文档时,我所能得到的只是MatchSource:
我不明白为什么我在主文档中看不到段落标记等。任何人都可以帮我理解我将如何看到这些信息?文档结构有问题吗?
答案 0 :(得分:1)
这是因为altchunck
的方式被合并到主文档中。 altchunck
不会更改主文档的openxml
标记,但会将文件添加为嵌入资源。您可以将其视为将某些内容附加到电子邮件中,而不是将其添加到实际的电子邮件正文中。有一些第三方解决方案,如Document Builder,将通过修改主文档标记来合并文档。然后,您可以在生产力工具中看到您的期望。