Como editar documentos/contratos no word com dados de dbf??

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

andrelucass
Usuário Nível 3
Usuário Nível 3
Mensagens: 145
Registrado em: 25 Fev 2005 10:40

Como editar documentos/contratos no word com dados de dbf??

Mensagem por andrelucass »

Prezados Senhores:

Gostaria que se possível, fossem postados, exemplos de como abrir um arquivo texto no Word ou Editor de Textos, com textos prontos já gravados em disco, Mesclados com informações advindas de dados informados nos gets do Clipper/Harbour (variáveis de exemplo: NOMECLI, CPF, ENDEREÇO, CIDADE, etc).

Abraços
André lucas Souza

-------------------------------------
Nota da Moderarção(Sygecom):
Titulo do Topico alterado para formatação minusculo.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Como editar documentos/contratos no word com dados de dbf??

Mensagem por sygecom »

Olá André,

Segue abaixo um exemplo:
Nesse exemplo vai ser procurado a CHAVES: [aEMP] e será subistituido por: Nome da empresa e será procurado tmb. por: [aENDEMP] e será subistituido por: Endereço da empresa

Qualquer duvida é só prender o grito.

Código: Selecionar todos

********************
Function BOLETO_WORD
********************
Local vPATH := curdrive()+':'+"\"+curdir()
Local aArray_CAMPOS := {}
//PRIVATE cPrinterName, cPrinterName_OLD := GetDefaultPrinter()

//New_PRINTSETUP( @cPrinterName )  // seleciona a impressora
//SETDEFAULTPRINTER(cPrinterName)  // define a impressora como padrão para o word imprimir direto

GravaLog("IMPRESSÃO DE BOLETO COM LAYOUT PERSONALIZADO")
IF FILE("res\boleto.doc")
   // MsgRun("Aguarde Gerando Documento para Impressão...")  // mensagem na tela

   AADD(aArray_CAMPOS,{"[aEMP]"    ,"Nome da empresa"} )
   AADD(aArray_CAMPOS,{"[aENDEMP]" ,"Endereço da empresa"} )

   Subistitui_Word( aArray_CAMPOS, vPATH+"\res\boleto.doc")
ELSE
   alert("O Sistema não achou o arquivos ( boleto.doc ) dentro da pasta \RES , Favor Revisar")
ENDIF
//SETDEFAULTPRINTER(cPrinterName_OLD)  // volta a impressora que era padrão
Return

*******************************************
Function Subistitui_Word( aCampos , cArqDoc)
*******************************************
local cDoc_Temp := GeraFile()+".doc" //
LOCAL oWord, oText, oDoc, oFind

IF File( cArqDoc )
   __copyfile( cArqDoc, (cDoc_Temp) )  // Salva um novo do original
   TRY
      oWord := GetActiveObject(  "Word.Application" )
   CATCH
      TRY
         oWord := CreateObject( "Word.Application" )
      CATCH
         alert("Não foi Possivel Achar o Word Instalado")
         RETURN
      END
   END

   oWord:Visible := .F. //PARA NÃO VISUALIZAR O DOCUMENTO
   oDoc := oWord:Documents:Open(cDoc_Temp)  //ABRE O WORD
   for x=1 to len( aCampos )
       oTexto := oDoc:Range()
       oFind  := oTexto:Get( "Find" )

       oFind:Set( "Text", aCampos[x,1] )
       oFind:Set( "Forward", .T. )
       oFind:Set( "Wrap", INT(1) )
       oFind:Set( "Format", .f.            )
       oFind:Set( "MatchCase", .f.         )
       oFind:Set( "MatchWholeWord", .f.    )
       oFind:Set( "MatchWildcards", .f.    )
       oFind:Set( "MatchSoundsLike", .f.   )
       oFind:Set( "MatchAllWordForms", .f. )

       oFind:Invoke( "Execute")

       DO WHILE oFind:Get( "Found" )    // Reemplaza todas las ocurrencias que coincidan

          oTexto:Set( "Text", aCampos[x,2] )
          oFind:Invoke( "Execute")
       Enddo
   next
   oWord:PrintOut()   //PARA IMPRIMIR DIRETO
   oWord:Invoke( "Quit",0)
*   oWord:QUIT()
else
   alert("O Sistema não achou o arquivo: ( " + cArqDoc + " ) dentro da pasta \RES , Favor Revisar")
endif
return nil

Function GERAFILE
Local cFILE := GETENV("temp")+ "\TEMP"+ ALLTRIM( STR( HB_RandomInt(99999) ))
RETURN(cFILE)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Re: Como editar documentos/contratos no word com dados de dbf??

Mensagem por billy1943 »

Um dos modos mais práticos de editar documentos/contratos no Word, utilizando arquivos de dados do Clipper, é gerando um arquivo em .RTF e depois encaminhá-lo para o WORD.

Eu utilizo essa fórmula para todo tipo de documento (boleto com código de barras, contratos, recibos) enfim todo tipo de relatório que o Clipper deixa a desejar, pela sua limitação de fontes, tamanhos, justificação, etc.

A única coisa a se estudar com afinco é como dominar o RTF, mas uma vez implementado acabam-se os problemas com documentos mais elaborados do que simples listagens tabulares.

O que eu poderia te indicar de início é buscar exemplos de geração de arquivos em .RTF, através do Clipper e mais nada.

Se alguém se interessar e não tiver a Bibliotecartf.doc, entrar em contato que eu a envio.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder