MODELOS DO WORD

09/09/2009

1

Boa noite

Eu tenho um arquivo .dot/.dotx (modelo do word) e gostaria através de um clique em um botão criar um novo documento (.doc/docx) a partir desse modelo.

Já tentei com desktop.open(arquivo) mas ao invés dele criar um novo documento ele simplesmente abre o arquivo de modelo.

Desde já agradeço


Responder

Posts

10/09/2009

Dyego.carmo

Você não consegue pois não está interagindo com o WORD... esta mandando ele abrir o arquivo MODELO... na realidade voce esta dizendo

´WINDOWS ABRA ESTE .DOT´ e ele abre o WORD... é só isto...

Para fazer isto que voce quer fazer... OU crie um .DOC com base nesse .DOT e utilize desktop.open.... ou voce interage diretamente com o WORD utilizando OLE (o que com java é uma Missao quase impossivel)


Responder

10/09/2009

Pauloroger

Olha dyego.carmo, eu tenha a rotina em Delphi, talvez vc consiga passar para java ou lhe de alguma idéia, pois também uso OLE como o colega acima mencionou.

var
MSWord, doc: Variant;
wDoc: string;
Valor : Double;

begin
inherited;

wDoc := DBComboBox_Dependencia.Text + ´.DOC´; //minha combox com os nomes dos documentos

Valor := (DM.CDS_ContratosVALOR.AsFloat);

//declarar uses comobj e wordxp
//cria objeto
MSWord := CreateOleObject(´Word.Application´);
//mudar propriedade do word para invisivel
MSWord.Visible:=false;
// passa o caminho do Doc e senha do mesmo
doc:=MSWord.Documents.open(ExtractFilePath(Application.ExeName) + ´/documentos/´ + wDoc ,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
// faz uma busca em todas as variaveis do doc e substitui a veriavel pelo texto

doc.Content.Find.Execute( ´<ID>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_ID.Text,wdreplaceall,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<LOCATARIO>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_LOCATARIO.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<ANO>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , inttostr(yearof(date)),wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<ENDERECO>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_ENDERECO.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<CNPJ>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_CNPJ.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<INSCRICAO_ESTADUAL>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_INSCRICAO_ESTATUAL.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<REPRESENTANTE>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_REPRESENTANTE.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<MATRICULA>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_MATRICULA.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<CPF>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_CPF.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<EMAIL>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_EMAIL.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<TELEFONES>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_TELEFONE.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<RG>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_RG.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<DEPENDENCIA>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBComboBox_Dependencia.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<DATA>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_DATA.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<HORA_INICIAL>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_HORA_INICIAL.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<HORA_FINAL>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_HORA_FINAL.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<VALOR>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_VALOR.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<FORMA_PAGTO>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_FORMA_PAGTO.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<RECEITA>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_RECEITA.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<ENFERMEIROS>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_ENFERMEIROS.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<SEGURANCAS>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_SEGURANCAS.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<TESTEMUNHA1>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_TESTEMUNHA1.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<RG_TESTEMUNHA1>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_RG_TESTEMUNHA1.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<TESTEMUNHA2>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_TESTEMUNHA2.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<RG_TESTEMUNHA2>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_RG_TESTEMUNHA2.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<REALIZACAO>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DBEdit_REALIZACAO.Text ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;

//VALOR POR EXTENSO
doc.Content.Find.Execute( ´<VALOR_EXTENSO>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , Extenso(Valor) ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;
doc.Content.Find.Execute( ´<DATA_AGORA>´ ,EmptyParam , EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam , EmptyParam ,EmptyParam , EmptyParam , DateToStr(Date) ,wdreplaceall ,EmptyParam ,EmptyParam ,EmptyParam ,EmptyParam ) ;

//Salvar Documento
Doc.SaveAs(ExtractFilePath(Application.ExeName) + ´/documentos/´ + wDoc + ´_Ultimo_Salvo.doc´);
if Application.MessageBox(´Deseja Imprimir este Contrato ?´,´Confirmação para impressão !!!´,MB_ICONQUESTION+MB_YESNO)=MRYes then
Doc.PrintOut(false);


//Abre , visualiza o microsoft word
MSWord.Visible:=true;

//imprimir duas copias
//msWord.ActiveDocument.PrintOut(Copies := 2);

//sair do word
//MSWord.quit;


Responder
Você não consegue pois não está interagindo com o WORD... esta mandando ele abrir o arquivo MODELO... na realidade voce esta dizendo ´WINDOWS ABRA ESTE .DOT´ e ele abre o WORD... é só isto... Para fazer isto que voce quer fazer... OU crie um .DOC com base nesse .DOT e utilize desktop.open.... ou voce interage diretamente com o WORD utilizando OLE (o que com java é uma Missao quase impossivel)



Então Dyego, como eu faria esse doc baseado no dot Dr.?

Eu vi o exemplo do nosso colega Paulo mas acho que é complicadíssimo transportar esse código para Java.

Estou precisando muito de realizar esta operação, existem coisas que são complicadas em Java!

Desde já agradeço a todos!


Responder

14/09/2009

Dyego.carmo

Para fazer isto que voce deseja vai precisar de um codigo NATIVO , utilizando JNI (java native interface)

Java nao acessa nem ActiveX nem nada nativo... para que voce acesse algo do genero vai precisar escrever a rotina em uma DLL e acessar via java.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira