Путь разработчика

Сборник полезных примеров и советов для .NET программистов

Формирование документа MS Word программно.

2009-11-05 от Kosten

При разработке ПО очень часто возникает задача формирования отчетных документов, на пример в формате Microsoft Word. Решать эту задачу можно различными способами. Я хочу поделиться вариантом, который не требует установки дополнительных компонент.
Начиная с версии MS Office 2003 (а может и более ранней) появилась поддержка документов в формате XML. Для формирования XML-файла не нужно каких-либо библиотек - достаточно работы со строками. Итак, наша цель - сформировать XML-файл, который представляет собой документ MS Word.
Вот первые две строчки с которых начинается такой файл:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<?mso-application progid='Word.Document'?>

Следующие строки так же обязательны, именно они начинают документ:

<w:wordDocument xmlns:w='http://schemas.microsoft.com/office/word/2003/wordml' xmlns:v='urn:schemas-microsoft-com:vml' xmlns:w10='urn:schemas-microsoft-com:office:word' xmlns:sl='http://schemas.microsoft.com/schemaLibrary/2003/core' xmlns:aml='http://schemas.microsoft.com/aml/2001/core' xmlns:wx='http://schemas.microsoft.com/office/word/2003/auxHint' xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' xmlns:wsp='http://schemas.microsoft.com/office/word/2003/wordml/sp2' w:macrosPresent='no' w:embeddedObjPresent='no' w:ocxPresent='no' xml:space='preserve'>
<w:body>

Завершается MS Word документ так:

</w:body></w:wordDocument>

Написанного выше уже достаточно что-бы создать пустой документ. Теперь рассмотрим, как выглядят некоторые элементы Word-документа, которые используются в большинстве случаев.
Просто текст (параграф):

<w:p><w:r><w:t>
Тут будет Ваш текст.
</w:t></w:r></w:p>

Обратите внимание, что этот блок и все последующие необходимо размещать между элементами w:body и /w:body.
Вот пример вставки текста со стилем bold и выравниванием:

<w:p><w:pPr>
<w:jc w:val='выравнивание'/></w:pPr>
<w:r><w:rPr><w:b /></w:rPr><w:t>
Тут будет Ваш текст.
</w:t></w:r></w:p>

Вставка разрыва строки между параграфами:

<w:p><w:r><w:cr></w:cr></w:r></w:p>

Вставка разрыва страницы:

<w:br w:type='page' />

Вот самый минимум, который позволит Вам формировать документы в формате MS Word. В следующий раз я расскажу о том, как добавить в документ таблицу.


Заглохли, попали в ДТП, сломался автомобиль? Наши эвакуаторы помогут Вам в самых трудных ситуациях.

Опубликовано Четверг, 05-11-2009 в 4:11 пп в рубрики Develop. Вы можете оставить отслеживать комментарии к записи при помощи RSS 2.0 ленты. Вы можете оставить комментарий, или трекбек с Вашего сайта.

Комментарии 2 на запись “Формирование документа MS Word программно.”

  1. Таблицы.Формирование документа MS Word программно. | Путь разработчика пишет:

    [...] « Формирование документа MS Word программно. [...]

  2. Зубр пишет:

    Можно ли распространить данный подход, если требуется программно создать сводную таблицу в разных версиях, но не MS Word, а MS Excel? Например, чтобы все работало и в WS Excel2003, и в MS Excel2007?

Оставить комментарий