Crear documentos de Excel con PHP
Comparte este post:
En un pequeño Sistema de Fichas para COFOPRI (Chiclayo), ya tenía el reporte en Formato PDF pero se requería en formato XLS de Excel asi que empecé la busqueda de información primero con el tío Google. Y en unos segundos ya estaba viendo como hacer esto; por lo visto no era el primero que necesitaba a pedido del jefe usar este formato propietario. Pero entre tantas soluciones busque la mejor y encontré una que me parecía sencilla y fácil asi que utilicé esa, se trata sólo de pasarle cabeceras al archivo:
header(”Content-type: application/vnd.ms-excel”);
header(”Content-Disposition: attachment; filename=excel.xls”);
Y los datos formateados en una Tabla HTML y listo.
Ahí les dejo un ejemplo sencillo de cómo debería ser, saludos.
<?php
header(”Content-type: application/vnd.ms-excel”);
header(”Content-Disposition: attachment; filename=excel.xls”);
// … pasos de conexióna la BD y demás
//Logo
$logo = “http://www.tuwebaqui.com/imagenes/logocofopri.gif“;
$date = date(”d/m/Y”);
$time = date(”H:m:s”);
//Tu sentencia SQL
$sql = “SELECT …”
$rs = mysql_query($sql,$link) or die(mysql_error($link) . “<br>$sql”);
$campos = mysql_num_fields($rs);
$filas = mysql_num_rows($rs);
$temp=”";
?>
<table border=”0″>
<tr>
<th align=”left”><img src=”<?=$logo?>”></th>
</tr>
<tr>
<th> </th>
<th> </th>
<th> </th>
<th align=”right” bgcolor=”#CCCCCC”>Fecha: </th>
<th align=”left”><?=$date?></th>
</tr>
<tr></tr>
</table>
<table border=”1″>
<tr>
<th bgcolor=”#CCCCCC”><?=”ETAPA_SECTOR”?></th>
<th bgcolor=”#CCCCCC”><?=”COD_PREDIO”?></th>
<th bgcolor=”#CCCCCC”><?=”MANZANA”?></th>
<th bgcolor=”#CCCCCC”><?=”LOTE”?></th>
<th bgcolor=”#CCCCCC”><?=”DERIVADO A”?></th>
</tr>
<?
while($datos = mysql_fetch_row($rs)){ ?>
<tr>
<td align=”left”><?=$datos[10]?></td>
<td align=”left”><?=$datos[0]?></td>
<td align=”left”><?=$datos[1]?></td>
<td align=”left”><?=$datos[2]?></td>
<td align=”left”><?=$datos[9]?></td>
</tr>
<?
}
?>
<tr>
<th align=”left” bgcolor=”#CCCCCC”><?=”Total Fichas”?></th>
<th align=”left”><?=$filas?></th>
<th> </th>
<th align=”right” bgcolor=”#CCCCCC”>Hora:</th>
<th align=”left”><?=$time?></th>
</tr>
</table>
If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!




Mayo 9th, 2007 at 4:57 PM
Lo probaste en firefox y netscape o solo en IE ?????,
Mayo 9th, 2007 at 5:12 PM
Lo he probado en los dos ya que estoy tratando de que los trabajadores de COFOPRI Chiclayo tb usen Mozilla Firefox ya que están acostumbrados a usar IE, pero algunos ya le han visto los beneficios a Firefox. Saludos
Mayo 22nd, 2007 at 3:41 PM
hmmm esto esta interesante, lo probare en estos dias, gracias Joshe, buen post
Julio 31st, 2007 at 1:33 PM
Me salen estos errores, porqué? :
Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\computoacademico\printexcel.php:6) in C:\AppServ\www\computoacademico\printexcel.php on line 9
Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\computoacademico\printexcel.php:6) in C:\AppServ\www\computoacademico\printexcel.php on line 10
Julio 31st, 2007 at 2:01 PM
ok, ya vi porqué lo del header, es que es lo que tengo que poner al principio … pero entonces, dónde se guarda el archivo “excel.xls”???
porque lo busco y no está. …
cómo es eso?
gracias de antemano
Agosto 1st, 2007 at 10:14 PM
Es sencillo simplemente colocas las cabeceras que te indico en el post, un resultado de alguna consulta a tu BD y muestras estos datos en una simple tabla HTML, luego te debe de pedir si quieres descargar el archivo de excel o abirlo.
Saludos
Noviembre 28th, 2007 at 2:40 PM
Holas.
Oye es normal que se demore mucho??
Porque cuando cargo la página de vista (sin exportar) carga casi de inmediato, pero cuando mando a exportar a través de un link a una copia con los headers, se demora un siglo en cargar…a pesar que al final retorne el archivo excel toma demasiado tiempo en completar la instrucción…
Habrá algun método más rápido??
Gracias
Marzo 17th, 2008 at 2:40 PM
Hola! No se si me puedas ayudar en mi problema pero te lo agradecería mucho. Los archivos en excel tienen varias hojas, cómo haría para indicar en el código que la exportación de datos se haga en la hoja 1 por ejemplo o que se creen varias hojas?
Ya hice la exportación de datos de postgres a excel y me funciona bien, pero necesito que sea en una hoja,o q se creen varias hojas en el mismo archivo.
Gracias
Abril 3rd, 2008 at 9:36 AM
hola he probado el codigo esta chvr pero cuando lo subo un servido y lo trao de descargar el archivo me sale un advertencia,esa linea amarilla que tengo qeu descargar y permitir,lo activo pero no logro la descarga,tambien lo probe en mozilla ahi no me dio problema solo con el IE,espero tu ayuda,sera por la cabezera..? o no ..
atte:Jhaz
Abril 3rd, 2008 at 10:35 AM
bueno ya se que era mi error al trabajar con frames, me daba error, cree otra tabla y llamo la original:
exportar
–
lo llamo a otra pagina para no tener problema,el codigo funciona chv y gracias,me ayudo para exportar una tabla con mas de 10000 registros,ahora una duda como haria para exportar solo un resultado de una busqueda que yo haga,asi sea 10 resultado anda mas.ate:jhaz
Abril 3rd, 2008 at 10:38 AM
bueno ya se que era mi error al trabajar con frames, me daba error, cree otra tabla y llamo la original:
exportar
–y ahi pornga la ruta con lo llamo a otra pagina para no tener problema,el codigo funciona chv y gracias,me ayudo para exportar una tabla con mas de 10000 registros,ahora una duda como haria para exportar solo un resultado de una busqueda que yo haga,asi sea 10 resultado anda mas.ate:jhaz