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 没有提供这样的东西,但基本上你需要的正是你提到的。您首先需要将数据解析为 Double
或 DateTime
,然后通过传递 MergeField 中指定的格式参数对它们调用 ToString
。
不过,如果您有兴趣,OpenXML SDK PowerTools 有一个 DocumentAssembler 模块可以做类似的事情,它通过组合模板文档和数据生成结果文档资源。但在这种情况下,模板文档具有内容控件或仅具有特定语法的自定义文本占位符(而不是 MergeFields),并且数据以 XML 格式(而不是 JSON)提供。
不过,如果您仍想利用邮件合并选项,那么您已经了解了 MergeFields 中可用的所有开关。
唯一剩下的就是添加对与邮件合并相关的更多字段的支持,具体取决于您的具体要求(如 INCLUDEPICTURE、INCLUDETEXT、MERGESEQ、MERGEREC、NEXT 等)。
此外,对某种形式的邮件合并分组的支持将是相当有益的。有了这个,您就可以在某个合并范围内合并多个记录。
例如,假设您定义了一个应根据您的记录重复和填写的内容,例如具有一些 MergeFields 的单个 table 行。然后,通过支持此功能,您将能够为某些 JSON 数组中的每个项目动态生成新行,并且每一行都会从其项目中获得适当的数据。
我希望这能给你一些想法。
我正在使用 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 没有提供这样的东西,但基本上你需要的正是你提到的。您首先需要将数据解析为 Double
或 DateTime
,然后通过传递 MergeField 中指定的格式参数对它们调用 ToString
。
不过,如果您有兴趣,OpenXML SDK PowerTools 有一个 DocumentAssembler 模块可以做类似的事情,它通过组合模板文档和数据生成结果文档资源。但在这种情况下,模板文档具有内容控件或仅具有特定语法的自定义文本占位符(而不是 MergeFields),并且数据以 XML 格式(而不是 JSON)提供。
不过,如果您仍想利用邮件合并选项,那么您已经了解了 MergeFields 中可用的所有开关。
唯一剩下的就是添加对与邮件合并相关的更多字段的支持,具体取决于您的具体要求(如 INCLUDEPICTURE、INCLUDETEXT、MERGESEQ、MERGEREC、NEXT 等)。
此外,对某种形式的邮件合并分组的支持将是相当有益的。有了这个,您就可以在某个合并范围内合并多个记录。
例如,假设您定义了一个应根据您的记录重复和填写的内容,例如具有一些 MergeFields 的单个 table 行。然后,通过支持此功能,您将能够为某些 JSON 数组中的每个项目动态生成新行,并且每一行都会从其项目中获得适当的数据。
我希望这能给你一些想法。