Как создать таблицу в MS Word?

Материал из DRKB


Для примера, Doc: TWordDocument

var
  Tbl: Table;
  R: Range;
  Direction: OleVariant;
begin
  Direction := wdCollapseEnd;
  R := Doc.Range;
  R.Collapse(Direction);
  Tbl := Doc.Tables.Add(R, 2, 4, EmptyParam, EmptyParam);
  Tbl.Cell(1, 1).Range.Text := 'Row 1, Col 1';
  Tbl.Cell(1, 2).Range.Text := 'Row 1, Col 2';
end;

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

const
  Line1 = 'January,February,March';
  Line2 = '31,28,31';
  Line3 = '31,59,90';
var
  R: Range;
  Direction, Separator, Format: OleVariant;
begin
  R := Word.Selection.Range;
  Direction := wdCollapseEnd;
  R.Collapse(Direction);
  R.InsertAfter(Line1);
  R.InsertParagraphAfter;
  R.InsertAfter(Line2);
  R.InsertParagraphAfter;
  R.InsertAfter(Line3);
  R.InsertParagraphAfter;
  Separator := ',';
  Format := wdTableFormatGrid1;
  R.ConvertToTable(Separator, EmptyParam, EmptyParam, EmptyParam, Format, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam);
end;


Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04424