Page 1 of 1

GRAFICOS EXCEL TOleAuto

PostPosted: Fri Mar 17, 2017 12:11 pm
by jbrita
Como hacer un graficos como en esta imagen con
oExcel:=TOleAuto():New( "Excel.Application" )
que quede igual que esta imagen:


Image

saludos

Re: GRAFICOS EXCEL TOleAuto

PostPosted: Fri Mar 17, 2017 2:53 pm
by armando.lagunas
prueba con esto:

Code: Select all  Expand view

#include "fivewin.ch"

Function Main()
  GraficaExportaExcel ({"Ene","Feb","Mar"},{{1,1000},{2,1500},{3,1300}},{"Ventas"},3,1,"Titulo Gráfica","Subtitulo")
Return (nil)

Function GraficaExportaExcel (aDatosEtiquetas, aValores, aLeyendas, nElementos, nProfundidad, cTitulo)  
/* ===================================================================================
   Realiza la exportación a Excel de la gráfica, datos y gráfico generados
   Revisión : 11/06/2014 19:42:48
   
   (cells [y,x])
   ===================================================================================
 */

Local oExcel, oLibro, oHoja, oChart, oSourceData, oWin, nCol, nSerie, cRango

  If MsgYesNo ("¿Generar hoja de cálculo con los datos y gráfica?","Por favor confirme")
    If ( oExcel := ExcelObj() ) <> nil
      oExcel:ScreenUpdating := .f.
      oLibro := oExcel:WorkBooks:Add()
      oHoja  := oExcel:ActiveSheet
   
      // Titulos ejeX
      For nCol:=1 To Len (aDatosEtiquetas)
        oHoja:Cells( nCol+1,1 ):Value := aDatosEtiquetas[nCol]; oHoja:Cells ( nCol+1, 1 ):Font:Bold:=.T.
      Next
   
      For nSerie:=1 To nProfundidad
        // Series
        oHoja:Cells ( 1,1+nSerie):Value :=aLeyendas[nSerie]
           
        // Importes
        For nCol:=1 To Len (aValores)
          oHoja:Cells( nCol+1,nSerie+1 ):Value := aValores[nCol,nSerie]
        Next
      Next
   
      // Grafico
      cRango:="A1:"+Chr(65+nProfundidad)+Alltrim(Str(Len(aValores)+1))
      oHoja:Range(cRango):Select()
      oChart := oExcel:Charts:Add()
      oChart:ChartType := 4
   
      oSourceData := oHoja:Range(cRango)
      oChart:SetSourceData(oSourceData) //, PlotBy := 2 // xlColumns
   
      oChart:HasLegend := .T.
      oChart:Legend:Position := -4107 // xlBottom
   
      oChart:HasTitle := .T.
      oChart:ChartTitle:Characters:Text := cTitulo
   
      TRY
        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
       
      oExcel:ScreenUpdating   := .T.
      oExcel:visible          := .T.
      ShowWindow( oExcel:hWnd, 3 )
      BringWindowToTop( oExcel:hWnd )
    Else
      MsgAlert ("Para poder exportar los datos debe tener Microsoft Excel instalado en el sistema","Atención")
    Endif
  Endif
Return (nil)
 


lo encontre en el foro, el autor no lo recuerdo, tampoco lo he probado pero se ve funcional.

Saludos

Re: GRAFICOS EXCEL TOleAuto

PostPosted: Sat Mar 18, 2017 11:35 pm
by jose_murugosa
El ejemplo es funcional (lo probé, no es que sea mío :D probado en windows 7 y office 2013


Image

Re: GRAFICOS EXCEL TOleAuto

PostPosted: Mon Mar 20, 2017 1:12 pm
by jbrita
si muchas gracias, es funcional, y sera posible de que sea igual que la imagen los valores y el grafico a la derecha

saludos