Показать сообщение отдельно
  #2  
Старый 08.06.2006, 20:01
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

По поводу вставки данных в 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.
Ответить с цитированием