Clipper On Line • Ver Tópico - gerar arquivos em word usando harbour

gerar arquivos em word usando harbour

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

Moderador: Moderadores

 

gerar arquivos em word usando harbour

Mensagempor Amparo » 05 Nov 2019 09:09

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:


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
Avatar de usuário

Amparo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 337
Data de registro: 20 Ago 2010 10:38
Cidade/Estado: caieiras / sao paulo
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

gerar arquivos em word usando harbour

Mensagempor cjp » 09 Nov 2019 02:06

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

gerar arquivos em word usando harbour

Mensagempor clodoaldomonteiro » 10 Nov 2019 09:10

CRLF seria a quebra de linha.
Coloque isso no início do seu fonte principal ou no fonte .CH:
#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
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

gerar arquivos em word usando harbour

Mensagempor cjp » 11 Nov 2019 08:53

Entendido, obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

gerar arquivos em word usando harbour

Mensagempor sasquast » 19 Nov 2019 15:37

Hasse,

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

Muito obrigado a você e aos demais camaradas.
sasquast
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 26
Data de registro: 31 Jul 2019 16:47
Cidade/Estado: Volta Redonda / RJ
Curtiu: 28 vezes
Mens.Curtidas: 0 vez

gerar arquivos em word usando harbour

Mensagempor Itamar M. Lins Jr. » 19 Nov 2019 17:30

Ola!
No harbour 3.4 usamos.
 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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

gerar arquivos em word usando harbour

Mensagempor cjp » 27 Mar 2020 20:49

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

gerar arquivos em word usando harbour

Mensagempor fladimir » 29 Mar 2020 00:52

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.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

gerar arquivos em word usando harbour

Mensagempor cjp » 21 Abr 2020 17:26

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
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

gerar arquivos em word usando harbour

Mensagempor oxent_jabah » 18 Set 2020 10:36

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 76 vezes
Avatar de usuário

oxent_jabah
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 26 Dez 2008 10:29
Cidade/Estado: Juazeiro do Norte-Ce-Brasil
Curtiu: 0 vez
Mens.Curtidas: 1 vez

gerar arquivos em word usando harbour

Mensagempor malcarli » 18 Set 2020 14:36

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
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:
      *** 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
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 181
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 81 vezes
Mens.Curtidas: 4 vezes

gerar arquivos em word usando harbour

Mensagempor marcosLP » 13 Nov 2020 10:56

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.
Avatar de usuário

marcosLP
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 35
Data de registro: 13 Nov 2020 10:24
Cidade/Estado: guarpauava/pr
Curtiu: 41 vezes
Mens.Curtidas: 4 vezes

gerar arquivos em word usando harbour

Mensagempor Kapiaba » 22 Abr 2023 14:20

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: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

gerar arquivos em word usando harbour

Mensagempor Kapiaba » 23 Abr 2023 10:04

Versão em FiveWin, caso alguém queira testar e ver se acha o erro:

https://forums.fivetechsupport.com/viewtopic.php?f=6&t=43084&p=259178&sid=49cf627237bfc9a8329574d91789d8e4#p259178

Regards, saludos.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

gerar arquivos em word usando harbour

Mensagempor Kapiaba » 23 Abr 2023 12:21

isto funciona perfeito com Harbour, com xHarbour Quebra. Mistérios... Kgada de quem? kkkkkkk

// 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.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro