Bueno, hace ya varios posts, publique algo acerca de como crear archivos PDF’s desde codigo PHP, algo que sin dudo me imagino que a muchos le ha sido de gran utilidad. Ahora les traigo algunas clases para crear archivos excel a partir de codigo PHP, aunque algunos dirán que se puede hacer con solo agregar el encabezado correcto, pero es muy limitado los recursos que se puede hacer con esta forma.
Para los que no saben como hacer los excel con solo agregar un encabezado aqui les dejo este:
// Funciona solo en Linux
if(strpos($_SERVER['HTTP_USER_AGENT'],"Linux") !== FALSE)
{
header('Content-type: application/vnd.ms-excel');
header("Pragma: no-cache");
header("Expires: 0");
header("Content-disposition: attachment; filename=nombre_archivo.xlsx");
}
// Funciona solo en Windows
else if (strpos($_SERVER['HTTP_USER_AGENT'],"Windows") !== FALSE)
{
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=nombre_archivo.xls");
header("Content-Transfer-Encoding: binary ");
}
Con este encabezado ustedes pueden forzar al navegador a que descargue el codigo html que se genero y lo devuelva como un archivo de excel. Bueno esto no tiene gran ciencia.
Ahora lo interesante es que existen algunas clases o librerias que proporcionan muchas funcionalidades de las cuales no se puede obtener con solo colocar el encabezado, como por ejemplo colocar una imagen al archivo excel. Bueno les listo las clases que he utilizado de la mejor, segun un punto personal, a la que menos me a gustado:
- PHPExcel: es una pequeña librería muy robusta que nos provee de las clases php necesarias tanto para crear como para leer ficheros Excel desde sin demasiadas complicaciones, sin duda, en lo personal, la mejor. Tiene muy buena documentacion y ejemplos que ilustran el funcionamiento de esta excelente libreria.
- MS-Excel Stream Handler: Para ser sinceros esta no la he testeado.
- PHP Excel Reader: Muy util.
- reportes-php-excel: Derivada de php_writeexcel.
- php_writeexcel: La mas sencilla de todas
Bueno ahi les dejo el abanico de posibilidades para que elijan cual les conviene mas según sus necesidades, no coloque ejemplos de como utilizarlas porque en las paginas oficiales esta todo un arsenal de ejemplos y codigos, ademas de manual de referencia, los cuales pueden consultar y explicar mejor el funcionamiento de la libreria.
wey kmo sabesssssssssssssssssssssssssssssssssssss
la netaaaaaaaaaaaa
Gracias por el material
Hola muy bueno el post, yo estoy trabajando con esta libreria pero al generar el archivo de excel desde mi servidor Linux al browser el archivo se daña y me salen caracteres como esto: ÐÏࡱá;þÿ
ÌÑB°=¼%r8X”1ÈArial1È
Tahoma1ÈTahoma1ܼTahoma1ð
Tahoma1 Tahoma1Œ
Tahoma1xTahoma1x
Tahoma1´¼Arial1Œ¼Tahoma1ȼTahoma1ŒTahoma1¼Tahoma1Tahoma1€Tahoma1dTahoma1jTahoma1 ¼Tahoma1,Monotype Sorts1ð¼Tahoma1ܼTahoma1ðTahoma1ȼTahoma1x¼Tahoma1xTahoma1´Tahoma1´¼Tahoma1nTahoma16ŒLucida Sans Unicode1ŒTahoma1
Tahoma1x¼Tahoma1ÜTahoma16xLucida Sans Unicode16ŒLucida Sans Unicode1n
Tahoma¤GENERALe¥0_(* #,##0.00_);_(* \(#,##0.00\);_(* \-??_);_(@_)Y¦*_(* #,##0_);_(* \(#,##0\);_(* \-??_);_(@_)U§(_(* #,##0_);_(* \(#,##0\);_(* \-_);_(@_)a¨._(* #,##0.0_);_(* \(#,##0.0\);_(* \-??_);_(@_)©
DD/MM/YYYYà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ Ĉà¤õÿ ĈठĈठ̈ठ̈ठ̈औ̈ठ̈औ̈औ̈ठ̈औ̈ठ̈औ̈ठ̈ठ̈ठ̈à
Y al guardar me guarda en mi PC como extension csv, mas en el servidor lo guarda perfecto xls, he probado de todo y no doy con el problema
Highly energetic post, I enjoyed that bit. Will there be a
part 2?
I was curious if you ever thought of changing the page layout of
your website? Its very well written; I love what youve got
to say. But maybe you could a little more in the way of content so people
could connect with it better. Youve got an awful lot of text for
only having 1 or two images. Maybe you could space it out
better?