Re: Gerar relatorio para o EXCEL
Enviado: 13 Mai 2009 11:54
Olá Ana,
Segue em anexo o seu pedido.
Segue em anexo o seu pedido.
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
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#p58015heveraldo escreveu:Como proceder para inserir uma imagem (logomarca) na criação do relatório ?
Ahhh claro ! Legal, não tinha pensado nisso ! José, você tem algum pequeno exemplo de cada, só para dar uma espiadinha ??O Clipper gerando um arquivo VBS para automatizar o Excel.
E o próprio Excel preencher a planilha, formatar, etc., e salvar no final.
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")Código: Selecionar todos
ObjExcel.Workbooks(1).SaveAs "teste"
ObjExcel.ActiveSheet.PrintOut
ObjExcel.Quit
Set ObjExcel = Nothing
Código: Selecionar todos
Nome, Idade
Maligno, 40
Pablo, 48
Quintas, 49
Rochinha, 120
Código: Selecionar todos
Option Explicit
Const adCmdTable = &H0002
Dim dsn, file
Dim rs, con
Dim Title, txt
Código: Selecionar todos
dsn = "MyText"
file = GetPath() + "Data\Text.txt"
' Titulando
Title = "ADO - Exemplo de Acesso"
txt = "Conectando a: " & file & " via " & "ODBC." & vbCRLF
Código: Selecionar todos
Set con = WScript.CreateObject("ADODB.Connection")
con.Open dsn ' DSN -> Defina antes no Painel de Controle com acesso a texto
Código: Selecionar todos
Set rs = WScript.CreateObject("ADODB.Recordset")
rs.Open file, Con, , , adCmdTable
txt = txt & "Nome" & vbTab & "Idade" & vbCRLF
Código: Selecionar todos
Do While Not rs.EOF ' all entries
txt = txt & rs("Nome") & vbTab & rs("Idade") & vbCRLF
rs.MoveNext ' next record
Loop
Código: Selecionar todos
MsgBox txt, vbOkonly , Title
con.Close
WScript.Quit()
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
Código: Selecionar todos
Dim Dado1
Dim Dado2
Código: Selecionar todos
set args = wscript.Arguments
Código: Selecionar todos
If args.count <> 2 Then
WScript.echo("Uso: MeuScript <Arg1> <Arg2>")
Wscript.quit(1)
End If
Código: Selecionar todos
Dado1 = args(0)
Dado2 = args(1)
Código: Selecionar todos
ObjExcel.Cells(3,1).Value = args(0)
ObjExcel.Cells(4,1).Value = args(1)