我有一个单词(.docx)格式的模板,想要用我自己的数据替换这个模板中的一些占位符,你知道我在哪里可以找到这个项目的正确类吗?知道命名空间对我来说会很好。是否有更新的类来处理docx格式(xml)中的word文档而不是com类?谢谢你的所有答案,我希望有人可以帮我解决我的问题。
迎接
塞巴斯蒂安
答案 0 :(得分:5)
新的办公室格式(docx,xlsx等)是包含xml文件集合的zip文件。考虑到这一点,你有几种方法。
您可以解压缩docx文件,搜索并替换您的令牌,并将其压缩回来。
openxmldeveloper.org有一个网站就是为了这种事情。另外,请记住,他们已经发布了SDK的测试版2。
答案 1 :(得分:1)
Eric White在blog article detailing a program meant to validate source snippets embedded in DocX files中提到了这个主题。除了那篇文章,我强烈建议你阅读Office Open XML and C#上的系列文章。
答案 2 :(得分:1)
我用过这个:
IEnumerable test2 =来自body.Elements()中的元素 其中element.InnerText.Contains(“sdt”) 选择元素;
答案 3 :(得分:0)
顺便使用xml我发现这个解决方案找到了所有sdt-nodes
NameTable nt = new NameTable();
XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
nsManager.AddNamespace("w", wordmlNamespace);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(doc.MainDocumentPart.GetStream());
XmlNodeList nodeList = xDoc.SelectNodes(@"./w:document/w:body//w:sdt", nsManager);
它有效,但Open XML Format SDK 2.0没有给我任何机会吗?