PDA

Ver la Versión Completa : De nuevo...GRAFICAS AUTOMATICAS EN EXCEL!!


alt126
12-04-2005, 10:23:25
Hace poco escribi un mensaje sobre esto, pero ahora que he vuelto sobre el tema, me gustaria que alguien me ayudara, POR FAVOR!!!

Para crear una grafica de manera automatica en excel desde builder hago esto (codigo cedido por OSKR):

//RANGO DE CELDAS PARA LA GRAFICA
String origen,destino; //Comienzo y destino de las celdas de datos.
origen="C";
destino="C";
origen=origen + IntToStr(14);
destino=destino + IntToStr(14 + num_visitas - 1);
origen = origen + ":" + destino;
Variant MiRango=MiHoja.OlePropertyGet("Range",origen);
//GRAFICA
Variant MiColeccionGraficos=MiHoja.OlePropertyGet("ChartObjects");
MiColeccionGraficos.OleProcedure("Add",400,20,200,200);
Variant MiGrafico=MiColeccionGraficos.OlePropertyGet("Item",1);
AnsiString TituloPrincipal="Palomas";
AnsiString TituloEjeY="Eje Y";
AnsiString TituloEjeX="Eje X";
//1 con leyenda
//0 sin leyenda
int Leyenda=1;
//The number of rows or columns containing series labels
int SeriesLabels=0;
//The number of rows or columns containing category labels
int CategoryLabels=0;
//7-> barras con valores
//6-> barras sin valores
//5-> barras complementarias
int ContruccionGrafica=6;
//2 por barras horizontales
//3 por barras verticales
//5 tarta
//11 por barras 3d
//13 por tarta 3d
int TipoGrafico=5;
MiGrafico.OlePropertyGet("Chart").OleProcedure("ChartWizard",MiRango,TipoGrafico,ContruccionGrafica,2,CategoryLabels,
SeriesLabels,Leyenda,TituloPrincipal.c_str(),TituloEjeX.c_str(),TituloEjeY.c_str());
Excel=Unassigned;


El problema es que no se como asignar nombres a las series que muestro, es decir, me aparece la grafica, con los datos, pero cada serie aparece con nombres 1,2,3...

GRACIAS,

Antonio

alt126
12-04-2005, 11:22:46
Que los datos de una grafica vienen dados por series no?...pues para modificarlos, se puede utilizar un metodo llamado SeriesCollection, de manera que si usamos la propiedad "Value", modificamos los datos y con "XValue", los nombres de los datos...

El problema es que el borland me da un fallo que me dice que ese metodo no se puede automatizar...?¿?¿?¿?

Entonces direis como, metes los datos, si no te deja?...pues yo estoy usando el metodo, chartwizard....pero ahi no le puedo indicar los nombres de las series....

ALGUNA SUGERENCIA???? POR FAVOR!!!!

Antonio

barman
12-04-2005, 16:25:00
Noommmmmm, odio excel y toda su api de M.....a, es engorrosa y parece hecha para que tengas que pagar la cuota anual de M$, (lo cual no quiere decir que no la use, en fin).

Pero, lo que pides no lo he hecho nunca, lo maximo ha sido dibujar las graficas (2d) sobre un canvas y enviarlo como una bmp a excel.

alt126
14-04-2005, 10:48:24
La solucion es la siguiente:

Variant MiRango=MiHoja.OlePropertyGet("Range","A1:A5");
Variant MiColeccionGraficos=MiHoja.OlePropertyGet("ChartObjects");
MiColeccionGraficos.OleProcedure("Add",500,200,200,200);
Variant MiGrafico=MiColeccionGraficos.OlePropertyGet("Item",1);
Variant q = MiGrafico.OlePropertyGet("Chart");
Variant r = q.OlePropertyGet("SeriesCollection",(Variant)1);
r.OlePropertySet("XValues","='1'!L1C2:L2C2"); //Aqui toma los nombres!!!


GRACIAS A DAVID (GOKU)!!!! :p

Antonio