gerar arquivos em word usando harbour

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

Moderador: Moderadores

Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

gerar arquivos em word usando harbour

Mensagem 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
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

gerar arquivos em word usando harbour

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

gerar arquivos em word usando harbour

Mensagem por clodoaldomonteiro »

CRLF seria a quebra de linha.
Coloque isso no início do seu fonte principal ou no fonte .CH:

Código: Selecionar todos

#define CRLF  chr(13)+chr(10)
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

gerar arquivos em word usando harbour

Mensagem por cjp »

Entendido, obrigado.
Inacio de Carvalho Neto
sasquast
Usuário Nível 1
Usuário Nível 1
Mensagens: 29
Registrado em: 31 Jul 2019 16:47
Localização: Volta Redonda / RJ

gerar arquivos em word usando harbour

Mensagem por sasquast »

Hasse,

Não tenho nem palavras para agradecer a enorme ajuda.

Muito obrigado a você e aos demais camaradas.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

gerar arquivos em word usando harbour

Mensagem por Itamar M. Lins Jr. »

Ola!
No harbour 3.4 usamos.

Código: Selecionar todos

 hb_eol() 
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.
Saudações,
Itamar M. Lins Jr.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

gerar arquivos em word usando harbour

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

gerar arquivos em word usando harbour

Mensagem 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.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

gerar arquivos em word usando harbour

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

gerar arquivos em word usando harbour

Mensagem por oxent_jabah »

Bom Dia, Amigos!

Fiz umas alterações no fonte postado anteriormente e vejam o resultado, usando o MS-WORD direto!
Anexos
TstHb2Word.zip
(637.53 KiB) Baixado 155 vezes
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

gerar arquivos em word usando harbour

Mensagem 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 
Avatar do usuário
marcosLP
Usuário Nível 1
Usuário Nível 1
Mensagens: 47
Registrado em: 13 Nov 2020 10:24
Localização: guarpauava/pr

gerar arquivos em word usando harbour

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

gerar arquivos em word usando harbour

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

gerar arquivos em word usando harbour

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

gerar arquivos em word usando harbour

Mensagem 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.
Responder