首页 > 解决方案 > C# OpenXML 邮件合并合并格式

问题描述

我正在使用 OpenXML 来处理邮件合并。我正在从 json 文件中输入数据以与我的文档合并。

我的这个工作很好,但是我需要采用 MERGEFORMAT 中描述的格式,因为它看起来不像 OpenXML 正在为我处理这个。

我已经为 CAPS、FirstCap、Upper 和 Lower 编码。还针对日期和时间格式(以 \@ 开头)进行了编码(尚未测试),并且还管理了 \f 和 \b。(不确定如何处理 \m 或 \v。

我现在正在研究数字,但是当我看到一个以 # 开头的数字时,我不确定如何在代码中应用数字选项。

首先,我是否正确地解决了这个问题(在代码中应用了所有这些),还是我缺少可以在 SDK 中使用的东西?

其次,我如何处理数字?

第三,我是否缺少任何合并选项?

谢谢。

标签: c#ms-wordopenxmldocx-mailmerge

解决方案


OpenXML SDK 不提供这样的功能,但基本上您所需要的正是您所提到的。您首先需要将数据解析为Doubleor DateTime,然后ToString通过传递 MergeField 中指定的格式参数来调用它们。

但是,如果您有兴趣,OpenXML SDK PowerTools 有一个DocumentAssembler模块,它执行类似的操作,它通过组合模板文档和数据源来生成结果文档。但在这种情况下,模板文档具有内容控件或仅具有特定语法的自定义文本占位符(而不是 MergeFields),并且数据以 XML 格式(而不是 JSON)提供。

尽管如此,如果您仍然想利用邮件合并选项,那么您已经涵盖了 MergeFields 中可用的所有开关。
剩下的唯一事情是添加对与邮件合并相关的更多字段的支持,具体取决于您的确切要求(如 INCLUDEPICTURE、INCLUDETEXT、MERGESEQ、MERGEREC、NEXT 等)。

此外,对某种形式的邮件合并分组的支持将是相当有益的。有了这个,您将能够在某个合并范围内合并多个记录。
例如,假设您定义了一个应该根据您的记录重复和填写的内容,例如具有一些 MergeFields 的单个表行。然后,通过支持此功能,您将能够为某个 JSON 数组中的每个项目动态生成新行,并且每行都将具有来自其项目的适当数据。

我希望这能给你一些想法。


推荐阅读