Исходный текст содержит простой HTML. Как я могу просто отформатировать текст в MS Word?

Я унаследовал проект, который хранит базовое форматирование HTML (т. Е. Теги <b>, <i>) в базе данных и записывает его в документ Word. Это мое первое задание по автоматизации Word, так что будьте осторожны!

В настоящее время после завершения документа выполняется сложная функция, выполняющая поиск и замену этих тегов. Однако, поскольку это выполняется после завершения документа, любая логика, определяемая во время выполнения (например, вставка разрыва страницы здесь), может привести к катастрофическим результатам. Например, если у меня есть большой фрагмент текста, выделенного жирным шрифтом, этот текст занимает больше места и переносит разрыв строки на следующую страницу, в результате чего получается в основном пустая страница.

Я считаю, что исправить это можно в том, чтобы отформатировать текст в том виде, в каком он поступает из базы данных, чтобы логика позиционирования была правильной. Я не хочу вызывать сложную процедуру несколько раз, так как это требует времени, а нашим конечным пользователям этот документ нужен как можно быстрее.

Есть ли простой способ записать текст в формате HTML в документ Word без необходимости поиска и замены всех поддерживаемых тегов? Я бы подумал, что в Word есть что-то, что могло бы справиться с этим автоматически. Заранее спасибо, если вы можете указать мне правильное направление.


person proudgeekdad    schedule 01.05.2009    source источник


Ответы (2)


Попробуй это:

Сначала сохраните 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".

person Tomalak    schedule 01.05.2009
comment
Доказательство концепции мудрое, это работает. Он импортирует HMTL в желаемом формате, если я заключил его в скобки ‹html› blah ‹/html›. Я попробую пойти по этому пути. - person proudgeekdad; 01.05.2009

возможно, вы можете вызвать встроенный IE (IWebBrowser2) для размещения текста, затем скопировать в буфер обмена как richtext и, наконец, вставить в Word как RichText (отформатированный).

person Francis    schedule 01.05.2009