WordApplication1.Connect; (коннектимся к серверу Ворда. В данном случае сервер - это процесс, или ещё проще, запущенный Word)
WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam); (добавляем в него пустой документ)
WordApplication1.Options.CheckSpellingAsYouType := False; (это оптимизация - отключаем синтаксис)
WordApplication1.Options.CheckGrammarAsYouType := False; (это оптимизация - отключаем грамматику)
WordApplication1.Selection.Font.Size:=12; (шрифт на 12 размер)
WordApplication1.Selection.Font.Name:='Tahoma'; (тахомой)
WordApplication1.Selection.Font.Bold:=Integer(true); (жирненький)
WordApplication1.Selection.ParagraphFormat.Alignment:=wdAlignParagraphRight; (центрирую вправо)
WordApplication1.Selection.InsertAfter('Отчёт о продажах'+#13); (Первое добавление + Enter в конце, чтоб попасть на новую строку)
WordApplication1.Selection.InsertAfter('в период с '+DateToStr(DateTimePicker3.Date)+' по '+DateToStr(DateTimePicker4.Date)+#13); (второе добавление и опять же ентер)
WordApplication1.Selection.Collapse(td); (вот тут внимание: InsertAfter - это процедура которая парарлельно вставке держит весь текст в выделении, чтобы если вдруг понадобиться назначить его новыми свойствами будь то размер шрифта или стиль. Collapse - снимает это выделение. td - переменная в которой храниться куда деть курсор после выделения. Я его пихнул в конец, ибо надо дальше работать...)
var
td:OleVariant;
tseparat:OleVariant;
tcolumn:OleVariant;
WFileName:OleVariant;
begin
...
td:=wdCollapseEnd;
tseparat:=wdSeparateByTabs;
tcolumn := 6;
WFileName:='отчёт.doc'
Дальше у меня создаётся таблица разделителем этой таблицы является символ Tab (#9)
таблица изначально выглядит как строка... а потом конвертируется стандартом: ConvertToTable(разделитель, пусто, кол-во колонок в таблице, пусто...)
WordApplication1.Selection.InsertAfter('Артикул'+#9);
WordApplication1.Selection.InsertAfter('Изделие'+#9);
WordApplication1.Selection.InsertAfter('Общий вес (г.)'+#9);
WordApplication1.Selection.InsertAfter('Цена покупки (руб.)'+#9);
WordApplication1.Selection.InsertAfter('Цена продажи (руб.)'+#9);
WordApplication1.Selection.InsertAfter('Прибыль (р.)'+#9);
WordApplication1.Selection.InsertAfter(str);
В str у меня храниться строка виде (Артикул1#9Изделие1#9Общийвес1 и так далее)
WordApplication1.Selection.ConvertToTable(tseparat,EmptyParam,tcolumn,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication1.Selection.Collapse(td);
Снова снимаем выделение с таблмицы.
Сохраняем, с одним параметром "куда")
WordApplication1.ActiveDocument.SaveAs(WFileName,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication1.ActiveDocument.Close(EmptyParam, EmptyParam, EmptyParam); (закрываем открытый документ)
WordApplication1.Disconnect; (отключаемся от сервера)