In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

TFileXls

Foro público de Xailer en español
Responder
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

TFileXls

Mensaje por pacoelche »

Hola:
He visto en las new una libreria (filexls) para pasar datos a una hoja excel, pero no he localizado como utilizarla.
Si alguien puede decirme como funciona y si me puede enviar un ejemplo, pues mejor que mejor.
Muchí­simas gracias por vuestra colaboración.
Paco Martí­nez
Elche
--
Cassiano de Oliveira
Mensajes: 475
Registrado: Mar Jul 24, 2012 10:21 pm

TFileXls

Mensaje por Cassiano de Oliveira »

Miras se le ayuda
************************************************************ ********************
procedure RelExcel(dt1, dt2, cAlias, bCond)
************************************************************ *******************
LOCAL pag:=0, cl:=0, nTot:=0, lin:=0, tot_ger:=0, cCabec:=""
LOCAL dData := CTOD(" / / "), aProduto := {}
LOCAL cTela := Savescreen(s_geral)
LOCAL nPos := 0
Local cPara

LOCAL getlist:={}, cTitulo1:="", cCliente:=""
LOCAL cArq :='', nLidos:=0
LOCAL oExcel, oSheet, cIntervalo, i, xTotalVend, xTotalCust, xTotalEstq, nLinPlan

SETCOLOR(vcn)
Produto->( ORDSETFOCUS('produto2') )

INDEX ON DTOS(DATA) + PEDIDO + PRCODI TO iTmpCotAgrp FOR (cAlias)->Data >= dt1 .AND. (cAlias)->data <= dt2 // .AND. (cAlias)->cancelado!='S'
aArq:={{"PRCODI", "C", 06, 0},;
{"PRDESC", "C", 40, 0},;
{"PRQTDE", "N", 10, 3},;
{"VL_TOT", "N", 12, 3},;
{"ESTQATUAL", "N", 12, 3}}
DBCREATE((arq_temp), aArq)
Open_file(arq_temp,"TMP_ITENS","ITENS DE VENDA AGRUPADOS",.T.)
INDEX ON Prcodi TO (arq_temp)

WHILE COTACAO->(!EOF())
TMP_ITENS->( AdiReg(0) )
TMP_ITENS->Prcodi := (cAlias)->PrCodi
TMP_ITENS->Prdesc := (cAlias)->descricao
TMP_ITENS->Prqtde := (cAlias)->qtde
TMP_ITENS->VL_TOT := (cAlias)->vl_total
TMP_ITENS->ESTQATUAL := Produto->PrEstq
(cAlias)->( DBSKIP() )
END

PG := 1
lin := 1
ntotQtd := 0
nTotValor := 0

INDEX ON PRDESC TO (arq_temp)
//---------------------------------
IF (oExcel := Cria_OLE("Excel.Application", "Erro! O Excel n„o esta Ativado ou N„o instalada nesse Computador", ..T.) ) == NIL
RETURN
ENDIF

oExcel:WorkBooks:Add()
oSheet := oExcel:ActiveSheet
oSheet:Name := 'An lise de Or‡amentos' //cTitulo1 + ' Per¡odo do Relat¢rio:' + Dt2Dig(dt1) + ' a ' + Dt2Dig(dt2)
oSheet:Cells( 1, 1 ):Value := "Codigo"
oSheet:Cells( 1, 2 ):Value := "Descricao"
oSheet:Cells( 1, 3 ):Value := "Qtde Orcamentos"
oSheet:Cells( 1, 4 ):Value := "Estq Atual"
oSheet:Cells( 1, 5 ):Value := "Vlr. Medio"
oSheet:Cells( 1, 6 ):Value := "Vlr. Total"
FOR i=1 to 6
oSheet:Cells( 1, i ):Font:Bold := .T.
oSheet:Cells( 1, i ):Font:ColorIndex := 2 //-- Cor da letra
oSheet:Cells( 1, i ):Interior:ColorIndex := 11 //-- Cor de Fundo
oSheet:Cells( 1, i ):HorizontalAlignment := -4108 // Alinhamento Centro
oSheet:Columns(i):ColumnWidth := 15 // Tamanho da Coluna
NEXT
oSheet:Columns(2):ColumnWidth := 40 // Tamanho da Coluna
oSheet:Cells( 1, 1 ):Select()
oExcel:Visible := .F.
nLinPlan := 2
xTotalEstq := xTotalCust := xTotalVend := 0
WHILE TMP_ITENS->(!EOF())
Mensag("Gerando..."+ STR( (( (nLinPlan-1) / TMP_ITENS->(LastRec()) )*100),3)+"%")
oSheet:Cells( nLinPlan, 1 ):Value := Alltrim(TMP_ITENS->prcodi)
oSheet:Cells( nLinPlan, 2 ):Value := Alltrim(TMP_ITENS->PrDesc)
oSheet:Cells( nLinPlan, 3 ):Value := TMP_ITENS->PrQtde
oSheet:Cells( nLinPlan, 4 ):Value := TMP_ITENS->ESTQATUAL
oSheet:Cells( nLinPlan, 5 ):Value := TMP_ITENS->VL_TOT/TMP_ITENS->PRQTDE
oSheet:Cells( nLinPlan, 6 ):Value := TMP_ITENS->VL_TOT
//-- Totaliza
ntotQtd += TMP_ITENS->PrQtde
nTotValor += TMP_ITENS->Vl_TOT
// Formatar célula:
oSheet:Cells( nLinPlan, 1 ):NumberFormat := "000000"
oSheet:Cells( nLinPlan, 4 ):NumberFormat := "#.##0,00"
oSheet:Cells( nLinPlan, 5 ):NumberFormat := "#.##0,00"
oSheet:Cells( nLinPlan, 6 ):NumberFormat := "#.##0,00"
//oExcel.ActiveSheet.UsedRange.EntireColumn.Autofit
// Alinhamento das celulas:
oSheet:Cells( nLinPlan, 1 ):HorizontalAlignment := 3 //-- Centro
oSheet:Cells( nLinPlan, 5 ):HorizontalAlignment := 4 //-- Right
oSheet:Cells( nLinPlan, 6 ):HorizontalAlignment := 4 //-- Right

cIntervalo := 'A' + ALLTRIM(STR(nLinPlan)) + ':F' + ALLTRIM(STR(nLinPlan))
// Faz Zebrado
IF (nLinPlan % 2) != 0
oSheet:Range(cIntervalo):Interior:ColorIndex := 35
ENDIF
nLinPlan++
TMP_ITENS->( DBSKIP() )
END
oSheet:Cells( nLinPlan, 4 ):Value := ntotQtd
oSheet:Cells( nLinPlan, 4 ):Font:Bold := .T.
oSheet:Cells( nLinPlan, 4 ):Font:ColorIndex := 02 //-- Cor da letra Branca
oSheet:Cells( nLinPlan, 4 ):HorizontalAlignment := 4 //-- Right
oSheet:Cells( nLinPlan, 4 ):NumberFormat := "#.##0,00"
oSheet:Cells( nLinPlan, 6 ):Value := nTotValor
oSheet:Cells( nLinPlan, 6 ):Font:Bold := .T.
oSheet:Cells( nLinPlan, 6 ):Font:ColorIndex := 02 //-- Cor da letra Branca
oSheet:Cells( nLinPlan, 6 ):HorizontalAlignment := 4 //-- Right
oSheet:Cells( nLinPlan, 6 ):NumberFormat := "#.##0,00"
oSheet:Range( 'A' + ALLTRIM(STR(nLinPlan)) + ':F' + ALLTRIM(STR( nLinPlan ))):Interior:ColorIndex := 21
// Colocar Bordas:
cIntervalo := 'A1:F' + ALLTRIM(STR( nLinPlan ) )
oSheet:Range(cIntervalo):Borders(1):LineStyle:= 1
oSheet:Range(cIntervalo):Borders(2):LineStyle:= 1
oSheet:Range(cIntervalo):Borders(3):LineStyle:= 1
oSheet:Range(cIntervalo):Borders(4):LineStyle:= 1
* Retrieve the FileFormat
nFileFormat = oExcel:WorkBooks(1):FileFormat

cArq := CurDirSys() + 'ProdOrcAgrp' + cTerminal + '.xls'
Ferase( cArq)
oSheet:SaveAs( cArq, 56 ) // Salva no Excel 8.0
inkey(1)
Executa(cArq)
oExcel:WorkBooks:Close()
oExcel:Quit()
oExcel := NIL // Libera o Excel
DBCLOSEALL()
RETURN
"Francisco Martí­nez Garcí­a" <pacoelche@hotmail.com> wrote in message news:53d0ec2d$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Hola:
He visto en las new una libreria (filexls) para pasar datos a una hoja excel, pero no he localizado como utilizarla.
Si alguien puede decirme como funciona y si me puede enviar un ejemplo, pues mejor que mejor.
Muchí­simas gracias por vuestra colaboración.
Paco Martí­nez
Elche
---
Este email está limpo de ví­rus e malwares porque a proteção do avast! Antiví­rus está ativa.
http://www.avast.com
--
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

TFileXls

Mensaje por pacoelche »

Gracias Cassiano, voy a probarlo.
Un saludo
"Cassiano de Oliveira" <calunaty@calunaty.com.br> escribió en el mensaje news:[email=53d109f3@svctag-j7w3v3j....]53d109f3@svctag-j7w3v3j....[/email]
Miras se le ayuda
************************************************************ ********************
procedure RelExcel(dt1, dt2, cAlias, bCond)
************************************************************ *******************
LOCAL pag:=0, cl:=0, nTot:=0, lin:=0, tot_ger:=0, cCabec:=""
LOCAL dData := CTOD(" / / "), aProduto := {}
LOCAL cTela := Savescreen(s_geral)
LOCAL nPos := 0
Local cPara

LOCAL getlist:={}, cTitulo1:="", cCliente:=""
LOCAL cArq :='', nLidos:=0
LOCAL oExcel, oSheet, cIntervalo, i, xTotalVend, xTotalCust, xTotalEstq, nLinPlan

SETCOLOR(vcn)
Produto->( ORDSETFOCUS('produto2') )

INDEX ON DTOS(DATA) + PEDIDO + PRCODI TO iTmpCotAgrp FOR (cAlias)->Data >= dt1 .AND. (cAlias)->data <= dt2 // ..AND. (cAlias)->cancelado!='S'
aArq:={{"PRCODI", "C", 06, 0},;
{"PRDESC", "C", 40, 0},;
{"PRQTDE", "N", 10, 3},;
{"VL_TOT", "N", 12, 3},;
{"ESTQATUAL", "N", 12, 3}}
DBCREATE((arq_temp), aArq)
Open_file(arq_temp,"TMP_ITENS","ITENS DE VENDA AGRUPADOS",.T.)
INDEX ON Prcodi TO (arq_temp)

WHILE COTACAO->(!EOF())
TMP_ITENS->( AdiReg(0) )
TMP_ITENS->Prcodi := (cAlias)->PrCodi
TMP_ITENS->Prdesc := (cAlias)->descricao
TMP_ITENS->Prqtde := (cAlias)->qtde
TMP_ITENS->VL_TOT := (cAlias)->vl_total
TMP_ITENS->ESTQATUAL := Produto->PrEstq
(cAlias)->( DBSKIP() )
END

PG := 1
lin := 1
ntotQtd := 0
nTotValor := 0

INDEX ON PRDESC TO (arq_temp)
//---------------------------------
IF (oExcel := Cria_OLE("Excel.Application", "Erro! O Excel n„o esta Ativado ou N„o instalada nesse Computador", ..T.) ) == NIL
RETURN
ENDIF

oExcel:WorkBooks:Add()
oSheet := oExcel:ActiveSheet
oSheet:Name := 'An lise de Or‡amentos' //cTitulo1 + ' Per¡odo do Relat¢rio:' + Dt2Dig(dt1) + ' a ' + Dt2Dig(dt2)
oSheet:Cells( 1, 1 ):Value := "Codigo"
oSheet:Cells( 1, 2 ):Value := "Descricao"
oSheet:Cells( 1, 3 ):Value := "Qtde Orcamentos"
oSheet:Cells( 1, 4 ):Value := "Estq Atual"
oSheet:Cells( 1, 5 ):Value := "Vlr. Medio"
oSheet:Cells( 1, 6 ):Value := "Vlr. Total"
FOR i=1 to 6
oSheet:Cells( 1, i ):Font:Bold := ..T.
oSheet:Cells( 1, i ):Font:ColorIndex := 2 //-- Cor da letra
oSheet:Cells( 1, i ):Interior:ColorIndex := 11 //-- Cor de Fundo
oSheet:Cells( 1, i ):HorizontalAlignment := -4108 // Alinhamento Centro
oSheet:Columns(i):ColumnWidth := 15 // Tamanho da Coluna
NEXT
oSheet:Columns(2):ColumnWidth := 40 // Tamanho da Coluna
oSheet:Cells( 1, 1 ):Select()
oExcel:Visible := .F.
nLinPlan := 2
xTotalEstq := xTotalCust := xTotalVend := 0
WHILE TMP_ITENS->(!EOF())
Mensag("Gerando..."+ STR( (( (nLinPlan-1) / TMP_ITENS->(LastRec()) )*100),3)+"%")
oSheet:Cells( nLinPlan, 1 ):Value := Alltrim(TMP_ITENS->prcodi)
oSheet:Cells( nLinPlan, 2 ):Value := Alltrim(TMP_ITENS->PrDesc)
oSheet:Cells( nLinPlan, 3 ):Value := TMP_ITENS->PrQtde
oSheet:Cells( nLinPlan, 4 ):Value := TMP_ITENS->ESTQATUAL
oSheet:Cells( nLinPlan, 5 ):Value := TMP_ITENS->VL_TOT/TMP_ITENS->PRQTDE
oSheet:Cells( nLinPlan, 6 ):Value := TMP_ITENS->VL_TOT
//-- Totaliza
ntotQtd += TMP_ITENS->PrQtde
nTotValor += TMP_ITENS->Vl_TOT
// Formatar célula:
oSheet:Cells( nLinPlan, 1 ):NumberFormat := "000000"
oSheet:Cells( nLinPlan, 4 ):NumberFormat := "#.##0,00"
oSheet:Cells( nLinPlan, 5 ):NumberFormat := "#.##0,00"
oSheet:Cells( nLinPlan, 6 ):NumberFormat := "#.##0,00"
//oExcel.ActiveSheet.UsedRange.EntireColumn.Autofit
// Alinhamento das celulas:
oSheet:Cells( nLinPlan, 1 ):HorizontalAlignment := 3 //-- Centro
oSheet:Cells( nLinPlan, 5 ):HorizontalAlignment := 4 //-- Right
oSheet:Cells( nLinPlan, 6 ):HorizontalAlignment := 4 //-- Right

cIntervalo := 'A' + ALLTRIM(STR(nLinPlan)) + ':F' + ALLTRIM(STR(nLinPlan))
// Faz Zebrado
IF (nLinPlan % 2) != 0
oSheet:Range(cIntervalo):Interior:ColorIndex := 35
ENDIF
nLinPlan++
TMP_ITENS->( DBSKIP() )
END
oSheet:Cells( nLinPlan, 4 ):Value := ntotQtd
oSheet:Cells( nLinPlan, 4 ):Font:Bold := ..T.
oSheet:Cells( nLinPlan, 4 ):Font:ColorIndex := 02 //-- Cor da letra Branca
oSheet:Cells( nLinPlan, 4 ):HorizontalAlignment := 4 //-- Right
oSheet:Cells( nLinPlan, 4 ):NumberFormat := "#.##0,00"
oSheet:Cells( nLinPlan, 6 ):Value := nTotValor
oSheet:Cells( nLinPlan, 6 ):Font:Bold := ..T.
oSheet:Cells( nLinPlan, 6 ):Font:ColorIndex := 02 //-- Cor da letra Branca
oSheet:Cells( nLinPlan, 6 ):HorizontalAlignment := 4 //-- Right
oSheet:Cells( nLinPlan, 6 ):NumberFormat := "#.##0,00"
oSheet:Range( 'A' + ALLTRIM(STR(nLinPlan)) + ':F' + ALLTRIM(STR( nLinPlan ))):Interior:ColorIndex := 21
// Colocar Bordas:
cIntervalo := 'A1:F' + ALLTRIM(STR( nLinPlan ) )
oSheet:Range(cIntervalo):Borders(1):LineStyle:= 1
oSheet:Range(cIntervalo):Borders(2):LineStyle:= 1
oSheet:Range(cIntervalo):Borders(3):LineStyle:= 1
oSheet:Range(cIntervalo):Borders(4):LineStyle:= 1
* Retrieve the FileFormat
nFileFormat = oExcel:WorkBooks(1):FileFormat

cArq := CurDirSys() + 'ProdOrcAgrp' + cTerminal + '.xls'
Ferase( cArq)
oSheet:SaveAs( cArq, 56 ) // Salva no Excel 8.0
inkey(1)
Executa(cArq)
oExcel:WorkBooks:Close()
oExcel:Quit()
oExcel := NIL // Libera o Excel
DBCLOSEALL()
RETURN
"Francisco Martí­nez Garcí­a" <pacoelche@hotmail.com> wrote in message news:53d0ec2d$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Hola:
He visto en las new una libreria (filexls) para pasar datos a una hoja excel, pero no he localizado como utilizarla.
Si alguien puede decirme como funciona y si me puede enviar un ejemplo, pues mejor que mejor.
Muchí­simas gracias por vuestra colaboración.
Paco Martí­nez
Elche
------------------------------------------------------------ ------------------
Este email está limpo de ví­rus e malwares porque a proteção do avast! Antiví­rus está ativa.

--
Responder