На этом шаге мы продолжаем рассмотривать свойтсва компонента TWordApplication.
// Вставляем таблицу. R1:=WordApplication1.Selection.Range; Tbl :=R1.Tables.Add(R1,6,5,EmptyParam,EmptyParam); // Форматируем таблицу. // Первый столбец. Tbl.Columns.Item(1).SetWidth(72,wdAdjustNone); // Второй и т.д. Tbl.Columns.Item(2).SetWidth(99,wdAdjustNone); Tbl.Columns.Item(3).SetWidth(112,wdAdjustNone); Tbl.Columns.Item(4).SetWidth(112,wdAdjustNone); Tbl.Columns.Item(5).SetWidth(112,wdAdjustNone);
var Tbl: Table;
...
tbl:=WordApplication1.ActiveDocument.Tables.Item(1);
WordApplication1.Selection.SelectRow;
WordApplication1.Selection.EndKey(L,E);
R1:=WordApplication1.Selection.Range;
d:=wdAutoFitContent;
Tbl :=R1.Tables.Add(R1,6,9,EmptyParam,d);
// Ответ на вопрос.
Тbl.Rows.Item(1).HeadingFormat:=-1;
R1:=WordApplication1.Selection.Range; Tbl :=R1.Tables.Add(R1,7,9,EmptyParam,d); // Устанавливаем стиль внутренних границ. Tbl.Borders.InsideLineStyle:=wdLineStyleSingle; // Устанавливаем стиль внешних границ. Tbl.Borders.OutsideLineStyle:=wdLineStyleSingle;
S:=Tbl.Cell(1, 1).Range.Text;
//Количество таблиц в документе: col:=WordApplication1.ActiveDocument.Tables.Count; //Количество строк и столбцов в таблице: var Tbl: Table; c,r:integer; ... Tbl:=WordApplication1.ActiveDocument.Tables.Item(1); ... // Количество строк. r:=tbl.Rows.Count; // Количество столбцов. c:=tbl.Columns.Count;
Создадим приложение, которое создает новый документ Microsoft Word, создает в нем таблицу, в которую записывает одинаковые значения и отображает документ на экране монитора.
Текст модуля прописан ниже:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CheckLst; type TForm1 = class(TForm) WordApplication1: TWordApplication; Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure Button1Click(Sender: TObject); var i:integer; s:WideString; // Используемый сепаратор как разделитель в тексте по столбцам. separat:String; d, separatOV, Column:OleVariant; begin // Инициализируем нужные переменные. D:=wdCollapseEnd; Separat:='@'; // Инициализируем сепаратор, допустим символ '@'. separatOV:=separat; Column:=3; // Инициализируем количество столбцов. s:=''; // Обнуляем текстовую переменную. // Запускаем Word. WordApplication1.AutoQuit:=true; WordApplication1.ConnectKind:=ckNewInstance; WordApplication1.AutoConnect:=true; WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam); // Теперь записываем в переменную текст. for i:=1 to 10 do begin // Для примера обычный текст, но можно и из БД и других таблиц. s:=s+'Familia'+separat+'Name'+separat+'Adress'+#13; end; // Вставляем текст. WordApplication1.Selection.InsertAfter(s); // Преобразуем в таблицу. WordApplication1.Selection.ConvertToTableOld(separatOV,EmptyParam,Column, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam); // Снимаем выделение. WordApplication1.Selection.Collapse(D); // Делаем видимым документ. WordApplication1.Visible:=true; end; end.
Рис.1. Работа с таблицей в Microsoft Word
Текст этого примера можно взять здесь.
На следующем шаге мы рассмотрим компонент TWordDocument.