mas notas
Exportar un .xls desde php
13/10/2005 - 11:19
El otro dia me surgio un problema, necesitaba exportar unos datos a excel desde php y como que casi me vuelvo loco, pero por suerte salio todo bien porque di con este codigo:
Los comentarios estan en ingles, pero son entendibles
Espero que les sirva, saludos!
// Excel begin of file header
function xlsBOF()
{
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
// Excel end of file footer
function xlsEOF()
{
echo pack("ss", 0x0A, 0x00);
return;
}
// Function to write a Number (double) into Row, Col
function xlsWriteNumber($Row, $Col, $Value)
{
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}
// Function to write a label (text) into Row, Col (UTF8)
function xlsWriteLabel($Row, $Col, $Value )
{
$Value2UTF8=utf8_decode($Value);
$L = strlen($Value2UTF8);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value2UTF8;
return;
}
//Escribir texto o numeros en una celda (Gracias Bruno!)
function xlsWriteCell($Row, $Col, $Value )
{
if(is_numeric($Value))
xlsWriteNumber($Row, $Col, $Value);
else
xlsWriteLabel($Row, $Col, $Value);
}
// ----- end of function library -----
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/x-msexcel");
header ("Content-Disposition: attachment; filename=prueba.xls" );
header ("Content-Description: PHP/INTERBASE Generated Data" );
xlsBOF(); // begin Excel stream
xlsWriteCell(0,0,"This is a label"); // write a label in A1, use for dates too
xlsWriteCell(0,1,9999); // write a number B1
xlsEOF(); // close the stream
Que les sea leve.
PD: Gracias a Bruno Macias por hacer que las funciones reconozcan caracteres especiales (acentos y otros) y si son numeros o texto.
PD2: Saludos al usuario de Taringa (reduardo7) que creo una version mejorada de este codigo usando clases.
Lo pueden ver en el siguiente link:
http://www.taringa.net/posts/ciencia-educacion/8203744/Exportar-a-Excel-desde-PHP.html
Última actualización (23 de enero, 2011)
Muy bueno! Funciono!!! Ahora solo resta agregarle un poco de formato!
Fantástico!!!! Ya conocía este código, pero tenía el problema de los acentos y me estaba volviendo loco con la codificación de la página, sin apenas lograr mi objetivo cuando cargaba valores de la base de datos. Ahora ya está resuelto.
Muchas grac
Fantástico!!!! Ya conocía este código, pero tenía el problema de los acentos y me estaba volviendo loco con la codificación de la página, sin apenas lograr mi objetivo cuando cargaba valores de la base de datos. Ahora ya está resuelto.
Muchas grac
lo siento no puedo pegar...
Si en algun momento quieren saber lo que hice me pueden escribir a bomv.27@gmail.com
Hmm, la falla no puedo postear todo el codigo asi que pondre mis cambios.
1.- la funcion que reconoce que es texto o numero.
function xlsWriteCell($Row, $Col, $Value )
{
if(is_numeric($Value))
xlsWriteNumber($Row, $Co
hola a todos le hice unas cuantas mejoras al código del pana. Ahora decide solo si es un numero o texto. Ademas de reconocer tildes, ñ y demas caracteres especiales.
<?php
$nameFile = "ejemplo_excel.xls";
//header ("Expires: 0");
Hola, de casualidad se puede manejar pestañas o solapas o tabs del archivo exportado y en cada una de estas una información específica
hey esto es excelente!!!!!
Una sola pregunta alguien sabe como puedo cambiar el tamano y poner negrilla en la fuente???
gracias
Muchas gracias, es lo que necesitaba. muy facil, sencillo, la verdad no pense que fuera tan facil. de nuevo gracias.
Excelente, funciona a la perfección. Muchas gracias
Excelente, funciona a la perfección. Muchas gracias
Solo tengo un comentario o más bien una duda con este código eh intentado expotar cadenas largas desde un base de datos y no las muestra
LE ENSALYARE HABER QUE SUCEDE....AUNQUE PREFERIBLE TRADUCIRLO....SI SE PUEDE
no habra uno por hay en español mijo!!!???
no habra uno por hay en español mijo!!!???
Genial tu codigo !! muchas gracias !
Necesitab hacer un archivo msg.
A versi puedo aprovechar este código.
muy bueno, muchas gracias!
matate hijo de tu mama
Esta bien el ejemplo lo que falataria es saber en donde va o como lo llamo para utlizar tantas funciones.
Gracias por compartilo
Pues hice unas pruebas y la diferencia es que sin el header expuesto antes lo puedes abrir en la misma ventana de Internet Explorer y con el header lo manda a abrir en una ventana nueva de excel :P
perverso, solo en esto tengo una duda:
header ("Content-Disposition: attachment; filename=prueba.xls" );
le dedo cambiar el filename? para que sirve?
Muy bueno! Funciono!!! Ahora solo resta agregarle un poco de formato!