Página 3 de 4
gerar arquivos em word usando harbour
Enviado: 05 Nov 2019 09:09
por Amparo
Ola amigos
bom dia a todos
em meu computador também não existe o arquivo winpar.ch
tente fazer o seguinte( um exemplo bem simples possível)
crie um arquivo rtf padrao por exemplo padrao.rtf neste arquivo todo conteudo que vc queira mudar voce coloca +- assim CLINOME, CLINFE, CLIEMISSAOe por ai vai.
no seu prg crie uma estrutura de tabela desta forma:
Código: Selecionar todos
ARQRTF := "C:\TESTE\PADRAO.RTF"
TESTE := "C:\TESTE\TABELA.DBF"
CAMPOS := {{"DADOS","C",500,00}}
c_Contrato := ""
DBCREATE( TESTE, CAMPOS )
USE ( TESTE ) ALIASs TESTE NEW EXCLUSIVE
SELECT("TESTE")
APPEND FROM (ARQRTF) SDF
TESTE->( DBGOTOP() )
DO WHILE !TESTE->( EOF() )
*aqui vc vai mudando suas variáveis de acordo com sua necessidade,
IF "CLINOME" $ ARQDBF->DADOS
CSTR := STRTRAN( ARQDBF->DADOS, "CLINOME", c_NomCli )
ELSEIF "CLINFE" $ ARQDBF->DADOS
CSTR := STRTRAN( ARQDBF->DADOS, "CLINFE", c_NumNfe )
ELSEIF "CLIEMISSAO" $ ARQDBF->DADOS
CSTR := STRTRAN( ARQDBF->DADOS, "CLIEMISSAO", c_DatEmi )
...
ELSE
CSTR := ARQDBF->DADOS
ENDIF
c_Contrato += ALLTRIM( CSTR ) + CRLF
TESTE->( DBSKIP() )
ENDDO
MEMOWRIT( "c:\test\novortf.rtf", c_Contrato )
*depois é so mandar abrir e imprimir no word
IMPRIME_WORD( "c:\test\novortf.rtf")
*---------------------------------------------------------------------------------
procedure IMPRIME_WORD( CARQ )
Local oWord
oWord:=TOleAuto():New( "Word.Application" )
oWord:Documents:Open( CARQ )
oWord:WindowState := 1
oWord:Visible := .t.
oWord:PrintOut() //PARA IMPRIMIR DIRETO
Return nil
não precisa declarar este winpar.ch
abraços
gerar arquivos em word usando harbour
Enviado: 09 Nov 2019 02:06
por cjp
Funcionou. Muito obrigado.
Duas dúvidas: 1) o que é CRLF? Seria pra colocar parágrafo? Aqui não funcionou, tive que retirar; 2) no final do texto ficou um "quadradinho"; é normal isso?
gerar arquivos em word usando harbour
Enviado: 10 Nov 2019 09:10
por clodoaldomonteiro
CRLF seria a quebra de linha.
Coloque isso no início do seu fonte principal ou no fonte .CH:
gerar arquivos em word usando harbour
Enviado: 11 Nov 2019 08:53
por cjp
Entendido, obrigado.
gerar arquivos em word usando harbour
Enviado: 19 Nov 2019 15:37
por sasquast
Hasse,
Não tenho nem palavras para agradecer a enorme ajuda.
Muito obrigado a você e aos demais camaradas.
gerar arquivos em word usando harbour
Enviado: 19 Nov 2019 17:30
por Itamar M. Lins Jr.
Ola!
No harbour 3.4 usamos.
Pq ? simples no Windows é CRLF = Carriage Return + Line feed->chr(13)+chr(10). No Linux é apenas Line Feed. ->chr(10).A função hb_eol(), detecta o OS é aplica corretamente o código. Isso dá uma certa confusão nos textos e documentos por exemplo.
Saudações,
Itamar M. Lins Jr.
gerar arquivos em word usando harbour
Enviado: 27 Mar 2020 20:49
por cjp
Pessoal, me surgiu uma nova necessidade aqui, vejam se vocês podem me ajudar, por favor.
A partir de um arquivo em pdf, usando harbour, é possível gerar um arquivo Word? Basicamente, quero apenas criar uma cópia do arquivo pdf para um arquivo word, usando harbour. É possível?
gerar arquivos em word usando harbour
Enviado: 29 Mar 2020 00:52
por fladimir
Em harbour nativo não sei, talvez com algum programa externo sendo chamado consiga.
Caso não consiga me chame em PVT q talvez consiga te ajudar.
gerar arquivos em word usando harbour
Enviado: 21 Abr 2020 17:26
por cjp
Pessoal, gostaria de saber se é possível criar o arquivo word com uma imagem, que é como um cabeçalho em todos os arquivos que vou criar. Não é uma imagem muito grande.
Tenho essa imagem em um arquivo do Word já salva. Só preciso colocar essa imagem em todos os arquivos que vou gerar a partir do meu sistema em Harbour.
É possível?
gerar arquivos em word usando harbour
Enviado: 18 Set 2020 10:36
por oxent_jabah
Bom Dia, Amigos!
Fiz umas alterações no fonte postado anteriormente e vejam o resultado, usando o MS-WORD direto!
gerar arquivos em word usando harbour
Enviado: 18 Set 2020 14:36
por malcarli
bom exemplo amigo. apanhei bastante do word para poder gerar documentos.
Agregando mais conhecimento ao seu exemplo pode-se usar ao invés de:
__text := win_OEMToANSI( "PD 9999999.DOC" )
oWord:Selection:TypeText( __text )
substituir por:
oWord:Selection:TypeText(hb_AnsiToOem( "PD 9999999.DOC"))
na minha opinião acho que fica mais claro o entendimento.
mais alguns comandos que uso:
oWord:Selection:EndKey(6) // encerra página atual
oWord:Selection:InsertBreak(1) // inicia nova página
e uso sem as constantes colocando direto o valor dos comandos, igual a função abaixo
Código: Selecionar todos
Procedure fTitulo_Alinha(nAlinha, oWord, cTitulo)
oWord:Selection:Font:Bold:= .T. // negrito
oWord:Selection:Paragraphs:Alignment:= nAlinha // 0 = alinhado a esquerda e 1 alinhado ao centro
oWord:Selection:Font:Size:= 12 // tamanho
oWord:Selection:TypeText(hb_AnsiToOem(cTitulo) + hb_OsNewLine() + hb_OsNewLine())
oWord:Selection:Font:Bold:= .F. // desabilita negrito
oWord:Selection:Font:Size:= 11 // tamanho
oWord:Selection:Paragraphs:Alignment:= 3 // alinhamento justificado
Return (Nil)
Para inserir imagem no cabeçalho faço assim:
Código: Selecionar todos
*** Cabeçalho
oWord:ActiveDocument:ActiveWindow:Activepane:View:SeekView = 9
oWord:Selection:Font:Name = "Times New Roman" // fonte
oWord:Selection:Font:Size = 14 // tamanho
oWord:Selection:Font:Bold = .T. // negrito
oWord:Selection:Paragraphs:Alignment = 1 // alinhado ao centro
oTable := oTexto:Tables:Add(oTexto:Range, 1, 2) // Cria uma célula com 2 colunas
oTable:Columns:Item(1):Width = 50 // Largura da primeira célula
oTable:Columns:Item(2):Width = If(nOrientacao == 0, 450, 700) // Largura da segunda célula
oTable:Cell(1,1):Range:ParagraphFormat:Alignment = 1 // alinhado ao centro
If Hb_FileExists(DISKNAME() + ':' + PATHIMAGENS + [LOGO.BMP])
oTable:Cell(1,1):Range:InlineShapes:AddPicture(DISKNAME() + ':' + PATHIMAGENS + [LOGO.BMP]) // Insere a imagem na primeira célula
Endif
oTable:Cell(1,2):Range:ParagraphFormat:Alignment = 1 // alinhado ao centro
oTable:Cell(1,2):Range:Text = AllTrim(hb_AnsiToOem(cEmpresa)) + hb_OsNewLine() + ; // 1º texto
AllTrim(hb_AnsiToOem(cEndereco_p)) // 2º texto
gerar arquivos em word usando harbour
Enviado: 13 Nov 2020 10:56
por marcosLP
Eu faço assim:
abro um arquivo vazio no word e vou formatando cfe. o cliente precisa, e depois uso o maladireta do proprio word para inserir campos de dados dentro da formatação que necessito e tá dando certo(tenho um sistema médico que precisa de laudos, exames, receitas...) e sai tudo como é pra ser, com letras em negrito, grids, tabelas, e tudo mais.
Dá um trabalho ma suma vez que vc cria o modelo depois é só atualizar dentro do proprio word.
gerar arquivos em word usando harbour
Enviado: 22 Abr 2023 14:20
por Kapiaba
boa tarde, testando o exemplo do oxent_jabah, me sai esta mensagem no .doc:
a entrada do auto texto não foi definida
em VB achei isto:
VB
NormalTemplate.AutoTextEntries("cName").Value = _
"The Johnson Company"
O exemplo a seguir exibe o nome e o valor da primeira entrada de AutoTexto do modelo anexado ao documento ativo.
VB
Set myTemplate = ActiveDocument.AttachedTemplate
MsgBox "Name = " & myTemplate.AutoTextEntries(1).Name & vbCr _
& "Value " & myTemplate.AutoTextEntries(1).Value
Como defino Autotexto no Harbour/xHarbour no Word?
Desde já, obrigado.
Regards, saludos.
gerar arquivos em word usando harbour
Enviado: 23 Abr 2023 10:04
por Kapiaba
Versão em FiveWin, caso alguém queira testar e ver se acha o erro:
https://forums.fivetechsupport.com/view ... e4#p259178
Regards, saludos.
gerar arquivos em word usando harbour
Enviado: 23 Abr 2023 12:21
por Kapiaba
isto funciona perfeito com Harbour, com xHarbour Quebra. Mistérios... Kgada de quem? kkkkkkk
Código: Selecionar todos
// C:\FWH..\SAMPLES\WORDCENT.PRG
#Include "FiveWin.ch"
FUNCTION Main()
LOCAL oWord
// Convert 2.5 centimeters to points
LOCAL nPts
oWord := WinWordObj():New()
nPts := oWord:CentimetersToPoints( 2.5 )
// Display the result
MsgInfo("2.5 centimeters = " + Str(nPts) + " points")
// Quit Word
oWord:Quit()
RETURN NIL
/*
// Create a Word application object
// LOCAL oWord := WinWordObj():New() // HARBOUR FUNCIONA.
*/
// FIN / END
Regards, saludos.