По поводу вставки данных в Word. Вот примерный алгоритм работы:
1) Брось на форму компоненты WordApplication1 и WordDocument1 (вкладка Servers), а в класс TForm добавь процедуру для вставки текста в документ. Пример:
Код:
type
TForm1 = class(TForm)
Button1: TButton;
WordApplication1: TWordApplication;
WordDocument1: TWordDocument;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure InsertTextToDoc(CompText, DocName: string);
end;
2) Процедура InsertTextToDoc выглядит так:
Код:
procedure TForm1.InsertTextToDoc(CompText, DocText: string);
begin
WordApplication1.Selection.Start := 0;
WordApplication1.Selection.End_ := 0;
WordApplication1.Selection.Find.Forward := true;
WordApplication1.Selection.Find.Text := DocText;
if WordApplication1.Selection.Find.Execute( EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam ) then
begin
WordApplication1.Selection.Delete( EmptyParam, EmptyParam );
WordApplication1.Selection.InsertAfter( CompText );
end;
end;
3) Теперь немного о структуре документа. Допустим, тебе нужно вставить в документ ФИО и дату. В документе (который будет играть роль шаблона) нужно расставить ключевые слова, которые потом будут заменены нужной информацией. Например, для ФИО это будет ###FIO, а для даты ###DATA. Далее открываем шаблон (пусть, для примера, файл называется 1.doc), делаем необходимые замены, и сохраняем его в другом месте или под другим именем. Пример:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
OpenFileName, SaveFileName: OleVariant;
begin
OpenFileName := ExtractFilePath( Application.ExeName ) + '1.doc';
SaveFileName := ExtractFilePath( Application.ExeName ) + '2.doc';
WordApplication1.Connect;
WordApplication1.Documents.Open( OpenFileName, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam );
InsertTextToDoc( 'Петров', '###FIO' );
InsertTextToDoc( DateTimeToStr( Now ), '###DATA' );
WordApplication1.Visible := true;
WordDocument1.ConnectTo( WordApplication1.ActiveDocument );
WordDocument1.SaveAs( SaveFileName );
WordDocument1.Disconnect;
WordApplication1.Disconnect;
end;
Вот пример:
primer_word.zip.