Исходный текст содержит простой HTML. Как я могу просто отформатировать текст в MS Word?
-
03-07-2019 - |
Вопрос
Я унаследовал проект, который хранит базовое форматирование HTML (т. е. - <
b >
, <=> i <=>) в базе данных и записывает его в документ Word. Это мое первое задание по автоматизации Word, поэтому будьте осторожны!
В настоящее время существует сложная функция, которая запускается после завершения документа, которая выполняет поиск и заменяет эти теги. Однако, поскольку он запускается после завершения документа, любая логика, определенная во время выполнения (т. Е. Вставка разрыва страницы здесь), может привести к катастрофическим результатам. Например, если у меня большой кусок текста, выделенного жирным шрифтом, этот жирный текст занимает больше места и переносит перенос строки на следующую страницу, в результате чего получается в основном пустая страница.
Я полагаю, что решение этой проблемы - отформатировать текст в том виде, как он поступает из базы данных, чтобы логика позиционирования была правильной. Я не хочу вызывать сложную процедуру несколько раз, поскольку это отнимает много времени, и наши конечные пользователи нуждаются в этом документе как можно быстрее.
Существует ли простой способ записи текста в формате HTML в документ Word без необходимости искать и заменять каждый поддерживаемый тег? Я бы подумал, что в Word было бы что-то, что могло бы справиться с этим автоматически. Спасибо заранее, если вы можете указать мне правильное направление.
Решение
Попробуйте это:
Сначала сохраните HTML-код, который вы собираетесь вставить, как обычный " .htm " файл.
Затем используйте объект Range и его метод InsertFile для вставки " .htm " файл в любой заданной позиции:
Dim r As Range
Set r = ActiveDocument.Range
r.InsertFile FileName:=TempFilePath, Link:=False, ConfirmConversions:=False
Word должен быть достаточно умным, чтобы обрабатывать HTML и выполнять все преобразования формата самостоятельно. Используйте CSS для управления более тонкими частями форматирования.
Удалить " .htm " файл, когда закончите.
Другие советы
возможно, вы можете вызвать встроенный IE (IWebBrowser2) для размещения текста, затем скопировать его в буфер обмена как richtext и, наконец, вставить в Word как RichText (отформатированный).