Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Gráficos tipo torta (circular)
Message
From
09/07/2004 16:29:40
Fabian Belo
Independent Developer
Argentina
 
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
00922694
Message ID:
00922718
Views:
12
>Compañeros, quien puede facilitarme una automatización de VFP a Excel para crear gráfico tipo torta (circular).
>
>Mucho les agredecere este gran favor.
>
>Saludos
>
>José Luis
>wasp_k@hotmail.com
>JoseLGuillenM@lycos.es
>
>
>PD: Estoy utilizando el VFP7 y Excel 2000.

Jose;

Aqui in ejemplo bastante completo, solo deberias cambiar:
.ActiveChart.ChartType = 65
por el codigo para "tortas" y configurar los titulos.
* Ejemplo de alguien que no recuerdo

*=========================================================
SET DATE DMY
set date french
SET SAFETY OFF
close data all

*--- Crea las tablas que simulan las consultas
DO CreaArchivos

*--- Genera gráfico anual
DO GraficoAnual

*--- Genera gráfico semanal
DO GraficoSemanal

CLOSE TABLES ALL
RETURN
*=========================================================

*-------------------------------------------------------
* PROCEDURE CreaArchivos
*-------------------------------------------------------
* Crea y llena las tablas de ejemplo y las copia
* como archivo tipo .XLS
*-------------------------------------------------------
PROCEDURE CreaArchivos
   LOCAL lnI, ldFechaIni

   *--- Inicializo la funcion RAND()
   lnI = RAND(-1)
   ldFechaIni = ctod("27/12/1998")

   *---- Creo tablas
   CREATE TABLE Semana (Dia C(10), Item01 N(10,2), ;
      Item02 N(10,2), Item03 N(10,2), Item04 N(10,2))

   CREATE TABLE Anio (Mes C(10), TOTAL N(10,2))

   *--- Cargo datos de los 7 días y los 12 meses
   FOR lnI = 1 TO 12
      IF lnI <= 7
         INSERT INTO Semana ;
            (Dia, Item01, Item02, Item03, Item04) ;
            VALUES (CDOW(ldFechaIni+lnI), RAND()*1000, ;
            RAND()*1000, RAND()*1000, RAND()*1000 )
      ENDIF
      INSERT INTO Anio (Mes, TOTAL) ;
         VALUES (CMONTH(GOMONTH(ldFechaIni,lnI)), RAND()*10000 )
   ENDFOR

   *--- Guardo como tipo XL5
   SELECT Semana
   COPY TO Semana TYPE XL5
   SELECT Anio
   COPY TO Anio TYPE XL5
   RETURN
ENDPROC

*-------------------------------------------------------
* PROCEDURE GraficoAnual
*-------------------------------------------------------
* Creo un gráfico de Lineas en Excel
*-------------------------------------------------------
PROCEDURE GraficoAnual
   LOCAL lnFil, lnCol, lcRango, lcPlanilla, lcHoja, loExcel

   lnFil = RECCOUNT("Anio") + 1
   lnCol = FCOUNT("Anio")
   lcRango = "A1:" + CHR(64+lnCol) + ALLTRIM(STR(lnFil))
   lcHoja = "Anio"
   lcPlanilla = SYS(5) + CURDIR() + "Anio.xls"

   *--- Creo objeto Excel
   loExcel=CREATEOBJECT("Excel.application")
   WITH loExcel.APPLICATION
      .VISIBLE = .F. && oculto el trabajo en la aplicacion Excel
      .workbooks.OPEN(lcPlanilla)

      *---- Añado grafico de líneas
      .Charts.ADD
      .ActiveChart.ChartType = 65 && xlLineMarkers
      .ActiveChart.SetSourceData(.Sheets(lcHoja).RANGE(lcRango), 2)
      .ActiveChart.Location(1, "Grafico")
      .ActiveChart.HasDataTable = .F.

      *--- Estilo y ancho línea
      .ActiveChart.SeriesCollection(1).SELECT
      WITH .SELECTION.BORDER
         .Weight = 4 && xlThick
         .LineStyle = 1 && xlContinuous
      ENDWITH

      *--- Titulo gráfico
      .ActiveChart.HasTitle = .T.
      .ActiveChart.ChartTitle.TEXT = "Ventas acumuladas anuales"
      .ActiveChart.ChartTitle.SELECT
      WITH .SELECTION.FONT
         .NAME = "Arial"
         .FontStyle = "Negrita"
         .SIZE = 16
      ENDWITH

      *--- Leyenda
      .ActiveChart.HasLegend = .T.
      .ActiveChart.Legend.SELECT
      .SELECTION.Position = -4160 && xlTop

      *--- Ejes
      WITH .ActiveChart
         .Axes(1, 1).HasTitle = .T.
         .Axes(1, 1).AxisTitle.TEXT = "Meses del año"
         .Axes(2, 1).HasTitle = .T.
         .Axes(2, 1).AxisTitle.TEXT = "Totales en U$S"
         .Deselect
      ENDWITH

      *--- Grabo planilla y cierro
      .VISIBLE = .F.
      .ActiveWorkbook.SAVE
      .workbooks.CLOSE
   ENDWITH
   RELE loExcel
   RETURN
ENDPROC

*-------------------------------------------------------
* PROCEDURE GraficoSemanal
*-------------------------------------------------------
* Gráfico de Barras Apiladas en Excel
*-------------------------------------------------------
PROCEDURE GraficoSemanal
   LOCAL lnFil, lnCol, lcRango, lcPlanilla, lcHoja, loExcel

   lnFil = RECCOUNT("Semana") + 1
   lnCol = FCOUNT("Semana")
   lcRango = "A1:" + CHR(64+lnCol) + ALLTRIM(STR(lnFil))
   lcHoja = "Semana"
   lcPlanilla = SYS(5) + CURDIR() + "Semana.xls"

   *--- Creo objeto Excel
   loExcel=CREATEOBJECT("Excel.application")

   WITH loExcel.APPLICATION
      .VISIBLE = .f. && oculto el trabajo en la aplicacion Excel
      .workbooks.OPEN(lcPlanilla)

      *---- Añado grafico barras apiladas
      .Charts.ADD
      .ActiveChart.ChartType = 52 && xlColumnStacked
      .ActiveChart.SetSourceData(.Sheets(lcHoja).RANGE(lcRango), 2)
      .ActiveChart.Location(1, "Grafico")
      .ActiveChart.HasDataTable = .F.

      *--- Titulo gráfico
      .ActiveChart.HasTitle = .T.
      .ActiveChart.ChartTitle.TEXT = "Ventas semanales por items"
      .ActiveChart.ChartTitle.SELECT
      WITH .SELECTION.FONT
         .NAME = "Arial"
         .FontStyle = "Negrita"
         .SIZE = 16
      ENDWITH

      *--- Leyenda>
      .ActiveChart.HasLegend = .T.
      .ActiveChart.Legend.SELECT
      .SELECTION.Position = -4160 && xlTop

      *--- Ejes
      WITH .ActiveChart
         .Axes(1, 1).HasTitle = .T.
         .Axes(1, 1).AxisTitle.TEXT = "Días de la semana"
         .Axes(2, 1).HasTitle = .T.
         .Axes(2, 1).AxisTitle.TEXT = "Totales en U$S"
         .Deselect
      ENDWITH

      *--- Grabo planilla y cierro
      .VISIBLE = .F.
      .ActiveWorkbook.SAVE
      .workbooks.CLOSE
   ENDWITH
   RELE loExcel
   RETURN
ENDPROC

*-------------------------------------------------------

*-------------------------------------------------------
* PROCEDURE CargarCelda
*-------------------------------------------------------
* Gráfico de Barras Apiladas en Excel
*-------------------------------------------------------
procedure CargarCelda
lparameters pnFila, pnColumna, pValor
   LOCAL lnFil, lnCol, lcRango, lcPlanilla, lcHoja, loExcel

   lcPlanilla = SYS(5) + CURDIR() + "Semana.xls"

   *--- Creo objeto Excel
   loExcel=CREATEOBJECT("Excel.application")

   WITH loExcel.APPLICATION
      .VISIBLE = .F. && oculto el trabajo en la aplicacion Excel
      .workbooks.OPEN(lcPlanilla)
      .worksheets(1).cells(pnFila, pnColumna).value	= pValor

      *--- Grabo planilla y cierro
      .VISIBLE = .F.
      .ActiveWorkbook.SAVE
      .workbooks.CLOSE
   ENDWITH
   RELE loExcel
   RETURN
ENDPROC
*-------------------------------------------------------
"Since I've read that alcohol is bad... I quit reading."
Me


http://www.fabianbelo.com.ar
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform