【问题标题】:Replace Placeholders in word document with c#用c#替换word文档中的占位符
【发布时间】:2010-09-15 23:40:41
【问题描述】:

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

问候

塞巴斯蒂安

【问题讨论】:

    标签: c# .net ms-word placeholder


    【解决方案1】:

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

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

    2. 您可以解压缩 docx 文件,搜索并替换您的令牌,然后将其压缩备份。

    openxmldeveloper.org 有一个网站就是专门针对这类事情的。另外,请记住,他们已经发布了 SDK 的测试版 2。

    【讨论】:

    【解决方案2】:

    Eric White 在blog article detailing a program meant to validate source snippets embedded in DocX files 中已经谈到了这个主题。除了那篇文章,我强烈建议您阅读他在Office Open XML and C# 上的系列文章。

    【讨论】:

      【解决方案3】:

      我用过这个:

      IEnumerable test2 = 来自 body.Elements() 中的元素 其中 element.InnerText.Contains("sdt") 选择元素;

      【讨论】:

        【解决方案4】:

        顺便说一句,使用 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 没有给我任何机会吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-11
          • 2013-01-24
          • 1970-01-01
          • 2022-06-24
          • 2013-04-08
          • 1970-01-01
          相关资源
          最近更新 更多