Экспорт информации из базы данных в 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 на первую ячейку,
далее в цикле вызываешь вордовский макрос создания новой
строки и с помощью макросов перехода по ячейкам вбиваешь данные из набора.
Кстати, если будешь делать вывод набора записей - выложи пример,
а то теоретически я себе это представляю, а до практики руки не дошли.
|