C# OpenXML Mail Merge объединить формат

Я использую OpenXML для обработки mailmerge. Я загружаю данные из файла JSON для слияния с моим документом.

У меня это отлично работает, но потом мне нужно взять форматирование, описанное в MERGEFORMAT, так как не похоже, что OpenXML обрабатывает это для меня.

Я кодировал для CAPS, FirstCap, Upper и Lower. Также кодируется (еще не проверено) для форматирования даты и времени (начинается с \@), а также управляется \f и \b. (Не уверен, что делать с \m или \v.

Сейчас я смотрю на выполнение чисел, но, хотя вижу, что число начинается с #, я не совсем уверен, как применить числовые параметры в коде.

Во-первых, правильно ли я это делаю (применяя все это в коде) или мне чего-то не хватает, что я могу использовать в SDK?

Во-вторых, как мне работать с числами?

В-третьих, есть ли какие-либо варианты слияния, которые мне не хватает?

Благодарю.

2 ответа

OpenXML SDK не предоставляет что-то подобное, но, тем не менее, по сути, вам нужно именно то, что вы упомянули. Сначала вам нужно проанализировать ваши данные как Double или же DateTime а затем позвоните ToString на них, передав параметр формата, который указан в MergeField.

Однако на тот случай, если вам это интересно, в OpenXML SDK PowerTools есть модуль DocumentAssembler, который выполняет аналогичные функции: он генерирует итоговый документ путем объединения шаблонного документа и источника данных. Но в этом случае шаблонный документ имеет элементы управления содержимым или просто пользовательские текстовые заполнители с определенным синтаксисом (вместо MergeFields), и данные предоставляются в формате XML (вместо JSON).

Тем не менее, если вы все еще хотите использовать параметры слияния, вы в значительной степени рассмотрели все параметры, доступные в MergeFields.
Осталось только добавить поддержку дополнительных полей, связанных со слиянием почты, в зависимости от ваших конкретных требований (например, INCLUDEPICTURE, INCLUDETEXT, MERGESEQ, MERGEREC, NEXT и т. Д.).

Кроме того, поддержка некоторой формы группировки почтовых слияний была бы весьма полезной. При этом вы сможете объединить несколько записей в некотором диапазоне слияния.
Например, предположим, что вы определяете контент, который должен повторяться и заполняться на основе ваших записей, например, в одной строке таблицы, в которой есть несколько полей MergeFields. Затем с поддержкой этой функции вы сможете динамически генерировать новую строку для каждого элемента в некотором массиве JSON, а также для каждой строки будут иметь соответствующие данные из своего элемента.

Я надеюсь, что это дает вам некоторые идеи.

После моего комментария... Я действительно задавался вопросом, была ли перегружена string.ToString(), поэтому сделал дальнейший поиск.

В то время как string.ToString() не имеет перегрузки, double делает... так что, преобразуйте числовую строку в double, затем.ToString с требуемым числовым форматом.

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

Спасибо за поиск.

Другие вопросы по тегам