Чисто академический ответ: это возможно. Я написал набор классов для анализа шаблонов, которые выполняют поиск в презентации PowerPoint, заменив теги на языке разметки, который я изобрел, диаграммами и динамическими текстовыми объектами, извлеченными из базы данных. Самая хитрая часть бита замены строки заключалась в обработке тегов, которые встречались в элементах Run
внутри элемента Paragraph
. Обычно это происходит, если вы используете специальные символы, такие как «{» или пробелы в своих тегах. Я смог решить эту проблему, сохранив текст всего элемента TextBody
в гигантском массиве символов (в вашем случае это будет содержимое элемента Cell
), сохранив список экстентов, перечисляющих, где находится символ Каждый элемент массива Run
начинался и заканчивался, а затем проходил массив символов, обращая внимание на границы Run
. Помните, что если ваш тег охватывает несколько элементов Run
, вам нужно будет удалить все лишние элементы и перерезать контент через границы, прежде чем вставить замену Run
. К сожалению, я не могу опубликовать какой-либо код, потому что работа была сделана для компании, но это общая идея, как этого добиться. Я не смог обработать ни одного случая новой строки (т. Е. Тег встречается с новой строкой в нем), потому что для этого потребовалось бы написать перекрестный индексатор Paragraph
, что выходило за рамки того, чего я хотел достичь. Это тоже можно сделать, но я думаю, это будет значительно сложнее.