Code: Select all
// INCASSI
//
oExcel := TOleAuto():New( "Excel.Application" )
// Excel not available
IF Ole2TxtError() != "S_OK"
MsgStop("Excel non disponibile!", APP_NAME )
oExcel := NIL
ENDIF
InfStat("Invio dati a Excel (incassi)...")
// foglio 1
IF lMensile
cTitolo := "VENDITA MENSILE - Dal: " + DTOC( dDataDa ) + " al: " + DTOC( dDataA ) + " - " + ALLTRIM( oV:cNameDitta )
ELSE // giornaliero
cTitolo := "VENDITA GIORNALIERA - Dal: " + DTOC( dDataDa ) + " al: " + DTOC( dDataA ) + " - " + ALLTRIM( oV:cNameDitta )
ENDIF
oExcel:WorkBooks:Add()
oExcel:Visible := .F.
oHoja := oExcel:Get( "ActiveSheet" )
oHoja:Cells( 1, 01 ):Value := cTitolo
oHoja:Cells( 1, 01 ):Font:Bold := .T.
oHoja:Cells( 4, 01 ):Value := "DATA"
oHoja:Cells( 4, 02 ):Value := "IMPORTO"
oHoja:Cells( 4, 01 ):Font:Bold := .T.
oHoja:Cells( 4, 02 ):Font:Bold := .T.
FOR i := 1 TO LEN( aIncassi )
oHoja:Cells( i+4, 01 ):Value := aIncassi[i,1]
oHoja:Cells( i+4, 02 ):Value := aIncassi[i,2]
oHoja:Cells( i+4, 02 ):Set("NumberFormat"," #.##0,00;- #.##0,00")
NEXT
oHoja:Columns("A:A"):Set("ColumnWidth", 9.43 )
// grafico
oHoja:Range("A4:B" + NTRIM( LEN( aIncassi ) + 4 ) ):Select()
oChart := oExcel:Charts:Add()
oChart:ChartType := 54 // xl3DColumnClustered
//xl3DPie -4102
//xlColumnClustered 51
//xlBarClustered 57
// xl3DColumnClustered 54
oSourceData := oHoja:Range("A4:B" + NTRIM( LEN( aIncassi ) + 4 ))
oChart:SetSourceData(oSourceData) //, PlotBy := 2 // xlColumns
oChart:HasLegend := .T.
oChart:Legend:Position := -4107 // xlBottom
oChart:HasTitle := .T.
oChart:ChartTitle:Characters:Text := cTitolo
//oChartActive := oChart:ChartArea:Select()
TRY // non funziona tutto, e se tolgo el try, end, da errori in tutti, però, in questo modo, mette gli importi
oCh1 := oChart:PlotArea:Select()
oCh1:RightAngleAxes := .T.
oCh1:Elevation := 15
oCh1:Perspective := 30
oCh1:Rotation := 20
oCh1:HeightPercent := 100
oCh1:_ := .T.
oChart:ApplyDataLabels:Set("LegendKey", .T. )
oChart:ApplyDataLabels:Set("HasLeaderLines", .T. )
oChart:ApplyDataLabels:Set("ShowValue", .T. )
oChart:ApplyDataLabels:Set("AutoText", .T. )
oChart:ApplyDataLabels:Set("ShowBubbleSize", .F. )
CATCH
END
// foglio 2
InfStat("Invio dati a Excel (Articoli più venduti)...")
aArtAnnoLavoro := ASORT( aArtAnnoLavoro,,, { |x, y| x[2] > y[2] } )
cTitolo := "Articoli più venduti - " + ALLTRIM( oV:cNameDitta ) + " - dal: " + DTOC( dDataDa ) + " al: " + DTOC( dDataA )
oExcel:Sheets(3):Select() // sara il foglio 2, perche il primo è il grafico ;-)
oHoja := oExcel:Get( "ActiveSheet" )
oHoja:Cells( 1, 01 ):Value := cTitolo
oHoja:Cells( 1, 01 ):Font:Bold := .T.
oHoja:Cells( 4, 01 ):Value := "ARTICOLO"
oHoja:Cells( 4, 02 ):Value := "IMPORTO"
oHoja:Cells( 4, 01 ):Font:Bold := .T.
oHoja:Cells( 4, 02 ):Font:Bold := .T.
FOR i := 1 TO 10 // LEN( aArtAnnoLavoro )
oHoja:Cells( i+4, 01 ):Value := ALLTRIM( aArtAnnoLavoro[i,1] ) + " - " + ALLTRIM( NameArt( aArtAnnoLavoro[i,1] ) )
oHoja:Cells( i+4, 02 ):Value := aArtAnnoLavoro[i,2]
oHoja:Cells( i+4, 02 ):Set("NumberFormat"," #.##0,00;- #.##0,00")
NEXT
//oHoja:Columns("A:A"):Set("ColumnWidth", 9.43 )
// grafico
oHoja:Range("A5:B14"):Select()
oChart := oExcel:Charts:Add()
oChart:ChartType := -4102 // xl3DPie
oSourceData := oHoja:Range("A5:B14")
oChart:SetSourceData(oSourceData)
oChart:HasLegend := .T.
oChart:Legend:Position := -4107 // xlBottom
oChart:HasTitle := .T.
oChart:ChartTitle:Characters:Text := cTitolo
TRY // non funziona tutto, e se tolgo el try, end, da errori in tutti, però, in questo modo, mette gli importi in ogni fetta della torta...
oChart:ApplyDataLabels:Set("LegendKey", .T. )
oChart:ApplyDataLabels:Set("HasLeaderLines", .T. )
oChart:ApplyDataLabels:Set("ShowValue", .T. )
oChart:ApplyDataLabels:Set("AutoText", .T. )
oChart:ApplyDataLabels:Set("ShowBubbleSize", .F. )
CATCH
END
// foglio 3
InfStat("Invio dati a Excel (Articoli più venduti in pezzi)...")
aArtAnnoLavoro := ASORT( aArtAnnoLavoro,,, { |x, y| x[3] > y[3] } )
cTitolo := "Articoli più venduti (in pezzi) - " + ALLTRIM( oV:cNameDitta ) + " - dal: " + DTOC( dDataDa ) + " al: " + DTOC( dDataA )
oExcel:Sheets(5):Select() // sara il foglio 3, perche il primo è il grafico, secondo il foglio 1, terzo il secondo grafico, quarto il foglio 2 ;-)
oHoja := oExcel:Get( "ActiveSheet" )
oHoja:Cells( 1, 01 ):Value := cTitolo
oHoja:Cells( 1, 01 ):Font:Bold := .T.
oHoja:Cells( 4, 01 ):Value := "ARTICOLO"
oHoja:Cells( 4, 02 ):Value := "PEZZI"
oHoja:Cells( 4, 01 ):Font:Bold := .T.
oHoja:Cells( 4, 02 ):Font:Bold := .T.
FOR i := 1 TO 10 // LEN( aArtAnnoLavoro )
oHoja:Cells( i+4, 01 ):Value := ALLTRIM( aArtAnnoLavoro[i,1] ) + " - " + ALLTRIM( NameArt( aArtAnnoLavoro[i,1] ) )
oHoja:Cells( i+4, 02 ):Value := aArtAnnoLavoro[i,3]
oHoja:Cells( i+4, 02 ):Set("NumberFormat"," #.##0,00;- #.##0,00")
NEXT
//oHoja:Columns("A:A"):Set("ColumnWidth", 9.43 )
// grafico
oHoja:Range("A5:B14"):Select()
oChart := oExcel:Charts:Add()
oChart:ChartType := -4102 // xl3DPie
oSourceData := oHoja:Range("A5:B14")
oChart:SetSourceData(oSourceData)
oChart:HasLegend := .T.
oChart:Legend:Position := -4107 // xlBottom
oChart:HasTitle := .T.
oChart:ChartTitle:Characters:Text := cTitolo
TRY // non funziona tutto, e se tolgo el try, end, da errori in tutti, però, in questo modo, mette gli importi in ogni fetta della torta...
oChart:ApplyDataLabels:Set("LegendKey", .T. )
oChart:ApplyDataLabels:Set("HasLeaderLines", .T. )
oChart:ApplyDataLabels:Set("ShowValue", .T. )
oChart:ApplyDataLabels:Set("AutoText", .T. )
oChart:ApplyDataLabels:Set("ShowBubbleSize", .F. )
CATCH
END
// FINE più venduti in pezzi
oExcel:Visible := .T.
lUscitaOk := .T.
RECOVER USING lUscitaOk
lUscitaOk := .F.
END SEQUENCE
RETURN lUscitaOk
De repente te sirve para hacerte una idea, no si es lo que tu necesitas.
Saludos.