Delphi World - Экспорт информации из базы данных в Word
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Экспорт информации из базы данных в Word

Автор: Uncle B.

Если используешь шаблон, то вариант такой:
1. В шаблоне Word'a в нужные места расставляешь Bookmark (Insert->Bookmark).
2. В проге позиционируешь на этот букмарк и пишешь данные.


(WrdApp - TWordApplication)

procedure TfrmPToClient.bbCreateClick(Sender: TObject);
var
  InvoiceTemplate: OleVariant;
begin
  // Соединение с OLE-сервером
  WrdApp.Connect;
  WrdApp.Visible := True;
  // выбор шаблона
  if not FileExists(dlgOpen.FileName) then
    Exit;
  InvoiceTemplate := edFileName.Text;
  // открытие выбраного шаблона в Word'e
  WrdApp.Documents.Add(InvoiceTemplate, EmptyParam);
  WordGotoBookmark('PDate');
  WordInsertText(' ' + DateToStr(dtpPDate.Date));
  WordGotoBookmark('PNr');
  WordInsertText(' ' + edPNr.Text);
  WordGotoBookmark('PClientName');
  WordInsertText(' ' +
    dmIB_TOIS.tblProject.FieldByName('ProjectClientName').asString);
  WordGotoBookmark('ContractNr');
  WordInsertText(' ' + dmIB_TOIS.tblProject.FieldByName('CLWordGotoBookmark('
    ContractDate');
    WordInsertText(' ' +
      dmIB_TOIS.tblProject.FieldByName('CL_ContractDate').asString);
    WordGotoBookmark('PCargoName');
    WordInsertText(' ' +
      dmIB_TOIS.tblProjectCargo.FieldByName('CargoName').asString);
    WordGotoBookmark('PProjectYear');
    WordInsertText(' ' +
      dmIB_TOIS.tblProject.FieldByName('PROJECTNOTICEYEAR').asString);
    WordGotoBookmark('PProjectMonth');
    WordInsertText(' ' +
      arMonths[dmIB_TOIS.tblProject.FieldByName('PROJECTNOTICEMonth').asInteger]);
end;

procedure TfrmPToClient.WordGotoBookmark(Bookmark: string);
var
  What: OLEVariant;
  Which: OLEVariant;
  Count: OLEVariant;
  Name: OLEVariant;
begin
  What := wdGoToBookmark;
  Which := unAssigned;
  Count := unAssigned;
  Name := Bookmark;
  WrdApp.Selection.GoTo_(What, Which, Count, Name);
end;

procedure TfrmPToClient.WordInsertText(Text: string);
begin
  WrdApp.Selection.TypeText(Text);
end;

В случае, если нужно вывести набор записей (например в вордовскую таблицу), то вариант такой :
1. В шаблоне Ворда рисуешь "болванку" таблицы, делаешь макрос вставки новой строки в таблицу и можно ещё простые макросы перехода по ячейкам таблицы.
2. В проге позиционируешь через Bookmark на первую ячейку, далее в цикле вызываешь вордовский макрос создания новой строки и с помощью макросов перехода по ячейкам вбиваешь данные из набора.

Кстати, если будешь делать вывод набора записей - выложи пример, а то теоретически я себе это представляю, а до практики руки не дошли.

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования