Gerar relatorio para o EXCEL

Fórum sobre a linguagem CA-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

Re: Gerar relatorio para o EXCEL

Mensagem por asimoes »

Olá Ana,

Segue em anexo o seu pedido.
XLSFunc.zip
Funções para gerar um XLS
(61.7 KiB) Baixado 748 vezes
►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)
spereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 85
Registrado em: 19 Jul 2004 11:42
Localização: Porto - Portugal

Re: Gerar relatorio para o EXCEL

Mensagem por spereira »

Olá pessoal,

Gostaria de aproveitar o tópico para perguntar uma coisa relacionada com ele.

Eu gero uma tabela em .DBF pelo meu sistema e depois a renomeio para .xls para enviar ao cliente.
No meu Excel abre normalmente, mas no cliente não abre.
Eu sei que há alguma forma de configurar no Excel para que seja possível abrir este tipo de formato (dbf) mas não lembro como.
Alguém pode me ajudar?

Obrigado
Sérgio

Sérgio Pereira
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Re: Gerar relatorio para o EXCEL

Mensagem por Augusto »

Com o EXCEL já aberto clicar em:

ARQUIVO/ABRIR/Arquivos do Tipo

Alterar para: Arquivos do dBase (*.dbf)
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Gerar relatorio para o EXCEL

Mensagem por alxsts »

Olá!

O tópico https://pctoledo.org/forum/viewto ... f=1&t=9019 também é relacionado ao assunto. Tem um link para o ClipWks.
[]´s
Alexandre Santos (AlxSts)
heveraldo
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 16 Jun 2006 17:15

Re: Gerar relatorio para o EXCEL

Mensagem por heveraldo »

Galera,

Como proceder para inserir uma imagem (logomarca) na criação do relatório ?

Abraços,

Heveraldo
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Re: Gerar relatorio para o EXCEL

Mensagem por gilsonpaulo »

Esta maneira como faço foi com a ajuda daqui do forum:

Código: Selecionar todos

*----------------------------
*       GB44.PRG       -       Imprime Total da LIsta de Precos
*----------------------------

#define   nomeREL         "Lista.xls"

PRIVATE grant:=SPACE(2),sbant:=SPACE(4),cpag:=0,clin:=0,nrcop:=0,venda:=0,;
        bfgrp:=SPACE(40),bfsbg:=SPACE(40),bfitm:=SPACE(40),custo:=0,item:=0,;
        bfvlr:=0.00,bfvl1:=SPACE(9),bfvl2:=0.00,bfvl3:=SPACE(9),sep:=SPACE(1),;
        estoque:=0,scusto:=0,svenda:=0,pcusto:=0,pvenda:=0



SELECT 1
USE CADMER SHARED ALIAS MER

IF NETERR()
	Mensagem("Ha mais pessoas acessando o arquivo de precos")
	TONE(1000,2)
	INKEY(0)
	RETURN
ENDIF

SET INDEX TO NOMMER

SELECT MER
	SELECT MER
	SET FILTER TO SUBSTR(DESMER,1,1) <> "*" .AND. SUBSTR(DESMER,1,1) <> " "
	GO TOP
GO TOP

Mensagem("Aguarde, gerando " + nomeREL)

SET CONSOLE OFF
SET DEVICE TO PRINT
SET PRINTER TO (nomeREL)


?? CHR(18)


//Cabe()


DO WHILE .NOT. EOF()  .AND. INKEY() !=27

//        IF clin>=60
//                EJECT
//                Cabe()
//        ENDIF
//        item = 1
        item = item+1
        estoque = ANTMER+ENTMER-SAIMER
        custo = 0
        venda = 0
        pcusto = 0
        pvenda = 0

        IF estoque < 0
                estoque = 0
        endif

        IF MULTI < 1000
                pcusto = PRECST
                pvenda = PREMER
        ELSE
                pcusto = PRECST/MULTI
                pvenda = PREMER/MULTI
        ENDIF
        
        IF estoque < 0
                estoque = 0
        ENDIF

        bfitm=TRIM(DESMER)
	bfitm=bfitm+REPLICATE(".",(40-LEN(bfitm)))

vpcusto:=STRTRAN(LTRIM(STR(pcusto,14,2)),'.',',')
vpvenda:=STRTRAN(LTRIM(STR(pvenda,14,2)),'.',',')

vLista:=bfitm+chr(9)+vpcusto+chr(9)+vpvenda+chr(9)+LTRIM(STR(estoque,8,0))+chr(9)+LTRIM(STR(ICMFIS,2,0))+chr(9)+;
        "=B"+LTRIM(STR(item,4,0))+"*D"+LTRIM(STR(item,4,0))+chr(9)+;
        "=C"+LTRIM(STR(item,4,0))+"*D"+LTRIM(STR(item,4,0))

        @ clin,00 SAY vLista


//        @ clin,01 SAY bfitm
//        @ clin,42 SAY pcusto PICTURE "@E 999,999.99"
//        @ clin,54 SAY pvenda PICTURE "@E 999,999.99"
//        @ clin,66 SAY estoque PICTURE "@E 999999.999"
//        @ clin,77 SAY ICMFIS PICTURE "99"
        custo = estoque*pcusto
        venda = estoque*pvenda
        scusto = scusto + custo
        svenda = svenda + venda

	SKIP
        clin++
ENDDO
        @ clin,00 SAY "Total Preco Custo.:"
        @ clin,20 SAY chr(9)+"=soma(F1"+":F"+LTRIM(STR(item,4,0))+")"
        clin++
        @ clin,00 SAY "Total Preco Venda.:"
        @ clin,20 SAY chr(9)+"=soma(G1"+":G"+LTRIM(STR(item,4,0))+")"
        clin++
        @ clin,00 SAY "Total de Itens....:"
        @ clin,20 SAY chr(9)+LTRIM(STR(item,5,0))
EJECT

offPrinter()
SET RELATION TO
mp=1
SELECT 1
USE
SELECT 2
USE 
SELECT 3
USE
RETURN
//==========================================
STATIC PROCEDURE Cabe()
cpag=cpag+1
clin=1
@ clin,02 SAY firma
@ clin,58 SAY DTOC(DATE())
@ clin,72 SAY "Pg"
@ clin,75 SAY cpag PICTURE "9999"
clin=clin+1
@ clin,42 SAY "LISTA  DE  PRECOS"
clin=clin+1
@ clin,02 SAY REPLICATE("-",77)
clin=clin+1
@ clin,47 SAY "CUSTO"
@ clin,59 SAY "VENDA"
@ clin,67 SAY "ESTOQUE"
@ clin,75 SAY "ICMS" 
clin++
RETURN
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Gerar relatorio para o EXCEL

Mensagem por Pablo César »

heveraldo escreveu:Como proceder para inserir uma imagem (logomarca) na criação do relatório ?
Eu nunca fiz em Clipper, mesmo utilizando aquela biblioteca clipwks que gera uma planilha Excel na versão 4, não daria para inserir imagem e desconheço como fazer em Clipper. Mas acho Heveraldo que você vai conseguir a solução em [x]Harbour pois lá inclusive ja conseguiram reproduzir vários resultados favoráveis na geração de planilhas Excel, veja por exemplo: https://pctoledo.org/forum/viewto ... CEL#p58015
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Re: Gerar relatorio para o EXCEL

Mensagem por JoséQuintas »

Já usei muito script pra isso.
O Clipper gerando um arquivo VBS para automatizar o Excel.
E o próprio Excel preencher a planilha, formatar, etc., e salvar no final.

Depois usei ODBC, já que tem pra acessar qualquer base de dados, seja Access, Excel, DBF, MySql, etc.
Desta forma não depende de Excel instalado.

Faltou: também já usei o arquivo CVS, mas não é compatível com as novas versões, não sei porque.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Re: Gerar relatorio para o EXCEL

Mensagem por Pablo César »

O Clipper gerando um arquivo VBS para automatizar o Excel.
E o próprio Excel preencher a planilha, formatar, etc., e salvar no final.
Ahhh claro ! Legal, não tinha pensado nisso ! José, você tem algum pequeno exemplo de cada, só para dar uma espiadinha ??
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerar relatorio para o EXCEL

Mensagem por JoséQuintas »

Ao instalar Excel, o objecto "Excel" fica disponível no Windows.
O script só faz uso dele e de seus métodos.
A sintaxe é totalmente do aplicativo Excel, do objeto que o Excel libera.
Dá pra pegar exemplos do xHarbour que utilizam CreateObject() e adaptar pra script, pra usar no clipper.
Mesmo usando no xHarbour, a sintaxe seria a mesma, exceto a mudança de "." por ":"

Código: Selecionar todos

Dim objExcel
objExcel = wscript.CreateObject("Excel.Application")
objExcel.Visible = True ' Para ver o Excel trabalhando na planilha
ObjExcel.Workbooks.Add
ObjExcel.Workbooks(1).Activate
ObjExcel.Workbooks(1).Worksheets.Add
ObjExcel.Workbooks(1).Worksheets(1).Select
ObjExcel.Cells(3,1).Value = "teste"
ObjExcel.Cells(4,1).Value = 5
ObjExcel.Cells(5,1).Value = 10
ObjExcel.Cells(6,1).Value = "=@SUM(C4:C5)"
ObjExcel.Range("A1:F5").AutoFormat True
ObjExcel.Workbooks(1).SaveAs "teste"
ObjExcel.Quit
Set ObjExcel = Nothing
Msgbox("Geração Concluída")
Nota de Moderação:
por Pablo César: Mensagem reditada para correção do código fontes, a pedido do autor.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Gerar relatorio para o EXCEL

Mensagem por rochinha »

Amiguinhos,

Para completar o post anterior.

Para imprimir basta acrescentar uma linha:

Código: Selecionar todos

ObjExcel.Workbooks(1).SaveAs "teste"
ObjExcel.ActiveSheet.PrintOut 
ObjExcel.Quit
Set ObjExcel = Nothing
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Re: Gerar relatorio para o EXCEL

Mensagem por Hasse »

Boa tarde colegas.

O código apresentado pelo nosso colega Quintas cabe como uma luva na minha necessidade.

Tenho uma planilha em Excel, algo parecido com uma Nota Promissória, que deve ser preenchida com valores e depois impressa. Esta planilha tem algumas macros que são usadas na navegação, formatação e impressão da página final.

O banco de dados em DBF existe, e poderia ser passado automaticamente para a planilha Excel.

Se eu pudesse ler o arquivo XLS como um objeto, gravar valores neste objeto e abrir no Excel como proposto pelo Quintas, seria "A Solução".

Mas não consigo fazê-la funcionar. Já substitui os "pontos" por ":" e nada. Só dá erro de sintaxe, "Incomplete statement or unbalanced delimiters", e "WITH Message [T] with no WITH OBJECT in sight".

Alguém pode me ajudar, dando algumas dicas, de como se transporta aquele exemplo para o xHarbour ?
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Gerar relatorio para o EXCEL

Mensagem por rochinha »

Amiguinho,

Faça o teste com o seguinte .VBS que usa um arquivo .TXT contendo dados:

Código: Selecionar todos

Nome, Idade
Maligno, 40
Pablo, 48
Quintas, 49
Rochinha, 120
Inicie as variaveis usadas:

Código: Selecionar todos

Option Explicit
Const adCmdTable = &H0002

Dim dsn, file
Dim rs, con
Dim Title, txt
Criando o DSN para acesso aos dados:

Código: Selecionar todos

dsn = "MyText"
file = GetPath() + "Data\Text.txt"

' Titulando
Title = "ADO - Exemplo de Acesso"
txt = "Conectando a: " & file & " via " & "ODBC." & vbCRLF
Criando o objeto de conecção:

Código: Selecionar todos

Set con = WScript.CreateObject("ADODB.Connection")
con.Open dsn         ' DSN -> Defina antes no Painel de Controle com acesso a texto
Preparação da coneçcção
txt = txt & con & vbCRLF & vbCRLF
[/code]

Criando a conecção e capturando os dados

Código: Selecionar todos

Set rs = WScript.CreateObject("ADODB.Recordset")
rs.Open file, Con, , , adCmdTable

txt = txt & "Nome" & vbTab & "Idade" & vbCRLF
Neste momento, lê-se os dados

Código: Selecionar todos

Do While Not rs.EOF    ' all entries
   txt = txt & rs("Nome") & vbTab & rs("Idade") & vbCRLF
   rs.MoveNext           ' next record
Loop 
Apresenta-se os dados e fecha-se a conecção:

Código: Selecionar todos

MsgBox txt, vbOkonly , Title
con.Close
WScript.Quit()
Funções extras:

Código: Selecionar todos

'#### Funcoes ####
Function GetPath
' Retrieve path to the script file
 DIM path
 path = WScript.ScriptFullName  ' script file name
 GetPath = Left(path, InstrRev(path, "\"))

End Function      
' End
Junte tudo e bata, quer dizer, salve nume arquivo com extensão .VBS e execute para testes. Use o conteúdo para acrescentar o recurso em seu Excel.VBS.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Re: Gerar relatorio para o EXCEL

Mensagem por Hasse »

Valeu Mano Rochinha.

Grande dica, e maior a solução...

Pô, eu nem sabia que isto era possível...

Obrigado.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Gerar relatorio para o EXCEL

Mensagem por rochinha »

Amiguinhos,

Ainda é possivel se passar parâmetros para o script via linha de comando.

Primeiro é necessário DIMensionar as variaveis usadas:

Código: Selecionar todos

Dim Dado1
Dim Dado2
Devemos informar ao script que o mesmo irá gerenciar argumentos:

Código: Selecionar todos

set args = wscript.Arguments
Podemos criticar os parâmetros para que nosso script funcione a contento. Neste exemplo eu defino que meu script irá manipular 2 parâmetros:

Código: Selecionar todos

If args.count <> 2 Then
   WScript.echo("Uso: MeuScript <Arg1> <Arg2>")
   Wscript.quit(1)
End If
Neste momento passo meus parâmetros para variáveis internas e posso manipular como quizer:

Código: Selecionar todos

Dado1 = args(0)
Dado2 = args(1)
ou:

Código: Selecionar todos

ObjExcel.Cells(3,1).Value = args(0)
ObjExcel.Cells(4,1).Value = args(1)
Ai só a imaginação, pode definir até onde se vai.

O Clipper, por sua impossibilidades de manipular o S.O. de forma direta, deve sempre usar uma ponte para integração, o que não o torna menos profissional.

Existem os que dizem que isso não seria profissional, colocando a culpa na aplicação.

O bom profissional, irá sim, sacar de meios externos e periféricos para completar o seu intento, ou sua aplicação.

Então mãos a obra.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder