Шаг 6.
Вкладка Servers. Компонент TWordApplication (часть 5)

    На этом шаге мы продолжаем рассмотривать свойтсва компонента 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);
по аналогии и со строками. Присоединиться к таблице в Word (если мы не создавали ее, но знаем, что она есть):
var Tbl: Table;
...
tbl:=WordApplication1.ActiveDocument.Tables.Item(1);
теперь спокойно работаем с таблицей через переменную tbl.
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;
В Word 2003 создаваемые таблицы по умолчанию имеют прозрачные границы ячеек. Следовательно, если нам нужна непрозрачная, необходимо установить нужный нам стиль. Итак, устанавливаем стиль границ таблицы:
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;
S: String или WideString. По аналогии происходит и занесение текста.
//Количество таблиц в документе:
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.




Предыдущий шаг Содержание Следующий шаг