Если используешь шаблон, то вариант такой:
1. В шаблоне Word'a в нужные места расставляешь Bookmark (Insert->Bookmark).
2. В проге позиционируешь на этот букмарк и пишешь данные.
(WrdApp - TWordApplication)
procedure TfrmPToClient.bbCreateClick(Sender: TObject);
var
InvoiceTemplate: OleVariant;
begin// Соединение с OLE-сервером
WrdApp.Connect;
WrdApp.Visible := True;
// выбор шаблонаifnot 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 на первую ячейку,
далее в цикле вызываешь вордовский макрос создания новой
строки и с помощью макросов перехода по ячейкам вбиваешь данные из набора.
Кстати, если будешь делать вывод набора записей - выложи пример,
а то теоретически я себе это представляю, а до практики руки не дошли.
Экспорт информации из базы данных в Microsoft Word позволяет автоматизировать процесс формирования документов, используя шаблоны и макросы, для позиционирования данных и создания таблиц.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.