Для создания текстовых документов на основе данных из базы данных SQL я использую Office Open XML SDK, чтобы избежать взаимодействия. Это ускоряет процесс и устраняет необходимость в пакете Microsoft Office, установленном в клиентской системе.
Хотя это работает очень хорошо, у меня возникает проблема при замене определенного текста в документе. Чтобы сохранить настройку окончательного документа, я создал документ с некоторыми тегами в качестве шаблона. Этот шаблон содержит теги, такие как [TagHere]. Поскольку имена тегов должны быть легко читаемыми, их можно использовать по всему документу, поэтому я заключил тег в фигурные скобки [].
Это работает довольно хорошо, но иногда возникает проблема. Когда вы печатаете в документе DOCX, текст может быть разделен на несколько тегов, даже в одном и том же слове. Тег типа [TagHere] можно разделить на
<tag>[</tag><tag>TagHere</tag><tag>]</tag>
Когда это произойдет, замена не будет работать.
Теперь формат docx имеет несколько альтернативных опций для выполнения таких операций, таких как Content Controls, но они усложняют процесс создания шаблона. Более того, в этих документах нередко можно получить одну строку таблицы с тегами и скопировать ее несколько раз, что, вероятно, нарушит принцип тега содержимого. Поэтому я решил не использовать эту опцию.
Было бы замечательно, если бы у кого-то было решение этой проблемы.