Página 1 de 1
Gerar Documento Word
Enviado: 10 Dez 2007 16:05
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
Enviado: 10 Dez 2007 16:34
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
Enviado: 10 Dez 2007 16:36
por Luciano Bonfim
em tempo:
#define FIM_LINHA chr(10)
#define FIM_PAGINA chr(12)
#define CRLF Chr(13) + Chr(10)
Enviado: 10 Dez 2007 20:20
por asimoes
Valeu Luciano,
Quanto a orientação, lasdscape ou portrait como seria?
:)Pos
Enviado: 10 Dez 2007 22:02
por Luciano Bonfim
ai vc me pegou.. näo sei...
se descobrir pota aqui que eu tb queria saber...
Enviado: 11 Dez 2007 00:36
por asimoes
Segue ai a dica,
oWord:Selection():PageSetup():Orientation():=0 //Portrait e 1 para LandScape
[]´s :)Pos
Enviado: 11 Dez 2007 00:41
por asimoes
Segue ai a dica,
oWord:Selection():PageSetup():Orientation():=0 //Portrait e 1 para LandScape
[]´s :)Pos
Enviado: 11 Dez 2007 00:48
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
Enviado: 11 Dez 2007 10:39
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
Enviado: 11 Dez 2007 10:53
por momente
Excelente dica e solução amigos,
Estava precisando disso!
Valeu!
Enviado: 11 Dez 2007 20:30
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