OpenXML 在 Word 文档中查找变量并替换它们

2024-01-01

我需要在文档中搜索 中包含的字符串。因此,如果应用程序在文档中找到该变量,它将用 DateTime.Today.ToShortDateString() 替换该变量。例如:

string filename = "C:\\Temp\\" + appNum + "_ReceiptOfApplicationLtr.docx";
if (File.Exists((string)filename))
{
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(filename, true))
    {
        var body = wordDoc.MainDocumentPart.Document.Body;
        foreach (var text in body.Descendants<Text>())
        {
            if (text.Text == "<TodaysDate>")
            {
                text.Text = text.Text.Replace("<TodaysDate>", DateTime.Today.ToShortDateString());
            }
        }
        using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
        {
            sw.Write(filename);
        }
    }
}

当它搜索后代文本时,它会找到第一个 。问题是它找不到字符串<TodaysDate>。谁能帮我吗?


对于任何仍在为此苦苦挣扎的人 - 你可以查看这个库

https://github.com/antonmihaylov/OpenXmlTemplates https://github.com/antonmihaylov/OpenXmlTemplates

使用它,您不必在文本中搜索特殊标签(因为 Thomas Barnekow 的评论中指定的问题),而是在文档中添加一个内容控件,并在内容控件的标签名称中指定您想要的变量的名称。想要更换。

然后,您可以提供 JSON 数据或常规 C# 字典对象,文本将被替换。

注意 - 我是该库的创建者,但我没有从中获得经济收益 - 它是开源的并且正在积极开发中(并且一直在寻找贡献者!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenXML 在 Word 文档中查找变量并替换它们 的相关文章

随机推荐

  • 将彩虹颜色映射到 RGB

    假设我有一个带构造函数的 RainbowColorsMapper 类RainbowColorsMapper int n 其中 n gt 2 现在我想要使用该方法获得从红色到紫色的彩虹颜色的连续映射mapper getColor int nu
  • C# 泛型及其具体实现

    是否可以在 C 中创建泛型方法并为给定类型添加具体实现 例如 void Foo
  • Ruby gem 是否存在像木马一样的风险?

    我正要安装一个我没听说过的人的 Ruby gem 但有些事情让我想到 这个人是谁 由于 gem 系统可以访问互联网 因此 Ruby gem 是否存在访问您计算机上的私有数据并将其传输到其他地方的风险 或者有针对这种情况的保护措施吗 当然有
  • 使用 cout 语句执行 while 循环

    所以我有一个关于do while环形 我正在学习 C 我知道你可以写这样的东西 do while a lt 10 cout lt lt message 关键是 我知道这在 C 中是可能的 但我们真的这样做了吗 我的意思是 cout thin
  • 如何解决 SQL0418N 错误

    我正在使用下面的语句来更新 插入一些数据到表中 如果我不带参数运行它 那就没问题 但是 一旦我尝试使用它抛出的参数执行它 SQL0418N 语句包含使用非类型化参数标记 DEFAULT 关键字或无效的空值 我已阅读错误信息here http
  • WebDeploy API (IIS 7) - “公共 API”:资源?

    有人知道 WebDeploy API 的任何资源吗 有人用过吗 我尝试在官方论坛上询问 并浏览了该网站 该网站说有 公共 API 但没有链接 文章 资源 博客文章或示例 http forums iis net t 1180561 aspx
  • 单击事件不适用于动态添加的 Li->span->id

    单击事件不适用于动态添加的 Li gt span gt id case 101 strLink li a span Form 101 span a li sidebar nav append strLink break sidebar na
  • 如何将文件夹标记为包?

    我曾经认为文件夹需要有扩展名 以便 Finder 将它们识别为包 该扩展将在所属应用程序的 Info plist 中声明 显然还有另一种更优雅的方式 但我不知道它是如何完成的 例如 iPhoto 图库被 Finder 视为一个包 但它没有扩
  • 为什么更喜欢属性而不是公共变量? [复制]

    这个问题在这里已经有答案了 其他能够对 setter 中的值进行健全性检查是否有更根本的原因来选择属性而不是公共变量 我们以前有过这个主题 但现在找不到任何内容 简而言之 您的需求可能会发生变化 如果现在没有健全性检查 将来可能需要进行健全
  • byte[] 数组的长度

    String str 123456789 byte bytes str getBytes 我想进行以下循环 for int j 0 j lt bytes length j b bytes j b将存储数组的每个字节 但我似乎无法正确获取数组
  • GCE 上没有名为“google.cloud._helpers”的模块

    我在导入时遇到错误google cloud bigquery在普通教育考试上 它不会发生在非 GCE 的环境中 我执行了更新pip 你知道为什么吗 user1 sv1 python Python 3 6 0 Continuum Analyt
  • 如何获取 Ruby on Rails 生成的表单元素 id 以供 JavaScript 中参考?

    当使用form for助手和一个text field调用时 Ruby on Rails 会生成一个唯一的 id
  • eslint 解析错误:意外的标记 =

    为什么 eslint 会抛出这个错误 Javascript 在 React Native 中运行没有问题 该代码取自react navigation 示例 https reactnavigation org docs intro https
  • Qt foreach 中的第二项是否只计算一次?

    如果我有这个代码 foreach QListWidgetItem ii selectedItems urls push back ii gt data Qt ToolTip toString Would selectedItems 只被调用
  • Javascript“eval”是同步还是异步?

    考虑以下代码 eval a 5 b 10 eval a b 如果这里第一个 eval 运行很长时间 我的下一个 eval 是否会返回一个错误 指出 a 和 b 未定义 因为 a 和 b 值在第一个 eval 结束时初始化 eval方法是同步
  • 将 ShowCaseView 与 ActionBarCompat / ActionBarSherlock Android 结合使用

    我在用ShowcaseView图书馆来自here https github com Espiandev ShowcaseView在我的安卓应用程序中 我想用ShowcaseView with Actionbar Compat 但我不知道如何
  • 检索 JSON 对象时出现空指针异常

    我是 JSON 新手 我在用http pnrapi appspot com http pnrapi appspot com 使用 JSON 获取特定列车的状态 但是 在尝试解析接收到的对象时 我总是遇到空指针异常 请帮忙 这是我的代码 pu
  • 下载 Sun java 文档/镜像网站

    我们公司和 Sun 的 javadocs 之间的网络似乎已关闭 我在哪里可以获得给定包的 javadoc 副本 以便我可以保留自己的存储以处理将来的网络中断 有 Sun javadoc 的镜像吗 对于每个主要版本都有一个大型文档包 例如这里
  • 使用 Python 通过代理以编程方式发出 HTTP 请求

    如何使用 Python 通过代理发出 HTTP 请求 我需要对以下代码做什么 urllib urlopen http www google com The urlopen功能支持代理 尝试这样的事情 urllib urlopen your
  • OpenXML 在 Word 文档中查找变量并替换它们

    我需要在文档中搜索 中包含的字符串 因此 如果应用程序在文档中找到该变量 它将用 DateTime Today ToShortDateString 替换该变量 例如 string filename C Temp appNum Receipt