C# OpenXML 邮件合并合并格式

C# OpenXML Mail Merge mergeformat

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

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

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

我现在正在考虑做数字,但是当我看到数字以 # 开头时,我不太确定如何在代码中应用数字选项。

首先,我是否正确地处理了这个问题(在代码中应用所有这些)或者我是否遗漏了一些我可以在 SDK 中使用的东西?

其次,我该如何处理这些数字?

第三,是否有任何我遗漏的合并选项?

谢谢。

在我发表评论后...我确实想知道 string.ToString() 是否超载,所以进一步查看。

虽然 string.ToString() 没有重载,但 double 有...所以,将数字字符串转换为 double,然后 .ToString 具有所需的数字格式。

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings

感谢观看。

OpenXML SDK 没有提供这样的东西,但基本上你需要的正是你提到的。您首先需要将数据解析为 DoubleDateTime,然后通过传递 MergeField 中指定的格式参数对它们调用 ToString

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

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

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

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