(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Импорт информации из Delphi в Word

Источник: welikeit
Владимир Богдановский

Известно, что Word является OLE-объектом. Суть OLE технологии - возможность из разрабатываемого приложения(клиента) взаимодействовать с другими приложениями(серверами). Все приложения Microsoft Office являются так называемыми "серверами автоматизации". Microsoft  Word, являясь сервером OLE, позволяет подключаться к себе клиентам и использовать свои методы и свойства.

Алгоритм  импорта данных в Word следующий:
1) создаем подключение к серверу-приложению Word,
2) создаем или открываем существующий документ
3) вносим в документ изменения
4) манипулируем документом, как хотим (сохраняем его, не показывая при этом экране или же наоборот),
5) отсоединяемся от сервера.

 1) Подключение  к серверу Word производится следующим образом:

      var
      Application: variant;
      begin
      Application:= CreateOleObject('Word.Application');
      end;

Сначала вводим вариантную переменную, затем создаем объект OLE 'Word.Application', и присваиваем его этой переменной. Эта процедура называется "создание экземпляра сервера". Создав этот объект, мы затем программируем его свойства и методы.

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

Создание нового документа

Создание  документа производится методом Add:

Синтаксис метода: Add (Template, NewTemplate, DocumentType, Visible)

Все параметры метода - типа Variant и необязательны,

Template 
Имя шаблона, по которому создается новый документ. Если значение не указано, то используется шаблон Normal.
NewTemplate 
Если использовать значение True, то новый документ открывается как шаблон. Значение по умолчанию - False.
DocumentType 
Может принимать одно из следующих значений констант типа WdNewDocumentType: wdNewBlankDocument (новый чистый документ), wdNewEmailMessage(электронное сообщение)  или wdNewWebPage(Web-страница). Значение по умолчанию wdNewBlankDocument.
Visible
Управляет видимостью созданного документа. Если указать значение True, то документ будет видим. По умолчанию Microsoft Word открывает документ с свойством Visible установленным в True.

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

Application.Documents.Add;

Для создания нового документа по шаблону <Шаблон.dot> метод применяется следующим образом

Application.Documents.Add('C:\Program Files\
Microsoft OfficeD9\Шаблон.dot');

Например, создание нового документа в виде Web-страницы будет выглядеть как  

Var
DocumentType: OleVariant;
Application:variant;
begin
Application:= CreateOleObject('Word.Application');
DocumentType:=wdNewWebPage;
Application.Documents.Add(EmptyParam,False,DocumentType,EmptyParam);

Все параметры в методах объявляются типа OleVariant. Если параметр не используется в методе, то вместо него указывается EmptyParam, что означает пустой параметр.

 Открытие документа

Открытие существующего документа Word реализуется методом Open.
Синтаксис метода:

Open (FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format, Encoding, Visible) 

FileName  

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

ConfirmConversions 

Если в значении этого параметра указать значение True, то в случае открытия документа с форматом, отличного от Word,  будет выводится диалоговое окно конвертирования файла. Необязательный параметр.

ReadOnly

 Указывая True, открываем документ только для чтения. Необязательный параметр.

AddToRecentFiles 

Устанавливая значение в True, позволяем добавлять имя открываемого файла в список недавно открытых файлов в меню Файл. Необязательный параметр.

PasswordDocument 

Пароль открываемого документа. Необязательный параметр.

PasswordTemplate

Пароль открываемого шаблона. Необязательный параметр.

 Revert 

Параметр, предусмотренный для открытия файла с именем, уже открытого в данный момент. Если указать True то все изменения текущего документа не сохраняются и открывается файл с подобным именем. При значении False открытый файл активизируется, а новый не открывается. Необязательный параметр.

WritePasswordDocument

Пароль для сохраняемого документа. Необязательный параметр.

WritePasswordTemplate 

Пароль для сохраняемого шаблона. Необязательный параметр.

Format

Конвертор файла, необходимый для открытия документа. Может принимать одно из следующих значений типа  WdOpenFormat: wdOpenFormatAllWord, wdOpenFormatAuto, wdOpenFormatDocument, wdOpenFormatEncodedText, wdOpenFormatRTF, wdOpenFormatTemplate, wdOpenFormatText, wdOpenFormatUnicodeText, or wdOpenFormatWebPages. По умолчанию wdOpenFormatAuto. Необязательный параметр.

Encoding

Кодировка для просмотра документа, может принимать любое правильное значение из ряда констант MsoEncoding. По умолчанию используется системная кодовая станица, установленная по умолчанию. Необязательный параметр.

Visible

УстанавливаяTrue, предусматриваем видимое открытие документа. По умолчанию установлено True. Необязательный параметр.

Например, для открытия документа "c:\Example.doc" метод Open применяется как 

Application.Documents.Open('c:\Example.doc');

а  для файла "C:\Exam.doc" с паролем на открытие "1" как: 

 Application.Documents.Open('c:\Exam.doc',EmptyParam,EmptyParam,EmptyParam,'1'); 

 3) Все элементы рассматриваемого OLE объекта являются так называемыми коллекциями. Коллекция - есть объект, содержащий специфический набор методов и свойств. Коллекция похожа на динамический массив. В ней содержится набор объектов, которые обычно имеют один тип. Вы можете добавлять в нее элементы, удалять и получать их значения. Доступ к элементу осуществляется либо по его порядковому номеру, либо по его имени. Например, все открытые документы представляют собой коллекцию.

 Обращение к документу

 Обращение к открытому документу, как к элементу набора коллекции, можно по порядковому номеру методом Item. Например, обращение ко второму документу будет выглядеть как:

Application.Documents.Item(2);

Нумерация всех элементов в коллекции начинается с единицы, а не с нуля.

Аналогичную операцию можно осуществить еще как.

 Application.Documents(2);

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

Application.Documents.Item(2).Activate;

или по имени файла: 

Application.Document("C:\Example.doc").Activate;

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

Application.ActiveDocument.Close; 

3) Внесение изменений в документы.

Теперь настала очередь изучить иерархию методов и свойств OLE объекта.В упрощенном виде картина выглядит следующим образом:

 

                рис.1

Суть иерархии следующая: объект Application содержит коллекцию документов Documents, тот в свою очередь содержит коллекцию Paragraphs (абзацев), областей документа Range, таблиц Table, закладок Bookmark.

Вставка текста в документ

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

выражение.Range (начало области, конец области)

например, объявленный ниже объект Range1 охватывает собой первые 10 символов второго документа.

var
Range1: variant;
begin
Range1:= Application.Documents(2).Range(1,10);
end;

В документе сначала можно создавать абзацы, т.е. объекты Paragraphs, и затем объединять их в области. К примеру, в начале активного документа методом Add объекта Paragraphs создаем новый абзац, затем на его основе создаем объект Range1:

var
Range1: variant;
begin
Application.ActiveDocument.Paragraphs.Add;
Range1:=Application.ActiveDocument.Paragraphs.Item(1).Range;
end;

Вставка текста производится двумя методами объекта Range: InsertAfter и InsertBefore.

Спецификация методов проста:

выражение.InsertAfter(текст)           этим методом производится вставка текста после начала объекта Range
выражение.InsertBefore(текст)        ,а этим - до.

при использовании этих методов, в качестве параметра указать нужно только текст в апострофах. К примеру, вызов двух операторов

Range1.InsertAfter('это текст InsertAfter');
Range1.InsertBefore('это вставленный текст InsertBefore');

даст нам две строки:

это вставленный текст InsertBefore
это текст InsertAfter

У объекта Range есть много полезных свойств, которые вам неплохо было бы узнать:

свойство Font (шрифт), которое имеет свои подсвойства:

  Font.Bold:=True   - жирность шрифта
 
Font.Name:="Arial"-название шрифта
 
Font.Size:= 24          - размер шрифта

   Font.Color:= clRed    - цвет шрифта

  Font.Italic:= True       - наклонность шрифта

Например, вставка жирной строки зеленого цвета:

Range1.Font.Bold:= True;
Range1.Font.Size:= 24;
Range1.Font.Size:= clGreen;
Range1.InsertAfter('вставленная строка');

Объект типа Range можно форматировать. Например, следующей строкой содержимое объекта Range  выравнивается по центру:

Range1.ParagraphFormat.Alignment = wdAlignParagraphCenter 

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 21.11.2006 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Stimulsoft Reports.Ultimate Single License Includes one year subscription
Quest Software. TOAD Professional Edition
TeeChart Pro VCL/FMX with source code single license
SAP Crystal Reports XI R2 Dev 2006 INTL WIN NUL License (Version 11)
SAP® Crystal Presentation Design 2016 WIN INTL NUL
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Компьютерные книги. Рецензии и отзывы
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100