为了账号安全,请及时绑定邮箱和手机立即绑定

C# OpenXML 邮件合并合并格式

C# OpenXML 邮件合并合并格式

C#
沧海一幻觉 2021-12-05 14:59:23
我正在使用 OpenXML 来处理邮件合并。我正在从 json 文件中输入数据以与我的文档合并。我的这个工作很好,但是我需要采用 MERGEFORMAT 中描述的格式,因为它看起来不像 OpenXML 正在为我处理这个。我已经为 CAPS、FirstCap、Upper 和 Lower 编码。还针对日期和时间格式(以 \@ 开头)进行了编码(尚未测试),并且还管理了 \f 和 \b。(不确定如何处理 \m 或 \v。我现在正在考虑计算数字,但是虽然我看到数字以 # 开头,但我不确定如何在代码中应用数字选项。首先,我是否正确地解决了这个问题(在代码中应用了所有这些),或者我是否缺少可以在 SDK 中使用的东西?其次,我如何处理数字?第三,我是否缺少任何合并选项?
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

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

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

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

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

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


查看完整回答
反对 回复 2021-12-05
?
动漫人物

TA贡献1815条经验 获得超10个赞

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

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

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

谢谢你看。


查看完整回答
反对 回复 2021-12-05
  • 2 回答
  • 0 关注
  • 247 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信