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
pacoelche
Posts: 137
Joined: Tue Jul 11, 2006 10:32 am

TFileXls

Postby pacoelche » Thu Jul 24, 2014 1:21 pm

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
Posts: 475
Joined: Tue Jul 24, 2012 10:21 pm

TFileXls

Postby Cassiano de Oliveira » Thu Jul 24, 2014 3:27 pm

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$1@svctag-j7w3v3j....
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
Posts: 137
Joined: Tue Jul 11, 2006 10:32 am

TFileXls

Postby pacoelche » Fri Jul 25, 2014 10:02 am

Gracias Cassiano, voy a probarlo.
Un saludo
"Cassiano de Oliveira" <calunaty@calunaty.com.br> escribió en el mensaje news:53d109f3@svctag-j7w3v3j....
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$1@svctag-j7w3v3j....
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.

--

Return to “Spanish”