Como ler um Arquivo Word e Preencher campos com dados de BD

Delphi

14/01/2004

Como faço para ler atravez de um aplicativo Delphi um arquivo que está em Word e imprimir preenchendo alguns campos com informações de um BD.

Solicito se possivel um exemplo ou onde encontro informações sobre o assunto.

Ps. Meu chefe me falou q se em dois dias isto não estiver resolvido com certeza eu vou ter problemas.

Atenciosamente,

Tadeu


Numeros.info

Numeros.info

Curtidas 0

Melhor post

Aroldo Zanela

Aroldo Zanela

14/01/2004

Colega,

Acho que o uso do próprio Word para utilizar um banco de dados externo vai resolver o teu problema (do seu chefe). No entanto, você pode utilizar o seguinte exemplo:

var
  Form2: TForm2;
  Word2k: Variant;

implementation

...........

procedure TForm2.btnContratoClick(Sender: TObject);
var Doc: Variant;
begin
Word2k := CrieObjeto(´Word.Application´);
  Doc := Word2k.Documents.Open(´c:\dados\factoring\contrato de factoring.doc´);

  // Contratante
  Doc.Content.Find.Execute(FindText := ´@01´, ReplaceWith := tbCadastroCED_NOME.Value);
  Doc.Content.Find.Execute(FindText := ´@02´, ReplaceWith := tbCadastroCED_DENOM.Value);

  Word2k.Visible := true;
end;


Onde @01 e @02 são constantes que estão no texto do DOC do word que serão substituidos.


GOSTEI 1

Mais Respostas

Rjosy

Rjosy

14/01/2004

Se entendi bem, vc quer um doc e mesclá-lo com dados do bd.
Existe um pacote gratuito para isso.

Procure na web por EkRtf (o nome começa com EkRtf, não lembro o nome precisamente).


GOSTEI 1
Vanius

Vanius

14/01/2004

tenho algo assim em casa. vou verificar e te envio amanha.


abraçõs,


Vanius


GOSTEI 0
Vanius

Vanius

14/01/2004

lembrei.

é um livro que ensina a usar componentes da palheta SERVERS para o Delphi 5.

Se nao me engano é ´Utilizando o microsoft office em Delphi 5´.
De uma olhada no site da editora relativa. Tem propaganda dela nas revistas do clube delphi.


Mas amanha te envio o fonte.

Abraços,


Vanius


GOSTEI 0
Steve_narancic

Steve_narancic

14/01/2004

O Exemplo sugerido funciona perfeitamente para o Corpo do documento, mas como fazer para que as constantes que estão em um cabeçalho ou rodapé sejam igualmente substituidas?

Agradeço pela atenção desde já


GOSTEI 0
Bfidelis

Bfidelis

14/01/2004

Galera tenho um documento word padrão usado na empresa para fazer uma lista de presença em treinamentos, porém agora eles querem gerar essa lista, com os nomes dos participantes, já preenchida através do sistema. Vi aqui como alterar campos, mas no meu caso além de alguns que só precisam ser inseridos uma vez, tenho o detail, isso é, todos os participantes do treinamento. Alguém pode me ajudar? É meio urgente.
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

14/01/2004

GOSTEI 0
Raimundo Pereira

Raimundo Pereira

14/01/2004

Fiz um exemplo no XE7
Declare em Uses ComObj.

Você pode substituir os edits por campos do seu banco de dados.

var
WinWord, Docs, Doc: Variant;
begin
WinWord := CreateOleObject('Word.Application');
// Tornar o word visivel
WinWord.Visible := True;
// Abrir arquivo para edição

Doc:= WinWord.Documents.Open(ExtractFilePath(Application.ExeName)+'Modelo.doc');
// Substituir itens do arquivo por texto escolhido
Doc.Content.Find.Execute(FindText := '@aluno' , ReplaceWith := EdtNome.Text);
Doc.Content.Find.Execute(FindText := '@treinamento', ReplaceWith := EdtTreinamento.Text);
Doc.Content.Find.Execute(FindText := '@horario' , ReplaceWith := EdtHorario.Text);
// Salvar Documento

Doc.SaveAs(ExtractFilePath(Application.ExeName) + EdtNome.Text + '.doc');

if Application.MessageBox('Deseja Fechar o Documento?','Confirmação',MB_ICONQUESTION)=ID_OK then

  WinWord.Quit;

// Fechar


end;
GOSTEI 0
POSTAR