用c#替换word文档中的占位符

时间:2008-10-08 11:38:55

标签: c# .net ms-word placeholder

我有一个单词(.docx)格式的模板,想要用我自己的数据替换这个模板中的一些占位符,你知道我在哪里可以找到这个项目的正确类吗?知道命名空间对我来说会很好。是否有更新的类来处理docx格式(xml)中的word文档而不是com类?谢谢你的所有答案,我希望有人可以帮我解决我的问题。

迎接

塞巴斯蒂安

4 个答案:

答案 0 :(得分:5)

新的办公室格式(docx,xl​​sx等)是包含xml文件集合的zip文件。考虑到这一点,你有几种方法。

  1. 您可以使用位于http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&displaylang=en

  2. 的Open XML SDK
  3. 您可以解压缩docx文件,搜索并替换您的令牌,并将其压缩回来。

  4. 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没有给我任何机会吗?