La Web del Programador: Comunidad de Programadores
 
    Pregunta:  61002 - COMO GENERAR GRAFICAS EN UN XLS A PARTIR DE PHP
Autor:  Oswaldo Cuadras
De nuevo con una pregunta, ya se como generar el archivo de excel a partir de la informacion de una tabla que veo en la pagina, quisiera saber si al archivo de excel le puedo incluir algunas graficas en base a los mismos datos con los que lo estoy generando, ¿Se puede? ¿Como se haria?

Saludos.

  Respuesta:  Carl Go
Hola por supuesto que si se puede... lo que tienes que hacer es un archivo independiente donde se generen las gráfica, y este archivo va a obtener los valores del archivo generado por PHP.

En caso de que la cantidad de valores obtenidos no sean constantes, es decir que sean datos de rango variables (se incrementa la cantidad de valores en cada vez que se crea el archivo Excel) con datos provenientes de PHP, pues la solución sería generar una gráfica con programación MACRO hecha en VB, que es el lenguaje de programación que una la suite Office.

Creo que este código ya está listo para usar. Sólo asígnalo a un botón
_________________________________________________________

Sub marrano()

Dim x1 As Integer
Dim x2 As Integer
Dim datosx As Range

'Si los datos los tienes en hoja2
Set datosx = Sheets("Hoja2").Range(Cells(x1, 2), Cells(x2, 2)) 'Eje de categorías
Set datos = Sheets("Hoja2").Range(Cells(x1, 3), Cells(x2, 3)) 'rango a graficar
x1 = 2
x2 = 5

Charts.Add

With ActiveChart
'Esto indica que el gráfico lo imprimes en "Hoja1"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
.ChartType = xlLineMarkers
'Estas son para indicar el origen de los datos
.SetSourceData Source:=datos, _
PlotBy:=xlColumns 'Si la serie está por filas cambiar por xlRows
.SeriesCollection.NewSeries 'Si tienes una sola serie esta línea sobra
.SeriesCollection(1).XValues = datosx
.SeriesCollection(1).Values = datos

'Estas son cuestiones de forma
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With

End Sub
_________________________________________________________

Analiza este código un poco y piensa como adaptarlo a tu necesidad.

Saludos

Carlos