Mi trauma de los colorcitos en Excel.. X_x

Algo comun que piden para muchas aplicaciones es generar un Excel de lo que se esta mostrando, hay varios alternativas para hacerlo, por ejemplo generarlo desde el servidor y enviarlo al browser o enviar HTML como un MIME de Excel, pero de repente me dio la cosquilla de crearlo desde el propio Browser. Y la verdad no es tan complicado solo hay que tener instalado Excel en la maquina cliente ( Si no como para que querrian generar un Excel ¬¬ ) y Ejecutar un Active X que nos va a dejar crear el archivo como si lo estuvieramos haciendo desde C#:


if (window.ActiveXObject)
{
    try
    {
      var xlApp = new ActiveXObject('Excel.Application');  
   }
   catch(e)
   {
      alert("Error");
      return false; 
   }
}


A partir de ahi solo creamos los objetos del libro y la hoja de trabajo manipulamos las celdas, rangos, valores, etc, etc.


var xlBook = xlApp.Workbooks.Add();
var XlSheet = xlBook.Worksheets(1);
var theCell;
var range;

XlSheet.Activate();

for(var cell=1;cell<=10;cell++)
{
theCell = XlSheet.Cells(1 ,cell);
theCell.Value = 'Column' + cell;
theCell.Interior.Color = 15453831;
}

for(var row=2;row<=6;row++)
{
for(var cell=1;cell<=10;cell++)
{
theCell = XlSheet.Cells(row ,cell);
theCell.Value = '100';
}
}
range = XlSheet.Range("A1:J6");
range.Borders.LineStyle=-4142;
range.Borders.Color=16777215;
range.Font.Name='Calibri';
range.WrapText=true;
range.ColumnWidth=14;
range.Font.Size=8;
XlSheet.Application.Visible = true;


Y pues hasta ahi todo fue muy sencillito, como se ve en el codigo solo genera una tablita de 10x5, le pone un titulo a cada columna de la tabla, y da algo de formato a la tabla en general, pero la linea por la cual escrbi este post es esta


theCell.Interior.Color = 15453831;


Y es que ese valor de 15453831 no parece ser ni HTML, ni Hexadecinal ni RGB, pero en realidad si es RGB en Hexadecinal!! *el publico exclama sorpresa*, pasa algo muy raro al generar el Excel de esta manera.

El color que representa 15453831 luce algo asi como esto:



Donde podemos ver el RGB del color

R: 135
G: 206
B: 235

si convertimos cada uno de los valores RGB a Hex nos daria:

R: 87
G: CE
B: EB

y aqui esta lo simpatico del asunto si colocamos los 3 hexadecimales en el orden RGB y los convertimos a decimal nos daria:

87 CE EB = 8,900,331.

pero al poner ese valor en el color interior de la celda no nos da ese color si no algun otro, pero al colocar los Hexadecimales en orden invertido (no RGB si no mas bien BGR )

EB CE 87 = 15,453,831.

Ya tenemos el color que queriamos aplicar ( Aplausos por favor :-D )

Y bueno asi fue como termino mi busqueda de igualar los colores de una exporatcion externa a una desde el cliente, ojala a alguien le sirva.

Saludos!!!

Comentarios

LaTo MaN ha dicho que…
Y que pasa si lo quiero generar desde Fire Fox o Chrome ???
Yo ha dicho que…
Pss ya valio!! xD aun que creo que si hay forma de ejecutar activex desde FF pero nunca he checado como, telmex es puro IE u_U

Entradas populares