Gerar Documento Word

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

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Gerar Documento Word

Mensagem por asimoes »

Pessoal,

Alguém tem alguma rotina para gerar um documento word com as formações de fonte, tamanho de página e orientação.

:)Pos []´s
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

Código: Selecionar todos


PROCEDURE geraWord( cARQ )
local x,atu:=0,pos:=0,arq,valbuf,buffer,bytes,bloco,ch,linhaImpressao
LOCAL oWord, oText
PRIVATE oDlgHabla:=NIL
TRY
   oWord := GetActiveObject( "Word.Application" )
CATCH
   TRY
      oWord := CreateObject( "Word.Application" )
   CATCH
      avi_rep("Não foi Possivel Achar o Word Instalado")
      IF oDlgHabla#NIL
        oDlgHabla:CLOSE()
      ENDIF
      RETURN
   END
END

oWord:Documents:Add()
oText := oWord:Selection()
oText:Font:Name := "Lucida Console"
oText:Font:Size := 8
oText:Font:Bold := .F.

valbuf = 11000
arq=FOPEN(cArq,0)
do while .t.
   buffer=SPACE(valbuf)
   FSEEK(arq,atu,0)
   bytes=FREAD(arq,@buffer,valbuf)
   pos=AT(CHR(12),buffer)
   if bytes=0 .OR. pos=0
      exit
   endif
   bloco=substr(buffer,1,pos)
   linhaImpressao=""
   for x=1 to len(bloco)
      ch=substr(bloco,x,1)
      do case
      // para o word fica mais rápido mandar de pagina em pagina em vez de linha em linha
      //case ch = FIM_LINHA
         //oText:Text += HB_OemToAnsi(strtran(linhaImpressao,chr(13),"")) + CRLF
         //linhaImpressao=""
      case ch = FIM_PAGINA
         oText:Text += HB_OemToAnsi(strtran(linhaImpressao,chr(13),"")) + chr(10)+chr(12)
         linhaImpressao=""
      otherwise
         linhaImpressao+=ch
      endcase
   next
   atu=atu+pos
enddo
oWord:Visible := .T.
oWord:WindowState := 1
IF oDlgHabla # NIL
   oDlgHabla:CLOSE()
ENDIF
RETURN

Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

em tempo:

#define FIM_LINHA chr(10)
#define FIM_PAGINA chr(12)
#define CRLF Chr(13) + Chr(10)
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Valeu Luciano,

Quanto a orientação, lasdscape ou portrait como seria?

:)Pos
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

ai vc me pegou.. näo sei...

se descobrir pota aqui que eu tb queria saber...
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Segue ai a dica,

oWord:Selection():PageSetup():Orientation():=0 //Portrait e 1 para LandScape


[]´s :)Pos
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Segue ai a dica,

oWord:Selection():PageSetup():Orientation():=0 //Portrait e 1 para LandScape


[]´s :)Pos
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Mais uma dica : as margens:

oText := oWord:Selection()

oText:PageSetup():Orientation():=2 //LandScape

oText:PageSetup():TopMargin():=1
oText:PageSetup():BottomMargin():=1
oText:PageSetup():LeftMargin():=1
oText:PageSetup():RightMargin():=1
:)Pos
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

Amigo,

Era exatamente isso que eu tava precisando, landscape e as margens... esse que é o objetivo do compartilhamento do conhecimento, eu mostro meu código pra vc e vc melhora e devolve e assim caminha a humanidade... rsrsrs

Muito Obrigado
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

Mensagem por momente »

Excelente dica e solução amigos,

Estava precisando disso!

Valeu!
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Amigos mais uma dica:

Definir o papel: A4 ou Carta

* A4
* LandScape
* Largura: 841.95
* Altura : 595.35
* Portrait
* Largura: 595.35
* Altura : 841.95

* Carta
* LandScape
* Largura: 792.1
* Altura : 612.1
* Portrait
* Largura: 612.1
* Altura : 792.1

oText:PageSetup():PageWidth:=841.95
oText:PageSetup():PageHeight:=595.35

:)Pos
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder