C создание документа word

Обновлено: 07.07.2024

Sample Code

The sample code in this article demonstrates how to do the following:

  • Insert paragraphs with text and formatting.
  • Browse and modify various ranges within a document.
  • Insert tables, format tables, and populate the tables with data.
  • Add a chart.

Add a reference to Microsoft Word Object Library. To do this, follow these steps:

  1. On the Project menu, click Add Reference.
  2. On the COM tab, locate Microsoft Word Object Library, and then click Select.

Note In Visual Studio 2005, you do not have to click Select.

Note Microsoft Office 2003 includes Primary Interop Assemblies (PIAs). Microsoft Office XP does not include PIAs, but they can be downloaded.

  1. Click OK in the Add References dialog box to accept your selections. If you are prompted to generate wrappers for the libraries that you selected, click Yes.

On the View menu, select Toolbox to display the Toolbox, and then add a button to Form1.

Double-click Button1. The code window for the form appears.

In the code window, replace the following code:

Scroll to the top of the code window. Add the following line to the end of the list of using directives:

Press F5 to build and to run the program.

Click Button1 to start Word Automation and to create the document.

After the code completes, examine the document that was created for you. The document contains two pages of formatted paragraphs, tables, and a chart.

Use a Template

If you are using Automation to build documents that are all in a common format, you can benefit from starting the process with a new document that is based on a preformatted template. Using a template with your Word Automation client has two significant advantages over building a document from nothing:

  • You can have greater control over the formatting and placement of objects throughout your documents.
  • You can build your documents with less code.

By using a template, you can fine-tune the placement of tables, paragraphs, and other objects within the document, as well as include formatting on those objects. By using Automation, you can create a new document based on your template with code such as the following:

In your template, you can define bookmarks so that your Automation client can fill in variable text at a specific location in the document, as follows:

Another advantage to using a template is that you can create and store formatting styles that you wish to apply at runtime, as follows:

Пример кода

В примере кода в этой статье показано, как выполнить следующие действия:

  • Вставка абзацев с текстом и форматированием.
  • Просмотр и изменение различных диапазонов в документе.
  • Вставка таблиц, форматирование таблиц и заполнение таблиц данными.
  • Добавление диаграммы.

Добавьте ссылку на библиотеку объектов Microsoft Word. Для этого выполните следующие действия:

  1. On the Project menu, click Add Reference.
  2. На вкладке COM найдите объект библиотека объектов Microsoft Word и нажмите кнопку Выбрать.

Note (Примечание ) В Visual Studio 2005 не нужно нажимайте кнопку выбрать.

Note (Примечание ) В состав Microsoft Office 2003 входят основные сборки взаимодействия (PIA). Microsoft Office XP не включает PIA, но их можно скачать.

В меню Вид выберите пункт Панель элементов, чтобы отобразить панель элементов, а затем добавьте кнопку в форму Form1.

Дважды щелкните элемент Button1. Откроется окно кода для формы.

В окне код замените следующий код:

Прокрутите окно до верхней части окна кода. Добавьте следующую строку в конец списка директив using:

Нажмите клавишу F5 для построения и запуска программы.

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

Использование шаблона

Если вы используете автоматизацию для создания документов, отформатированных в общем формате, можно воспользоваться новым документом, основанным на предварительно отформатированном шаблоне. Использование шаблона с клиентом автоматизации Word имеет два существенных преимущества по сравнению с созданием документа из ничего:

  • Вы можете больше управлять форматированием и размещением объектов в документах.
  • Вы можете создавать документы с меньшим количеством кода.

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

В шаблоне можно определить закладки, чтобы клиент автоматизации мог заполнять переменный текст в определенном месте документа, как показано ниже:

Еще одно преимущество использования шаблона состоит в том, что вы можете создавать и хранить стили форматирования, которые вы хотите применить во время выполнения, следующим образом:

Ссылки

Для получения дополнительных сведений ознакомьтесь со статьями базы знаний Майкрософт:


Добавьте следующий с помощью оператора, чтобы упростить работу с пространством имен Word. Часть Word = означает, что вы можете использовать Word как псевдоним для пространства имен.

В этом примере используется следующий код для создания нового документа Word и добавления в него текста.

private void btnGo_Click ( отправитель объекта , EventArgs e ) Word . _Application word_app = new Word . ApplicationClass ( ) ; Word . _Document word_doc = word_app . Documents . Add ( ref missing , ref missing , ref missing , ref missing ) ; Word . Paragraph para = word_doc . Paragraphs . Add ( ref missing ) ; «используйте следующие параметрические уравнения , когда t идет» + / / Сохраним текущий шрифт и начнем с использования Courier New . word_doc . SaveAs ( ref filename , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , ref missing , word_doc . Close ( ref save_changes , ref missing , ref missing ) ; word_app . Quit ( ref save_changes , ref missing , ref missing ) ;

В этом примере видится сервер Word. В реальном приложении вы можете захотеть сохранить его скрытым.

Объектная модель Word использует множество вызовов методов, которые по какой-то причине принимают множество параметров по ссылке, даже если они не изменяются методами. Это означает, что вы должны поместить значения для этих параметров в переменные. Например, вы не можете использовать true как логический параметр, потому что вы не можете передавать константу по ссылке. Аналогично, вы не можете использовать литеральную строку, такую как C: \ wherever \ test.doc для имени файла, который вы открываете, потому что это не назначаемая переменная.

Код создает специальную переменную с именем missing, которая имеет значение Type.Missing. Код может использовать это значение для любых необязательных параметров, которые ему не нужно передавать методам Word. Затем программа использует его при вызове вызова Documents.Add сервера Word, который создает новый документ Word.

Теперь программа начинает добавлять текст в документ. Он добавляет объект Paragraph к коллекции документа Paragraphs.

Одним из наиболее важных объектов в Word является Range. A Диапазон представляет собой кусок документа. Код устанавливает текст нового абзаца в «Кривую хризантемы». Затем он устанавливает стиль объекта Range в «Заголовок 1.». Снова обратите внимание на нечетный способ, которым он должен поместить значение в переменную перед вызовом set_Style, чтобы он мог передавать имя стиля по ссылке.

Затем код вызывает метод Range объекта InsertParagraphAfter. Это добавляет метку абзаца после текущего текста объекта Range и обновляет Range, чтобы перейти к новому абзацу. Теперь Range готов добавить больше текста после первого абзаца.

Код снова устанавливает текст объекта Range для добавления нового текста и вызовов InsertParagraphAfter снова.

Далее код добавляет некоторый текст, отформатированный как код с шрифтом Courier New. Он сохраняет имя текущего шрифта и устанавливает шрифт объекта Range в Courier New. С этого момента новый текст будет иметь этот шрифт.

Код снова устанавливает текст объекта Range и добавляет новый знак абзаца. Затем он восстанавливает исходное имя шрифта, поэтому будущий текст будет в исходном шрифте.

Часть 2. Работа с OLE-сервером Word.

Аналогично как и в части 1 - поставим целью из приложения (контроллера автоматизации) создать документ изображенный на Рис 2.1. Он также типичен с точки зрения созданя прикладных программ, использующих для вывода информации Word и содержит три наиболее часто используемых составных элемента: текстовую информацию, таблицу и диаграмму.

Путь создания данного документа - это шаги, которые позволят освоить работу с OLE сервером Word.


Рис 2.1 Итоговый документ, сформированный контроллером.

2.1 Получение доступа к интерфейсу Application для Word.

1. Включить в проект модули:

2. Определить - лучше глобально (для наглядности и удобства) - переменные, отражающие иерархию объектов Word
Приложение->Набор документов->документ->Набор парагрофов-> Параграф->Строки

3. создать объект автоматизации:

Чтение значения свойства.

2.2 Интерфейсы и константы

Список интерфейсов и констант получаем при просмотре библиотеки типов Microsoft Word Object Library, открыв например файл MSWord9.olb (или другой в зависимости от версии Microsoft Offise). О пользовании библиотекой см. Ч 1. P 1.2.

Аналогично будем пользоваться сохраненным файлом MSWord9.idl и использовать так называемый " хитрый метод ".

1. Запустить Word.

2. Сервис/Maкрос/Начать запись

3. Выполннить последовательность нужных действий.

4. Остановить запись

5. Вызвать Visual Basic (Alt+F11)

2.3 Создание рабочего документа

Создаем новое приложение (File/New/Application) и сохраним его файлы в директории по умолчанию (Projects) c именами по умолчанию Unit1.cpp, Unit1.h, Unit1.dfm, Project1.cpp, Project1.bpr. Имена на данном этапе не цель, хотя не возбраняется создать новую директорию и дать приложению и файлам подходящие имена.

Переменные соответствующие используемым в программе объектам, а именно:

определим сразу все и глобально или в файле Unit1.h (в разделе private:) или перед функциями в Unit1.cpp, хотя для данного этапа требуются пока не все переменные и можно определить нужные и локально.

Переменная fStart служит индикатором того, что сервер запущен.

Разместим на форме как и ранее три кнопки (из вкладки Standart компонент Button). Подписывать кнопки также не будем (сейчас это тоже не цель), но запомним, что по первой кнопке будем работать с таблицей, по второй с диаграммой, а по третьей закрывать сервер и приложение. Выполним два клика по Button1 и Button3, создаем таким образом обработчики события нажатия кнопки.

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

2.3.1 Вывод текстовой информации.

На первом этапе выводим текст. Пусть на данном этапе необходимо вывести следующее.


Рис 2.2 Вывод текстовой информации.

В обработчике нажатия первой кнопки начнем формировать код программы.

Создаем Объект Word.Application.

О использовании try catch мы также уже говорили в Ч 1. п 1.3.

Сделаем приложение видимым.

Переменной vVarDocs присваивается значение Documents - свойство объекта Word.Application, содержащее набор рабочих документов.

Добавляем созданный документ в приложение - для этого надо выполнить вызов, прототип которого:

Пре NewTemplate true создается шаблон при false - документ.

Правильно для конретной версии Word создание документа записать как:

Посколько расположение шаблонов хранится для всех установленных типов документов в реестре, то для создания простого документа можно использовать установки по умолчанию и достаточно записать:

Этот вызов можно повторить столько раз сколько будет создано рабочих документов. Следует обратить внимание, что обратиться к документу после его создания можно по свойству Item следующим образом:

Здесь n=1 соответствует последнему созданному документу, n-1 предпоследнему, и. т.д.

Создаем, например 2 документа:

Проверяем, что создано два документа:

Будем работать с первым документом, как ни странно его Item = 2:

Смотреть будем тоже на первый документ - т.е. активируем его:

Получаем свойство Paragraphs объекта документ:

Задаем текст для вывода:

Работаем с первым параграфом:

Заносим в него текст:

Выравниваем по правому краю (wdAlignParagraphRight - по правому краю), по причинам описанным выше используем константы вместо имен переменных:

Аналогично выводим следующие параграфы, в том числе и пустые:

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

Как создать .xlsx документ и записать в него что-нибудь
Как создать .xlsx документ и записать в него что-нибудь? Что-то ни в msdn, ни в гугле не могу найти.


Как создать новый тип - списки чего-нибудь
Добрый вечер. Почему-то не компилируется такой вот код: data CL = CL a Говорит, не знает.

Немогу создать документ Word
Такая проблемма на компе есть ворд но в контекстном мею когда стоит выбор какой документ создать.

Братья я ведь такой же как вы, помогите )), только отстал на 7 лет, я писал в школе на паскале, все было чики пуки, вот решил взятся за с++, для себя, очень хочется реализовать вывод в ворд, но простые советы мне не помогут думаю еслиб я знал что такое ком я бы не спрашивал такие вопросы ) блин ну помогите чайнику а . А почему ты документацию не поищешь? Почему не почитаешь? Влом, поди значит, мне тоже влом отвечать. Все бы вам готовенькое и сразу.
"Помоги себе сам". Будут настоящие проблемы - мы поможем. Я приаттачил доку, которую сам когда-то читал. Пробуй.

Сталкивался я когда-то с такой задачей. Долго розбирался с ком объектами и нашел болле простое и быстрое решение.
Применил формат RTF. Тем более что с ним работает и Вордпад.
Суть метода очень проста:
-Создаем документ в Вёрде с нужным текстом, форматированием, таблицами и даже можно использовать рисунки.
-В тех местах где нужно вставлять свой тект либо значения набираем уникальные ключи. Например RPID01, RPID02, RPID03. и т.д. Короче это может быть любой перечень символов, кроме названий тегов, которые содержит сам RTF формат.
Форма готова.
-Далее открываем в программе этот документ в виде обычного текстового файла.
-Находим ключи и вместо них вставляем свой текст.
-Сохраняем изменения в новом файле с расширением RTF.
Вёрдовский файл с нужными данными готов!

Идея достаточно проста. Если задача сложная можно зарание заготовить несколько RTF форм и открывать ту или иную исходя из текущих результатов программы.
Либо еще можно генерить RTF код самим, но это посложнее.

Еще нужно учесть, что в RTFе русские символы записываются в ввиде последовательности \' плюс код символа в шеснадцатиричной системе,
например \'f3

Читайте также: