gerar arquivos em word usando harbour
Enviado: 16 Mai 2013 18:00
ola amigos
preciso da ajuda dos colegas, em meu sistema tenho que gerar arquivo de contrato de comodato, preciso gerar este arquivo no WORD, baixei um exemplo neste forum, montei o arquivo em TXT e depois executo o WORD para abrilo, o arquivo esta sendo aberto no WORD so que sem nenhuma formataçao, gostaria que algum colega pudesse disponibilizar algum exemplo de como poço gerar o arquivo, mas configurando a fonte, a margem esquerda a margem direita a altura do formulario e se é possivel criar um cabeçalho anexando uma figura. tenho algumas linha que vou utilizar fonte do tamanho 6 outras 10
isso tudo é possivel ou é piraçao minha?
segue o exemplo que peguei no forum
tinha pego este outro so que na hora de compilar deu erro nas funcoes abaixo, acho que faltou declarar alguma lib so nao sei qual.
estou usando o Harbour 3.0.0 (Rev. 16951), tentei compilar com o Harbour 3.2.0dev (r1304291617) e tambem deu erro
Error: Unresolved external '_HB_FUN_FT_FUSE' referenced from C:\FONTES\HARBOUR\SIGECOM\.HBMK\WIN\BCC\PRINTSERV.OBJ
Error: Unresolved external '_HB_FUN_FT_FEOF' referenced from C:\FONTES\HARBOUR\SIGECOM\.HBMK\WIN\BCC\PRINTSERV.OBJ
Error: Unresolved external '_HB_FUN_FT_FREADLN' referenced from C:\FONTES\HARBOUR\SIGECOM\.HBMK\WIN\BCC\PRINTSERV.OBJ
Error: Unresolved external '_HB_FUN_FT_FSKIP' referenced from C:\FONTES\HARBOUR\SIGECOM\.HBMK\WIN\BCC\PRINTSERV.OBJ
preciso da ajuda dos colegas, em meu sistema tenho que gerar arquivo de contrato de comodato, preciso gerar este arquivo no WORD, baixei um exemplo neste forum, montei o arquivo em TXT e depois executo o WORD para abrilo, o arquivo esta sendo aberto no WORD so que sem nenhuma formataçao, gostaria que algum colega pudesse disponibilizar algum exemplo de como poço gerar o arquivo, mas configurando a fonte, a margem esquerda a margem direita a altura do formulario e se é possivel criar um cabeçalho anexando uma figura. tenho algumas linha que vou utilizar fonte do tamanho 6 outras 10
isso tudo é possivel ou é piraçao minha?
segue o exemplo que peguei no forum
Function Abre_word(CPASTA, CARQ)
Local oWord
Local oFILE
Local ArqDoc
oFILE := CPASTA + cARQ
cARQ := CPASTA + cARQ + ".TXT"
ArqDoc := oFILE + ".doc"
Copy File (cARQ) TO (oFILE)
RenameFile( oFILE, ArqDoc )
oWord:=TOleAuto():New( "Word.Application" )
oWord:Documents:Open( ArqDoc )
oWord:WindowState := 1
oWord:Visible := .t.
Return nil
tinha pego este outro so que na hora de compilar deu erro nas funcoes abaixo, acho que faltou declarar alguma lib so nao sei qual.
estou usando o Harbour 3.0.0 (Rev. 16951), tentei compilar com o Harbour 3.2.0dev (r1304291617) e tambem deu erro
Error: Unresolved external '_HB_FUN_FT_FUSE' referenced from C:\FONTES\HARBOUR\SIGECOM\.HBMK\WIN\BCC\PRINTSERV.OBJ
Error: Unresolved external '_HB_FUN_FT_FEOF' referenced from C:\FONTES\HARBOUR\SIGECOM\.HBMK\WIN\BCC\PRINTSERV.OBJ
Error: Unresolved external '_HB_FUN_FT_FREADLN' referenced from C:\FONTES\HARBOUR\SIGECOM\.HBMK\WIN\BCC\PRINTSERV.OBJ
Error: Unresolved external '_HB_FUN_FT_FSKIP' referenced from C:\FONTES\HARBOUR\SIGECOM\.HBMK\WIN\BCC\PRINTSERV.OBJ
FUNCTION Gera_WORD(CPASTA, CARQ,CARQDOC)
LOCAL lWord:=.T.
IF ( oWord := Win_oleCreateObject( "Word.Application" ) ) = Nil
ALERT( "ATENÇÃO! Word não está instalado nesta máquina. Não será possível gerar o documento.")
lWord:=.F.
ENDIF
IF lWord
oDoc := oWord:Documents:Add()
oText := oWord:Selection()
* TRY
oDoc:SaveAs( CPASTA + CARQDOC)
* CATCH
* ALERT( "ATENÇÃO! o documento "+ CARQDOC +" está aberto, feche-o antes da impressão.")
* hJanela:=HWG_FindWindow(0 ,cNomeArq+" - Microsoft Word")
* hwg_BringWindowToTop( hJanela )
* ShowWindow( hJanela, SW_MAXIMIZE )
* RETURN .F.
* END
oWord:Visible := .F.
oText:PageSetup():Orientation:=0 // 0=Portrait, 1=Landscape
oText:PageSetup():TopMargin:=30
oText:PageSetup():BottomMargin:=10
oText:PageSetup():LeftMargin:=30
oText:PageSetup():RightMargin:=3
oText:PageSetup():PageWidth:=595.35
oText:PageSetup():PageHeight:=841.95
oText:Font:Name := "Courier New"
oText:Font:Size := 11
oText:Font:Bold := .F.
FT_FUSE( CPASTA + CARQ )
DO WHILE !FT_FEOF()
cLinha :=FT_FREADLN()
lEject :=(Chr(12) $ cLinha) // Procura caracter EJECT
lEspecial:=(Chr(27)+"P" $ cLinha)
IF !lEspecial
lEspecial:=(Chr(27)+"P"+Chr(15) $ cLinha)
ENDIF
* Elimina as formatações ou códigos de impressão
cLinha:=StrTran(cLinha,Chr(12)) // Elimina caracter EJECT
cLinha:=StrTran(cLinha,Chr(13))
cLinha:=StrTran(cLinha,Chr(27)+"P"+Chr(15))
cLinha:=StrTran(cLinha,Chr(12),Chr(13)+Chr(13))
cLinha:=StrTran(cLinha,Chr(27)+"P")
IF lEspecial
FT_FSKIP()
LOOP
ENDIF
oText:TypeText(cLinha+ hb_eol())
FT_FSKIP()
IF lEject .AND. !FT_FEOF()
oText:InsertBreak(1) //Gera quebra de página no word.
ENDIF
ENDDO
FT_FUSE()
oWord:Visible := .T.
oWord:WindowState := 1
oDoc:Save()
nLinhaWord:=1
nPaginaWord:=1
oWord:Selection():GoTo(nLinhaWord,,nPaginaWord) //Posiciona na primeira linha da primeira página
ENDIF
RETURN lWord