Пример работы с com (использование сервера WordXp) и ole.
{ Help по использованию сервера WordXP можно найти:
- SDK (Software Development Kit) набор средств для разработки ПО,
комплект программ для разработчика ПО;
- MSDN (Microsoft Developers Network) сеть для разработчиков, использующих платформу Microsoft;
три серии (MSDN Library, Professional и Universal).
-- msdn.microsoft.com -- msdn2.microsoft.com --
}
Предварительно на форму помещаем два компонента WordApplication и WordDocument (на закладке Servers) переименуем их в WordApp и WordDoc соответственно. Также помещаем на форму OleContainer (на закладке System).
…
procedure TForm1.Button1Click(Sender: TObject);
var fName: OleVariant;
T1: Table; // переменная таблицы
tformat, tappbrd: OleVariant; // переменные для форматирования таблицы
begin
// Установить соединение с сервером
WordApp.Connect;
// Добавляем новый документ на основе стандартного шаблона
// function Add(var Template: TOleVariant; var NewTemplate: TOleVariant;
// var DocumentType: TOleVariant; var Visible: TOleVariant): _Document;
// где Template - имя шаблона, по умолчанию используется Normal;
// NewTemplate - при значении true открывает как шаблон, false как документ;
// DocumentType - определяет типа документа (обычный, email, XML, web);
// Visible - определяет будет ли виден документ при его создании
WordApp.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
// Ассоцируем объект WordDoc с активным документом
WordDoc.ConnectTo(WordApp.ActiveDocument);
// Устанавливаем вертикальную ориентацию листа
WordDoc.PageSetup.Orientation:=0;
// Устанавливаем параметры страницы документа
WordDoc.PageSetup.LeftMargin:=71; WordDoc.PageSetup.TopMargin:=56.7;
WordDoc.PageSetup.RightMargin:=56.7; WordDoc.PageSetup.BottomMargin:=56.7;
// Делаем текущий стиль шрифта жирным
WordDoc.Paragraphs.First.Range.Bold:=1;
// Выравниваем текст по центру
WordDoc.Paragraphs.First.Range.ParagraphFormat.Alignment:=wdAlignParagraphCenter;
// Вставляем текст
WordDoc.Content.InsertAfter('Тема: COM-объекты');
// Вставляем новый параграф (перенос строки)
WordDoc.Content.InsertParagraphAfter;
// Выравниваем текст, находящийся в последнем параграфе по левому краю документа
WordDoc.Paragraphs.Last.Range.ParagraphFormat.Alignment:=wdAlignParagraphLeft;
// Для последнего параграфа устанавливаем наклонный стиль шрифта
WordDoc.Paragraphs.Last.Range.Italic:=1;
WordDoc.Content.InsertAfter('Работа с WordXP Server');
WordDoc.Content.InsertParagraphAfter;
// Создаем в документе таблицу 1 - строка и 8 - колонок
// function Add(const Range: Range; NumRows: Integer; NumColumns: Integer;
// var DefaultTableBehavior: OleVariant; var AutoFitBehavior: OleVariant): Table;
// где Range - область куда вставляется таблица;
// DefaultTableBehavior - автоподбор ширины столбцов;
// AutoFitBehavior - устанавливает правила для определения размера таблицы
T1:=WordDoc.Content.Tables.Add(WordDoc.Paragraphs.Last.Range, 1, 8, EmptyParam, EmptyParam);
// Устанавливаем стандартные свойства для таблицы
tformat:=wdTableFormatGrid1; tappbrd:=wdTableFormatApplyBorders;
// Выполняем автоматическое форматирование таблицы
// procedure AutoFormat(var Format: OleVariant; var ApplyBorders: OleVariant;
// var ApplyShading: OleVariant; var ApplyFont: OleVariant;
// var ApplyColor: OleVariant; var ApplyHeadingRows: OleVariant;
// var ApplyBorders: OleVariant; var ApplyLastRow: OleVariant;
// var ApplyFirstColumn: OleVariant; var ApplyLastColumn: OleVariant;
// var AutoFit: OleVariant);
T1.AutoFormat(tformat, tappbrd, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
// Устанавливаем ширину ячейки с координатами 1, 3 (строка, столбец)
T1.Cell(1,3).Width:=70;
// Записываем текст в третью ячейку таблицы
T1.Cell(1,3).Range.Text:='Ячейка №3';
// Сохранение документа Word
fName:='temp.doc'; WordDoc.SaveAs(fName);
// Загрузка документа в OleContainer
OleContainer1.CreateObjectFromFile('C:\temp.doc', false);
// Закрываем файл temp.doc
WordDoc.Close;
// Разрыв соединения с сервером
WordApp.Disconnect;
end;
Создание своих COM объектов и использование существующих можно посмотреть в книге Архангельского А.Я. «Программирование в Delphi7»
Архангельский. А.Я. «Delphi 2006. Справочное пособие»