SprintDevelop.com - Diseño y desarrollo web - Diseño, desarrollo web,Aplicaciones Móviles, TabletasSprintDevelop.com - Diseño y desarrollo web
Mostrando Codigo - Php
Code

Php - Exportar php a un archivo Excel

Códigos Php

El ejemplo muestra como exportariamos un archivo de php a excel. Puede ser muy util para obtener datos de una base de datos y ofrecerla a nuestros visitantes para descarga.
Visitas: 280,562 - 02/07/2005 12:06:38
DemoNO CONTIENE ARCHIVO DESCARGABLEComentario
EXPLICACION

Mediante header('Content-type: application/vnd.ms-excel'); php se encarga de crear el archvo excel

En la demo del script se muestra como una simple tabla html para que el codigo funcione correctamente la no debe de haber ningun html antes del codigo php.

CODIGO
Codigo probado en ChromeCodigo probado en Mozilla FirefoxCodigo probado en Internet Explorer 7+Codigo probado en OperaCodigo probado en Safari


// Codigo ofrecido por Tutores.org

  1. <?php
  2. header('Content-type: application/vnd.ms-excel');
  3. header("Content-Disposition: attachment; filename=archivo.xls");
  4. header("Pragma: no-cache");
  5. header("Expires: 0");
  6. echo "<table border=1> ";
  7. echo "<tr> ";
  8. echo "<th>Nombre</th> ";
  9. echo "<th>Email</th> ";
  10. echo "</tr> ";
  11. echo "<tr> ";
  12. echo "<td><font color=green>Manuel Gomez</font></td> ";
  13. echo "<td>manuel@gomez.com</td> ";
  14. echo "</tr> ";
  15. echo "<tr> ";
  16. echo "<td><font color=blue>Pago gomez</font></td> ";
  17. echo "<td>paco@gomez.com</td> ";
  18. echo "</tr> ";
  19. echo "</table> ";
  20. ?>



ENLACE AL CODIGO
Si quieres enlazar desde tu pagina a este codigo
<!-- Inicio enlace Tutores.org -->
<a title="Tutores.org - Exportar php a un archivo Excel" href="http://www.tutores.org/codigo/1512/" target="_blank">Exportar php a un archivo Excel</a>
<!-- Final enlace Tutores.org -->
COMENTARIOS
Comentario usuario
rafaelito
5 5
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");

Estas son las 4 lines necesarias para que cree un archivo excel, el resto de la tabla es lo que va a contener le archivo nuevo de excel.
Comentario usuario
francisco
2 5
hola

es de utilidad tu codigo pero al momento de ejecutarlo me manda el siguiente error

Warning: Cannot add header information - headers already sent by (output started at c:rchivos de programaeasyphpwww ranciscoexcel.php:10) in c:rchivos de programaeasyphpwww ranciscoexcel.php on line 11

Warning: Cannot add header information - headers already sent by (output started at c:rchivos de programaeasyphpwww ranciscoexcel.php:10) in c:rchivos de programaeasyphpwww ranciscoexcel.php on line 12

Warning: Cannot add header information - headers already sent by (output started at c:rchivos de programaeasyphpwww ranciscoexcel.php:10) in c:rchivos de programaeasyphpwww ranciscoexcel.php on line 13

Warning: Cannot add header information - headers already sent by (output started at c:rchivos de programaeasyphpwww ranciscoexcel.php:10) in c:rchivos de programaeasyphpwww ranciscoexcel.php on line 14


me podrias decir como puedo solicionar esto

gracias
Comentario usuario
asgyo
4 5
Hola!

Francisco, creo que te sale eso por que no lo pones (las lineas headers) lo primero de la página.

Mi problema es que no se como hacer para que sólo me salga una parte de la pagina ya que tengo unos textbox y unos combobox que no quiero que me salgan.

Gracias!
Comentario usuario
01-10-2007 08:23:43
5 5
Es excelente, funciona para mis nbecesidades programaticas, es muy buena la logica, despues es solamente cambia algunos parametros si es word o pdf, gracias
Comentario usuario
octavio1982
1 5
Hola, utilice tu codigo y si me funciono. Queria pedirte de favor si me pudieras explicar que hace cada uno de los headers que agregas:
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");

Solo por cultura general, esque a mi me gusta saber el porque de las cosas.

Gracias
Comentario usuario
15/09/2004 22.54.59
3 5
jala de maravilla, sin problemas y de forma muy sencilla
Comentario usuario
hilo
1 5
el primer header como le cambias para el pdf
gracias
Comentario usuario
avcastillo
4 5
Muchas gracias por el codigo, esta excelente!! ... funciona de maravilla!
Comentario usuario
12-05-2010 19:13:46
5 5
holas me aparecen los siguientes errores


Warning: Cannot modify header information - headers already sent by (output started at C:AppServwwwphpreportsprueba2.php:2) in C:AppServwwwphpreportsprueba2.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at C:AppServwwwphpreportsprueba2.php:2) in C:AppServwwwphpreportsprueba2.php on line 4
Warning: Cannot modify header information - headers already sent by (output started at C:AppServwwwphpreportsprueba2.php:2) in C:AppServwwwphpreportsprueba2.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at C:AppServwwwphpreportsprueba2.php:2) in C:AppServwwwphpreportsprueba2.php on line 6

copie el codigo tal cual con sus headers hay que activar algo en el php para que funcione con xls ?
o con este codigo deberia funcionarme automaticamente ?
saludos sladius
Comentario usuario
12-05-2010 19:13:46
4 5
mi problema lo solucione colocandole comillas simples en header("Content-Disposition: attachment; filename=archivo.xls");
con las dobles no me peskaba :3
Comentario usuario
21-04-2008 17:49:54
2 5
el codigo esta bien solo que tienesw que poner las directivas de php, de la siquiente forma:
<?php
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");
?>
//seguir con el codigo HTML o PHP

<html>
<title>
</title>
<body>
</body>
</html>
Comentario usuario
15-07-2008 21:18:55
4 5
BUENAS TARDES,
ME ACABAN DE SALVAR LA VIDA CON ESE CODIGO....CHAO

muchas gracias
sandra y jenny!!
Comentario usuario
08/01/2007 18.10.30
2 5
Para texto esta ok,
como exporto ademas de texto, una imagen almacenada en un campo blob de mysql a excel y que se vea como imagen en excel= gracias
Comentario usuario
27-05-2008 19:33:51
3 5
hola en mi caso lo q ocurre es esto ya exporto los datos de las consultas realizadas en mi base de datos, sin embrago me sigue dando los errores con los headers... de verdad no entiendo muy bien su funcion...

sera que me podrian decir su funcionalidad...!!!
es urgente!!! para mi T.E.G que esta muy proximo
Comentario usuario
canvoc
1 5
El script es muy bueno, como ya se menciono si es indispensable (al menos en mi caso asi fue) que en las lineas que se crea el excel (headers) cambiar de comillas dobles ("") a simples ('') para evitar warnings
Comentario usuario
01/05/2004 16.50.01
2 5
Hola

Yo hice esto mismo, pero ahora necesito agregar imagenes y al agregarlas el excel no muestra las fotos. ¿Alguien sabe como solucionarlo?
Comentario usuario
elecepe
2 5
El código funciona perfectamente, siempre y cuando se le cambien las comillas dobles por simples como ya dijeron. Pregunto, alguien sabe por que en Explorer no ?
No hay ningun problema con FireFox.
Comentario usuario
CAIFANDARK
5 5
Muy Buen Script, y funciona de maravilla con las bases de datos, gracias a quien haya hecho el Post

Lo probe en iExplore y si funciono.


Gracias. :-)
Comentario usuario
jirux
2 5
Hola,
Para agregar imagenes basta con poner la url completa y no la uri relativa.
Esto es por ejemplo.
Si la imagen esta en una carpeta denominada img (Llamado: "img/MiImagen.jpg")
y el excel se llama asi:
http://localhost/exportar.php

Al llamar a la imagen deben poner:

"http://localhost/img/MiImagen.jpg"
(Esto tambien aplica con los css)
Igualmente los headers deben ir al inicio de todo. Asi evitan esos warnings.
Finalmente tengo un problema con el formato de los archivos.
¿Saben de alguna forma en que no aparezcan habilitados los href?. Eso.
Gracias.
Comentario usuario
03-01-2008 17:02:25
4 5
Hola tengo un problema, al exportar mi archivo excel me lo genera muy raro, me pone todo en una sola celda y algo como esto: a:15:{i:0;a:4:{s:5:"clave";s:1:"4";s:6:"poliza";s:6:"viajes"......

Alguien me puede ayudar??
Comentario usuario
Sin definir
1 5
hola tengo un problema hice una consulta a una base de datos y los resultados me aparecen en pantalla en forma de tabla y quiero exportarlos a excel y utilice este codigo pero me manda un mensaje de que no puede leer el archivo, ademas tengo una duda en donde se le indica el nombre de lo que va abrir en excel que le pongo para que exporte la tabla que esta en pantalla header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=Farmacia.xls");
ojala me ayuden me urge mil
Comentario usuario
Sandrich
3 5
Gracias a sus respuestas ya terminamos nuestro proyecto mi amiga Are y yo jaja hicimos una coneccion con php a una base de datos oracle, exportamos los resultados a excel con su respectiva imagen y formato gracias
Comentario usuario
PHP Beginner
2 5
Para los que usan internet explorer deben agregar estas lineas de codigo para evitar los mensajes de warning:

<?php
ob_start("ob_gzhandler");
.
.Aqui va todo el codigo de la pagina html o php
.
ob_end_flush();
?>

Esas lineas lo que hacen es evitar que el header se modifique hasta que se ejecute todo el codigo de la pagina...Espero les sirva...
Comentario usuario
11/08/2005 23.03.51
3 5
hola quiero saber como desarrollo un script pero que solo me mande parte del formaulario a excel no todo el pantallazo
Comentario usuario
RobertoMG
2 5
hey amigo gracias si funciona super bien ahora tengo una duda no se si me puedan ayudar pero me gustria saber si como hacer para compaginar o colocar mas informacion en otras pagina del documento xls.

osea si se fijan excel permite crear hojas o paginas dentro del mismo documento, apues a eso me refiero si alguien sabe como hacer eso me explican gracias de ante mano por su tiempo...

saludes.
Comentario usuario
21-11-2007 14:50:03
5 5
hola, y si es de una consulta dinamica, es posible usar esto mismo??
Comentario usuario
Martha Suárez
2 5
Hola a todos....Tengo un problema que no he podido solucionar, necesito que el codigo que exporta a Word o Excel (con los header) se ejecute cuando hagan click en un boton o imagen, me explico, quiero que carge completamente la pagina y haya un boton o algo que diga "exportar" y cuando hagan click ahi si realice el proceso de exportación.Mil gracias por su colaboraciónMartha
Comentario usuario
Aitor
5 5
Muchísimas gracias. Estaba buscando algo así sencillito, me estaba volviendo loco con otras soluciones que he encontrado en la red.A mí me sirve, es para ir volcando resultados de sql a excel (es una posibilidad que le quiero dejar al usuario). ¿Alguien tiene algo hecho por ahí o está por hacerlo?
Comentario usuario
tecnisystems
3 5
Muchas gracias por el código, funciona de maravillas, pero tengo un pequeño problema... ¿alguien sabe como evitar que salga basura en los resultados en vez de "ñ" y acentos?

La BD esta codificada en UTF-8, y he modificado el header para esto:

header("Content-type: application/vnd.ms-excel;charset=utf-8");

Pero no funciona, sigue arrojando basura.
¿Alguna idea?
Gracias!
Comentario usuario
tecnisystems
1 5
Se me olvido decir que hago un par de consultas a BD PostgreSQL dentro del codigo PHP y luego muestro los resultados con echo en las celdas de la tabla.
Comentario usuario
nicolarsx
2 5
Muchas gracias por la info;me ha servido de mucho aunque dejo dos preguntas:Como hago para que los caracteres especiales se vean correctamente (ejemplo á, ñ, ü, etc.).Como puedo darle el estilo con un archivo css?? ya que al incorporarlo en el head de la página me sale un error que dice que no puede encontrar C:/Temp/.../archivo.cssEstas preguntas son para completar más todavia este hilo, que está super bien.
Comentario usuario
11-07-2008 23:02:58
4 5
He usado varias veces este codigo sin problemas, incluso lo uso para exportar a word que es tal cual solo cambiando unas cosas

header('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment; filename=archivo.doc");
header("Pragma: no-cache");
header("Expires: 0");

Pero ahora me surgio un problema, exporto a excel y al abrirlo me dice que el archivo esta dañado y no se puede abrir...

a alguien mas le ha pasado? como lo han solucionado.

Saludos
Comentario usuario
danidan182
2 5
Fenómeno este código, me ha funcionado correctamente. Simplemente os pongo mi código para que veais. La diferencia es que yo guardo toda la tabla en una variable, que recibe de otra página. Y utilizo el utf8_decode para que no me salgan caracteres raros.

<?php
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");
$tabla=$_POST['tabla'];
$tabla=utf8_decode($tabla);
echo $tabla;
?>

Un saludo
Comentario usuario
19/08/2004 21.24.58
2 5
Hola, tengo un problema, cuando envío un numero a una celda en esta se muestra como una fecha, alguien sabe a que es debido?
Ademas me gustaría saber si hay alguna instruccion para cambiar el ancho de las celdas y lo de ajustar texto a la celda.
Gracias
Comentario usuario
juankysmith
3 5
¿Alguna solución que sea válida también para Mozilla?
Comentario usuario
jpalacio
2 5
que maravilloso codigo
Comentario usuario
Robertho
1 5
Me funcionó bien el codigo, pero mi problema es que AL HACER LA CONSULTA MI CODIGO MUESTRA 10 registros por pagina y al exportar solo se exportan los 10 primeros de la primera pagina.COMO PUEDO EXPORTAR LA PAGINA SELECCIONADA O TODAS?
Comentario usuario
Pucky
5 5
chido codigo funciona bien pero tengo una pregunta
¿como puedo al exportal el archivo agregarle a la hoja de excel cabeceras, pies de pagina,iconos, titulos de reporte etc... esas cosas si alguien me pudiera ayudar o mandarme a un post donde se plante esta situacion? gracias
Comentario usuario
makamy
2 5
Hola.. tengo una duda como hago pra que me xporte con los tipos de datos que tengo en mi DB.. o por ejemplo que antes de cada entero me imprimaa una cantidad determinada de deceros... es necesario hacerlo desde codigo para no hacerlo manual... gracias!
Comentario usuario
28-12-2009 15:41:38
5 5
Mluy bueno el codigo sencillo y facil de usar, me ha funcionado bien, pero el unic problema e que al abrir el archivo .xls sale una ventana emergente que me dice que el archivo esta en otro formato o que puede estar danado y pregunta que si deseo continuar o no?, y el nombre del archivo me aparece con un numero entre corchetes cuadrados (ej: reporte_excel[2].xls y el nombre real del archivo es reporte_excel.xls), le agradezco al que me pueda ayudar con este problema.
Comentario usuario
aosorio
1 5
HOla para que no te arroge basura en el excel en ves de esta linea header("Content-type: application/vnd.ms-excel;charset=utf-8");

debes dejarlo asi
header("Content-type: application/vnd.ms-excel;charset=latin");

Porque esto porque asi lo interpreta el excel y cuando biene d ela base de datos biene con utf-8

solo eso gracis saludos asi lo resolvi yo de echo yo hice unset latin
aosorio
ser ono ser
Comentario usuario
Glimachi
4 5
Muy buen Script, y yo que crei que las cabeceras eran solo para las fotos, jejejeej, Agradecerles por el muy buen aporte, me resumio en seguida mi trabajo, ya que de hecho estaba utilizando phpexcel2007, y me bue muy lento en el proceso, ademas que no podia insertar palabras con acento, bueno en fin, es otra historia, pero que bien me ahorro tiempo este script de Ustede. GraciaS.!
Comentario usuario
03-01-2008 19:15:42
5 5
hola a todos, me gustaria saber si hay una forma de pasarlo a acees, y como puedeo dar formato a la hoja de excel para ponerle formato a las cabeceras gracais de anteamo. aver si me responden a mi email

saavedraphp(alrroba)gmail
Comentario usuario
chava64mx
1 5
Oye muchisimas gracias, yo soy de los que ha usado el código pero me sigue mandando caracteres extraños. ya le puese charset latin y utf-8 pero nada.

Yo estoy trabajando con un miniserver en mandriva 2007.1 y mis clientes son xp con office 2000 y 2003. Si me exporta en los xps con imagenes, pero no el openoffice de mandriva ademas en los 2 no me reconoce los caracteres utf-8 de my DB mysql
Comentario usuario
porri
3 5
juas a mi me salen en blanco los excel.alquien sabe porque gracias
Comentario usuario
tesito
2 5
Muchas gracias!!sale super bién el archivo excel con consultas sql.
Comentario usuario
02-12-2007 19:16:15
4 5
Funciona muy bien, con una excepción: me inserta una fila en blanco luego de cada fila de datos.
Las filas de datos las obtengo con un while de un recordset en php.
No tengo ningún <tr> demás...
Saber porque puede ser ??
Comentario usuario
iorien
3 5
Y dado este código, como haríamos ahora para crear distintas hojas dentro del excel creado?
Comentario usuario
08/11/2004 18.01.55
2 5
saludos esta muy bueno este tema, pero queria saber como hacerlo de forma dinamica es decir que se realice una consulta sobre una base de datos y que luego se exporte a un archivo excel, fuera bueno bueno por que este esta de forma estatica.
Comentario usuario
30-06-2009 18:00:19
2 5
Hola.
trabaje con el codigo para trasladar información a excel, se abre el archivo en excel, pero no ecribe la información.
Comentario usuario
domizi
2 5
para los que quieren tablas dinamicas, tienen que usar jquery, es muy facil de implementar: webintenta.com/exportar-tablas-html-a-excel-con-php-y-jquery.html#comments

ahora, yo tengo un problema, no quiero mostrar 2 datos de mi tabla, como le hago?
Comentario usuario
fabio
4 5
todo es perfecto pero el problema es que cuando abro el archivo en excel me sale sin las lineas de division, es cierto que puedo ponderle bordes a la tabla y se exporta bien, pero la cuadricula normal de excel no se muestra, alguien sabe como corregir esto
Comentario usuario
08/11/2004 18.01.55
5 5
como hago para unir dos celdas o mas en algun punto, osea que en alguna parte (cualquiera) se vean dos celdas unidas en el archivo de salida...? gracias...
Comentario usuario
wtigselema
5 5
tu codigo exelete necesito insertar un grafico en excel me podrias ayudar con el codigo completo para insertarlo gracias
Comentario usuario
16-02-2010 17:14:35
1 5
Hola, necesito ayuda, ya cree un reporte que tenia en PHP en formato WORD con texto, tablas e imagenes, pero a ese documento de WORD quiero agregarle presentacion con ENCABEZADO y PIE DE PAGINA con PAGINACION...........Como hago eso?

HELP ME !!..........ME URGE !!

Mi correo RVIVERO@HOTMAIL.COM...........GRACIAS !!
Comentario usuario
rls
2 5
funciono perfecto!!

ponía las cabeceras debajo del html y cuando había un nº grande de registros es cuando me fallaba si había pocos me descargaba bien el archivo xls, pero ordenándolo bien como nos has recomendado todo perfecto.
Comentario usuario
01/05/2004 16.50.01
5 5
Compañeros,

Luego ejecutar la pagina me pide guardar o abrir el archivo, mi pregunta es ¿por luego de hacer esta accion vuelve a ejeutarse nuevamente(como si estuviera dentro de un bucle infinito)?, tengo que ponerle cancel para q ya no ejecute

Gracias,
Comentario usuario
01/05/2004 16.50.01
1 5
Por lo demas una muy buena ayuda para mis proyectos.
Comentario usuario
23/10/2003 10.47.59
2 5
En php. los datos deben ser ya utf8. Pueden usar la función utf8_decode. Agregar charset en el header no funciona en este caso
Comentario usuario
26-08-2009 21:50:29
2 5
HOLA gente!! .. como puedo hacer para que exporte la info que esta dentro de una tabla (mysql)
GRACIAS
Comentario usuario
locuas
4 5
les cuento que tengo el mismo problema me sale los siguientes errores:
Warning: Cannot modify header information - headers already sent by (output started at :AppServphpreportsprueba2.php:2) in C:AppServphpreportsprueba2.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at C:AppServphpreportsprueba2.php:2) in C:AppServphpreportsprueba2.php on line 4
Warning: Cannot modify header information - headers already sent by (output started at C:AppServphpreportsprueba2.php:2) in C:AppServphpreportsprueba2.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at C:AppServphpreportsprueba2.php:2) in C:AppServphpreportsprueba2.php on line 6
ya hice las modificaciones pretinentes que explicaron pero nada sucede....help me please
Comentario usuario
yomero
1 5
para los que le salen los warnings de los headers, deben de asegurarse de que el script no escriba nada, antes de que se modifiquen los headers, un error común es que se de un enter o un espacio antes del primer <?php y es lo que manda los warnings, si hacen su script los primeros caracteres que tenga sean <?php y que no escriba nada antes de las funciones header les debe de funcionar

Saludos
Comentario usuario
27-06-2008 22:58:53
4 5
Excelente codigo, de facil uso y que sirve una enormidad.
me ayudo mucho

Muchas Gracias....
Comentario usuario
luz dary tobon
3 5
Hola quisiera saber como modifico el codigop ra que no me deje una lina en blanco después de cada registro..
Comentario usuario
23-11-2009 18:04:52
5 5
hola soy nuevo en php y no se como enviar una imagen exportarlo desde php a excell
Comentario usuario
23/09/2005 22.53.03
4 5
Hola, esta excelente el codigo, pero me gustaria saber como hacer para que lo guarde por defecto en mi disco duro sin mostrarlo en el navegaror. Muchas gracias
Comentario usuario
Cristian
4 5
HOla a todos necesito si me pueden pasar un codigo que exporte consultas a un excel desde una base de datos (MYSQL),


Muchas gracias
Comentario usuario
Mpolania
1 5
Excelente el código, todo me funciono perfecto,, quisiera ahora saber como puedo hacer lo contrario,, importar un archivo excel capturar todos sus registros e insertarlos en la B.D. manejo oracle 9.

Les agradecería su información
Comentario usuario
danielwish
3 5
Buen Codigo.. pero solo funciona automaticamente al ingresar a la pagina...
Q pasa si en mi pagina tengo mas de 2 tablas?
y si no quiero q se genere al ingresar sino con un boton? existe algo sencillo como este codigo para este caso ?
Comentario usuario
SoDark
3 5
Bueno estaba buscando como generar un XLS desde la SQL para sacar listados actualizados al momento, y despues de estar revisando unas cuantas formas la mas sencilla y efectiva me ha parecido esta.

Si quieren ver el resultado les dejo el link:

driverlandia.com/sql_to_xls.php
Comentario usuario
ankrita
2 5
Hola: espero que me puedan ayudar, reulta que tengo mi codigo asi, pero a la hora de que kiero exportar, me trata de exportar el archivo en el que estoy trabajando y me cancela la descarga, alguien me podria decir que para con esto
Comentario usuario
24/10/2003 22.12.49
4 5
funciona de maravilla, pero la pregunta es, como puedo darle margenes y que me imprima la página en horizontal.

salu2
Comentario usuario
paolina8710
2 5
hola, este apunte de exportar a excel me parece de maravilla solo que tengo un inconveniente. al abrir el excel no aparecen los datos de la consulta que se realiza a la base de datos. Porfa, necesito mucho de su ayuda. gracias me gustaria un ejemplo.
Comentario usuario
El charro de Colima
5 5
Hola, disculpen, ¿donde genera el archivo en excel?. No lo puedo ver. Disculpen las molestias.
Comentario usuario
aweba
1 5
Excelente articulo. Gracias a él y a los comentarios, en especial el comentario de danidan182; logre obtener un excel sin problemas a partir de una consulta a mi base de datos. Me sorprendio que no me diera ningun problema xD (sera la costumbre de lidiar con las cosas que son nuevas)
Comentario usuario
14-04-2009 17:20:02
1 5
Hola!

estoy ejecutando el codigo pero no me esta creando el archivo...donde queda el erchivo??...he intenatado colocando c:carpetaarchivo.xls y nada...no se si es porque estoy trabajando con Vista y Excel 2007. Agradezco su colaboracion!!
Comentario usuario
aimar
1 5
hola Sandra:

Mira no importa si tienes vista u office 2007 en ambos casos el codigo funciona a la perfección, y para colocar el nombre del archivo solo es header("Content-Disposition: attachment; filename=nombre.xls"); y el archivo se encuentra en donde tu colocas tus archivos que descargas me parece que por default es en el escritorio pero a veces nosotros configuramos otra carpeta para los archivos descargados.
Espero haber podido ayudarte...
Comentario usuario
19-09-2009 15:59:25
2 5
hola chicos...

El codigo me ha ayudado muchisimo gracias por el aporte.. solo una preguntilla lo que pasa es que cuando abro mi archivo de excel me aparec un mensaje que dice que el archivo puede estar dañado o que el formato no es el correcto y siempre me pregunta que si deseo abrirlo o cancelarlo.. obviamente acepto y me muestra mi consulta y todo perfecto, solo quiero saber el porque del mensaje que sale. gracias de antemano..
Comentario usuario
mfazcue
5 5
Para responderle a "Lucho".

El problema que te da al abrir el archivo excel, seguramente sea porque el tiene instalado el office 2007 (que genera xlsx) y lo que genera esté código es para office (hasta el 2003, xls).

Espero que sea una respuesta válida. Salu2
Comentario usuario
ender
5 5
En sí lo que se descarga es puro código html, aunque le forzamos para que se trate como un excel. Si aparecen líneas en blanco. Revisar el código en los bucles ya que el problema residirá a un 90% en errores al cerrar y abrir filas. Se descarga el html de una página, o sea que si tenemos una página con dos tablas y sólo queremos descargar una parte, propongo colocar por ejemplo un enlace en target _blank a una página a la que pasaremos parámetro por get y en ella descargamos solo la zona deseada.
Comentario usuario
31-12-2007 10:37:04
5 5
Valla no crei que fuera tan sencillo... Con java se labora mas para hacerlo... bueno me gustaria conocer mas de como cambiar algunas otras propiedades de la .xls, Gracias por el codigo! corre perfecto!
Comentario usuario
04/04/2004 18.21.17
2 5
Nitido!!! Gracias por el aporte, esta supersencillo. pero tengo una consulta, porque al abrirlo dice: "El archivo que intenta abrir tiene otro formato que el especificado por la extension del archivo. compruebe que el archivo no este dañado y procede de un origen de confianza antes de abrirlo". Si alquien ha solucionado esto pues bienvenido el aporte.

Salu2 y gracias.
Comentario usuario
12/03/2006 16.01.17
1 5
buenas tardes mire tengo un pequeño problema estoy haciendo un sistema pero no se como almacenar la informacion el la bd estoy ttabajando con modelo vista controlador xajax y php a y postgres se lo agradeceria si me ayudan...
Comentario usuario
annya
3 5
Hola tengo problemas cuando genero el archivo sale q no puede acceder a la pagina donde tengo el codigo o q no esta disponible (pero si lo esta)...Estoy trabajando con https: sera ese el problema?
Comentario usuario
ObjetivoPHP
5 5
Dario
Te dice eso porque el archivo no es un excel puro (No tiene un formato binario de excel) en realidad es un html entonces te advierte.
Tengo una rutina que se llama deame3p que la podes bajar de sics.webcindario.com que genera archivos puros excel en base a la clase PHPExcel...
Comentario usuario
dibe777
5 5
Hola buen código. Pero necesito generar en un solo libro de Excel varias hojas. Con este código solo puedo manipular la primera hoja.
Saludos
Comentario usuario
ObjetivoPHP
1 5
dibe777
para eso ya debes de manejar alguna libreria como PHPExel que te permite cambiar de hoja entre otras cosas. Puedes bajartela de codeplex..
Saludos
Comentario usuario
15-07-2008 21:18:55
3 5
Holas:
A mi me abre en office 2007, pero en 2003 me sale en blanco, que podrá ser?

Saludos
Comentario usuario
03-01-2008 19:15:42
1 5
mi tabla no pasa por la url ayudenme por favor
Comentario usuario
zazu
5 5
Hola a todos, el codigo es muy util cuando trabajas con un formulario html, pero si lo que quieres transformar en un formulario html para generar excel como lo haces?es urgente por favor!gracias
Comentario usuario
03-03-2010 03:07:28
1 5
Excelente tu codigo, gracias, una sugerencia pueden combinar celdas tal y como lo hacen con las tablas en codigo HTML, yo ya lo probe
Comentario usuario
19-05-2010 22:09:46
4 5
Gracias por el código, funciona bien, pero, mi problema es que al exportar, se pierde el primer registro (el ZERO supongo) y me lista perfectamente todo lo demás. Adicionalmente me gustaría ponerle nombres a las columnas.
Comentario usuario
10-02-2009 15:20:33
3 5
excelente código funciona cuando se guarda con codificacion ANSI pero al guarda con codificacion UTF-8 me da los errores en la primeras líneas
Comentario usuario
laca laca
5 5
Para los que les aparece que el archivo de excel está dañado, en mi caso se solucionó quitando la línea session_start(); de mi código
Comentario usuario
dadalisoj
3 5
a mi no me marca error y tampoco me lo genera, tiene que ver que uso servidor apache2?
alguien me prodria decir que hacer
Comentario usuario
c_alcayaga
2 5
Gracias por el post.
Comentario usuario
c_alcayaga
2 5
Amigos(as), aqui les dejo el codigo para exportar desde MySQL a Excel en PHP, espero les ayude.

<?php
ob_start("ob_gzhandler");

include ("funciones_sistema.php");

$comando = "SELECT `id` , `titulo` , `palabras` , `extracto`
FROM `busqueda`
WHERE `titulo` LIKE CONVERT( _utf8 '%tarjetas%'
USING latin1 )
COLLATE latin1_spanish_ci
AND `palabras` LIKE CONVERT( _utf8 '%tarjetas%'
USING latin1 )
COLLATE latin1_spanish_ci
AND `extracto` LIKE CONVERT( _utf8 '%tarjetas%'
USING latin1 )
COLLATE latin1_spanish_ci";
$resultado = comando_sql($comando);

header("Content-type: application/vnd.ms-excel;charset=latin");
header("Content-Disposition: attachment; filename=archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo "<table border=1> ";
echo "<tr> ";
echo "<th>ID</th> ";
echo "<th>TITULO</th> ";
echo "<th>PALABRAS</th> ";
echo "<th>EXTRACTO</th> ";
echo "</tr> ";
if ($resultado != false && mysql_num_rows($resultado) > 0)
{
while ( $datos = mysql_fetch_array($resultado, MYSQL_ASSOC))
{
echo "<tr> ";
echo "<td>".$datos["id"]."</td> ";
echo "<td>".$datos["titulo"]."</td> ";
echo "<td>".$datos["palabras"]."</td> ";
echo "<td>".$datos["extracto"]."</td> ";
echo "</tr> ";
}
}
else
{
echo "<tr> ";
echo "<th>0</th> ";
echo "<th>0</th> ";
echo "<th>0</th> ";
echo "<th>0</th> ";
echo "</tr> ";
}
echo "</table> ";
ob_end_flush();
?>

NOTA: El archivo funciones sistema tiene las funciones que uso por ejemplo comando_sql() para simplificar la coneccion y ejecucion del del comando SQL.

De todas maneras la pongo para que no se compliquen.

<?php
function comando_sql($query)
{
$coneccion_sql = mysql_connect ($servidor, $usuario, $psw);
if ( $coneccion_sql )
{
$coneccion_datos = mysql_select_db ($base);
if ($coneccion_datos)
{
$resultado = mysql_query ($query, $coneccion_sql);
if ( $resultado == false )
{
echo "Error SQL ".mysql_errno($coneccion_sql) . ": " . mysql_error($coneccion_sql) . "</br> ";
}
}
mysql_close ($coneccion_sql);
}

return($resultado);
}
?>
Comentario usuario
GARY
5 5
HOLA, TENGO UNA CONSULTA.
CADA VEZ QUE ABRO UN ARCHIVO DE EXCEL, ANTE QUE SE ABRA EL MISMO ME ENVIA COMO QUE ESTUVIERA ABRIENDO ALGUNA PAGINA EN INTERNET.
QUE DEBO HACER PARA QUE CADA VEZ QUE ABRA UN ARCHIVO DE EXCEL ESTO NO SUCEDA.
Comentario usuario
18-07-2007 14:01:05
3 5
pero como utilizo este codigo cuando hago una consulta y me muetsra los datos en pantalla, una vez ya vistos los datos ke esos me los amnde a excel, poruqe lo unico ke me hace es que todos los datos de la tabla me los manda a excel y necesito que solo la busqueda me la mande a excel como puedo hacer eso??? yo este codigfo lo mando llamar con un boton
le meti mi codigo de la consulta y como lo debe mostrar como tu pero no me hace nada con la consulta no la respeta me manda todos los datos de mi tabla d ela base de datos
saludos.
Comentario usuario
leidy
4 5
hola necesito una favor estoy utilizando el codigo para exportar un documento con jquery,grillas y estilos y me sale un error que dice que no puede encontrar los estilos, exporta pero sin color y sale horrible alguien me puede decir como lo codifico para que salga una apariencia bonita
Comentario usuario
jennifer
2 5
hola..

arriba eva pregunta porq le aparese un mensaje que dice que el archivo puede estar dañado o que el formato no es el correcto y siempre me pregunta que si deseo abrirlo o cancelarlo.. le respondiero el porq.. me gustaria saber que se le puede modificar al codigo de manera que no pregunte mas solo lo abra... porfa si alguno me puede responder .. gracias
Comentario usuario
angela
3 5
Hola, Como haria por guardar el archivo en lugar de que aparezca en el navegador ?
Comentario usuario
14-04-2009 17:20:02
4 5
Hola...retome el tema y no me funciona :(...al ejecutar el ejemplo sencillo de arriba me sale el sigte mensaje:

'Internet Explorer no puede descargar gexcel.php de 3w.mipagina.com.
Internet Explorer no puede abrir este sitio de Internet. El sitio solicitado no esta disponible o no se encuentra. Intentelo de nuevo mas tarde.'

Por favor si alguien sabe porque me sale este mensaje ayudemee...ya no me queda mucho tiempo...gracias!
Comentario usuario
JulioCesar
3 5
Como cambio el tamaño de pagina y la orientacion desde php
Comentario usuario
aniamcom
3 5
Van varias personas que preguntan, pero no responden....
Se puede o no cambiar el tamaño de la hoja y la orientacion (horizontal) desde php?
Comentario usuario
Kathy
2 5
Muy bueno y todo lo demas pero como modifico el ancho de las celdas???
Comentario usuario
18-08-2009 19:20:52
1 5
hola oye me podrias ayudar o darme un ejemplo de como leer un archivo de excel en java y que despues java lo exporte a mysql
Comentario usuario
oman
3 5
¿Este codigo crea un archivo en excel o lo exporta a uno ya creado? ¿Si lo crea donde queda guardado?, pues lo busco y no encuentro el archivo.xls...
Comentario usuario
chinitalinda
4 5
Hola, el codigo expuesto al comienzo de este foro es excelente pero en mi caso solo cuando paso los datos html a excel pero si los paso a word ya no me funciona.

header('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment; filename=archivo.doc");
header("Pragma: no-cache");
header("Expires: 0");

utilicie este codigo y no me funcionó, abre microsoft word pero no muestra los dato.
alguien puede ayudarme pasandome le codigo correcto? o que pasara?
Comentario usuario
MaraXD
3 5
hola a todos XD

pues con la novedad que esl codigo si funciona

XD

pues tambien funciona para Word

yo el el php que cree... solo comentarise lo de lo de excel y coloque tu codigo CHIITALINDA :p

example :P

<?php
header('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment; filename=archivo.doc");
header("Pragma: no-cache");
header("Expires: 0");
//header('Content-type: application/vnd.ms-excel');
//header("Content-Disposition: attachment; filename=archivo.xls");
//header("Pragma: no-cache");
//header("Expires: 0");

echo "<table border=1> ";
echo "<tr> ";
echo "<th>Nombre</th> ";
echo "<th>Email</th> ";
echo "<th>Edad</th> ";
echo "</tr> ";
for($i=0;$i<=10;$i++){

echo "<tr> ";
echo "<td><font color=green>Manuel Gomez</font></td> ";
echo "<td>manuel@gomez.com</td> ";
echo "<td>$i</td> ";
echo "</tr> ";

echo "<tr> ";
echo "<td><font color=blue>Pago gomez</font></td> ";
echo "<td>paco@gomez.com</td> ";
echo "<td>$i</td> ";
echo "</tr> ";

}
echo "</table> ";

?>

ya ise algunas modificaciones :P
sensillas

OKIS pues ahi los dejo y perdon por la falta de ortografia :P

esque asi me enseño a escribir mi papa digo Papá XD

saludos
Comentario usuario
Sin definir
5 5
muchisimas gracias...salio todo a la perfección
Comentario usuario
NIR
1 5
Eres Grande! llevaba semanas intentando hacerlo, Muchas Gracias!
Comentario usuario
elsitiodenegocios
5 5
El Código funciona perfectamente en los navegadores de Mozilla Firefox y Google Chrome

header('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment; filename=archivo.doc");
header("Pragma: no-cache");
header("Expires: 0");

Pero no funciona en Internet Explorer
Sale error "Internet Explorer no puede abrir este sitio internet. el sitio solicitado no está disponible o no se encuentra intente de nuevo más tarde"

Por favor si alguien tiene solución a este problema, le agradecía que ponga la solución en este sitio web muchas gracias
Comentario usuario
neor
1 5
tengo un problema,

el código si me genera el excel y todo pero si aparece un acento no coloca nadadel acento en adelante.

Alguien podría ayudarme con eso?????
Comentario usuario
gilmartc
1 5
Para el problema del acento, supongo que es porque el codigo html no te reconoce los caracteres con acentos, para que este te lo reconozca deberás transformar los caracteres con acento a su similar para html, ya que cuando exporta a excel toma lo que en la pagina se muestra, pero en esos caracteres especiales ha de fallar, para transformalos seria asi:
á = á
é = é
í = í
ó = ó
ú = ú
Posiblemente tengas problemas para la ñ, esa tendrías que pasarla así: ñ = ñ

Para php hay funciones que te ayudan a sustuir esos caracteres.
Comentario usuario
gilmartc
4 5
Posiblemente tengas problemas para la ñ, esa tendrías que pasarla así: ñ = &n tilde;
Comentario usuario
gilmartc
3 5
Sin el _
á = &a_acute;
é = &e_acute;
í = &i_acute;
ó = &o_acute;
ú = &u_acute;
Comentario usuario
gussy
4 5
que buen trabajo aun que me gustaria que me ayudaras a exportarlos a PDF, cambie algunos parametros pero me marca error: el achivo no empieza por %PDF,

ES ES MI CODIGO:
header('Content-Type: application/pdf');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Disposition: inline; filename=reporte.pdf");

aLGUIEN PUEDE AYUDARME!
Comentario usuario
01-10-2007 12:35:26
3 5
Muchas Gracias este tutorial me fue de mucha ayuda
Gracias Dios te bendiga
Comentario usuario
Sin definir
2 5
me funciona de maravilla, e incluso tenia una base de datos en postgre genere un consulta y lo mostre en excel... GRACIAS MAN XD
Comentario usuario
07-01-2009 19:33:34
3 5
como mantener por defecto grosor de linea de formas en multimedia 0,25 y color negro ya que siempre me muestra color azul y grosor 2.0
Comentario usuario
Gilmartc
4 5
Para realizar la exportaciona PDF trabaja diferente, debe hacerse de esta manera:

<cffunction name="exportarPdf" output="Yes">
<cfdocument format="pdf" src="http://tuURL&filename=reporte.pdf">

--------contenido a exportar
</cfdocument>
</cffunction>
Comentario usuario
Jamaica
2 5
Para crear una segunda hoja de calculo , que tendria que implementar
Comentario usuario
enocjamaica
3 5
Como enviar el archivo directamente a una carpeta sin necesidad de la ventana de guadar o abrir como ...
Comentario usuario
k0n3rx
3 5
Necesito que me colaboren con las imagenes no he podido lograr exportar las imagenes a el excel... es lo unico que me falta
Comentario usuario
09-12-2010 17:19:13
4 5
hola a todos, primero gracias por el codigo me funciono, el problema es que en la hoja excel me muetra reducido el marge como hago ra que se muestre igual a la trabla.
Comentario usuario
01/05/2004 16.50.01
5 5
Utilicen una clases para generar reportes flojos
Comentario usuario
30-07-2008 19:36:56
1 5
Hola ke tal quisiera que me resolvieran una duda porque cuando utilizas con un include a tu fichero ke realiza lo de excel no funciona mi codigo es el siguiente:
<?PHP
if($_REQUEST[imprime_docs]!="")
{

include_once 'Reportes/Excel.php';
}
?>

y mi codigo de para realizar la consulta es el sig. Tengo como estatico la variable buscar solo como ejemplo no eh pasado parametros ni nada.
<?php
ob_start("ob_gzhandler");
include ("Conexion/Conexion.php");
$buscar="Samuel";
$query = "select * from admon_documentos where Nombre='$buscar' or Rfc='$buscar'";
$consulta = mysql_query ($query, $conexion)
or die ("Fallo en la consulta");
header("Content-type: application/vnd.ms-excel;charset=latin");
header("Content-Disposition: attachment; filename=clientes.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo "<table border=1> ";
echo "<tr> ";
echo "<th>Nombre</th> ";
echo "<th>Rfc</th> ";
echo "<th>Direccion</th> ";
echo "<th>Telefono</th> ";
echo "<th>E-mail</th> ";
echo "<th>Nombre Documentos</th> ";
echo "<th>Fecha</th> ";
echo "</tr> ";
if ($consulta != false && mysql_num_rows($consulta) > 0)
{
while ( $datos = mysql_fetch_array($consulta, MYSQL_ASSOC))
{
echo "<tr> ";
echo "<td>".$datos['Nombre']."</td> ";
echo "<td>".$datos['Rfc']."</td> ";
echo "<td>".$datos['Direccion']."</td> ";
echo "<td>".$datos['Telefono']."</td> ";
echo "<td>".$datos['E-mail']."</td> ";
echo "<td>".$datos['Nombre_Documento']."</td> ";
echo "<td>".$datos['Fecha']."</td> ";
echo "</tr> ";
}
}
else
{
echo "<tr> ";
echo "<th>0</th> ";
echo "<th>0</th> ";
echo "<th>0</th> ";
echo "<th>0</th> ";
echo "</tr> ";
}
echo "</table> ";
ob_end_flush();
?>
Comentario usuario
30-07-2008 19:36:56
1 5
Warning: Cannot modify header information - headers already sent by (output started at C:mpphtdocsUrias-HigaredaBuscar_Docs.php:37) in C:mpphtdocsUrias-HigaredaBuscar_Docs.php on line 107

Warning: Cannot modify header information - headers already sent by (output started at C:mpphtdocsUrias-HigaredaBuscar_Docs.php:37) in C:mpphtdocsUrias-HigaredaBuscar_Docs.php on line 108

Y ME MANDA ESTOS ERRORES
Warning: Cannot modify header information - headers already sent by (output started at C:mpphtdocsUrias-HigaredaBuscar_Docs.php:37) in C:mpphtdocsUrias-HigaredaBuscar_Docs.php on line 109

Warning: Cannot modify header information - headers already sent by (output started at C:mpphtdocsUrias-HigaredaBuscar_Docs.php:37) in C:mpphtdocsUrias-HigaredaBuscar_Docs.php on line 110
Comentario usuario
Graciela
3 5
como puedo ingresar
este codigo en un boton enviar (php)

header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");
Comentario usuario
20-02-2010 14:01:52
3 5
Buenas tengo una duda yo trabajo con la libreria phpexcel y tengo los headers tal como estan escritos aqui pero al descargar el archivo me salen caracteres feos en vez de la estructura de la tabla; cambie la ruta temporal donde se guarda el archivo y al ejecutarlo de ahi me sale perfecto pero cuando lo descargo del navegador sale feo. Trabajo con caracteres saudi y no es un problema de codificacion UTF8 por que me salen bien las frases saudi sale mal es la estructura de la tabla.
me pueden ayudar??
Comentario usuario
Yenn
1 5
mil gracias esta genial
Comentario usuario
12-01-2008 23:38:30
3 5
como hago para traerme los titulos de las columnas???
Comentario usuario
18-05-2010 07:23:15
3 5
como hago para traerme los titulos de las columnas???
Comentario usuario
Ángel Luna
3 5
Muy buen aporte! ¿Se puede crear varios libros en un archivo Excel con este codigo? ¿De que manera?
Comentario usuario
xxFinalMike
3 5
Muachas gracias danidan182, tu solución me sirvió de maravilla
Comentario usuario
10/08/2004 15.25.59
5 5
Buenos dias señores...encontre una solucion para los acentos y y ñ, a mi me funcion..

esta es la cabecera.
header('Content-type: application/vnd.ms-excel; charset=utf-8');

pero ademas tiene que meter su contenido de esta manera..

<html>
<head>
<meta http-equiv = "content-type" content = "text/html; charset=utf-8"/>

</head>
<body>
aqui es en donde pueden ingresar su tabla o lo que fuese
</body>
</html>
Comentario usuario
macro
2 5
Hola yo tengo el mismo problema que muchos, pero ya e leido los comentarios y ninguno me funciona, el error es :
Warning: Cannot modify header information - headers already sent by (output started at

Warning: Cannot modify header information - headers already sent by (output started at

Warning: Cannot modify header information - headers already sent by (output started at

Warning: Cannot modify header information - headers already sent by (output started at
y los errores son del los header:

header('Content-type: application/vnd.ms-excel; charset=utf-8');
header("Content-Disposition:attachment;filename=archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");

Alguien sabe como solucionarlo por favor
INSERTAR COMENTARIO

Usuario:
Email:
Comentario:
Codigo Seguridad


Antes de enviar un comentario...
Todos los comentarios son revisados personalmente
Todo comentario que no haga relacion al codigo mostrado en esta pagina sera eliminado

Usuarios registrados tienen preferencia en recibir respuestas de ayuda!!
Ademas de poder insertar Imagenes,Enlaces y otras propiedades del editor.
Por favor, insertar los comentarios descriptivos.