Generar un Excel con PHP rápido y fácil

Excel con php

Hoy os vengo a explicar cómo podemos crear un archivo Excel rápida y facilmente usando PHP.

Podría hablar de la potente herramienta que es PHPExcel, que seguro que muchos conocéis.

Pero si no tenéis tiempo de aprenderla y necesitáis convertir un listado que tengáis ya generado usando PHP en Excel para pasarlo a vuestro jefe, o quien lo pida, ahora mismo os explico como se hace.

Generar las cabeceras

Para poder generar un archivo Excel, primero de todo deberemos definir las cabeceras.

Las definiremos de la siguiente forma:

En la primera línea le estamos diciendo el tipo de contenido que vamos a mostrar.

Y en la segunda línea, le estamos diciendo que lo que vamos a generar es un adjunto, y que va a tener el nombre «nombre_archivo.xls«, que eso al final es lo que nos va a generar este PHP.

Generar el contenido de nuestro Excel

A continuación vamos a generar el contenido de nuestro Excel.

Esta es la parte más simple, porque simplemente tendremos que mostrar nuestros datos como si de una tabla se tratase.

Al hacerlo de esta forma el programa que usemos para ver el Excel, lo entiende perfectamente y lo muestra correctamente.

Incluso si ponemos colores o un caption a la tabla, el Excel respetará como este creada la tabla.

Así que simplemente con lo siguiente:

Y al ejecutar el PHP, el navegador nos descargará un archivo llamado «nombre_archivo.xls» y ya podremos abrirlo con cualquier programa de Excel.

También podemos añadirle un poco de color a los campos usando los estilos.

Lo que no hay que abusar y revisar, porque no todos los estilos funcionan, pero algunos como color o background-color, si que funcionan.

Como podéis ver, podemos generar un archivo Excel con PHP de forma muy fácil.

Espero que os haya sido útil.

No olvidéis de comentar! En vuestro código! Y en el Blog! 😉

 

Comparte si te ha gustado:
Share on Facebook
Facebook
0Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Share on Tumblr
Tumblr
0Digg this
Digg
28 Comments

    Lleir

    Hola,

    Tan solo una pregunta ¿A qué público va dirigida está ayuda?

      Oyagum

      Pues en principio va dirigido a cualquiera que le pueda servir, pero imagino que para gente que sepa algo de PHP y necesite tener un Excel con un listado de Base De Datos o similar, sin tener la necesidad de aprender a usar PHPExcel. Esa era mi idea 🙂

      Andres felipe Peña Ramirez

      a los programadores que estén interesados a aprender como exportar algo en excel la gran mayoría son reportes de alguna c.

    Paco Aguiar

    Gracias por la aportación.

      Oyagum

      Gracias a ti por leerme 🙂 espero se entienda bien 🙂

    Juan Sánchez

    Gracias por el aporte. En ocasiones abusamos de librerías de terceros para hacer cosas tan simples como generar un excel básico. Es importante conocer los lenguajes desde la base. Saludos.

      Oyagum

      Gracias a ti por comentar y me alegro un montón si te ha servido 🙂

    Arancha

    Buenos días,

    Gracias por el código, es rápido y útil.

    Pero cuando se abre el archivo Excel creado, se muestra un mensaje «El formato y la extensión de archivo de ‘nombre_archivo.xls’ no coindicen. Puede que el archivo esté dañado o no sea seguro. No lo abra a menos que confíe en su origen…».
    ¿Hay alguna forma de evitar que salga ese aviso?

    Gracias. Un saludo.

      Oyagum

      Que va. He mirado mil maneras de hacerlo pero no lo he conseguido. Es la única pega de este método:( si consigues solucionarlo no dudes en comentarlo 😉

        henry

        hola tengo problemas con los caracteres especiales alguien soluciono
        gracias

      Alejandro

      Amigo, en excel ve a opciones y busca en centro de confianza, configuración del centro de confianza y vista protegida…alli destilda las opciones de vista protegida… si eso no funciona, fijate que si tienes el antivirus Eset, tienes que tener activado el firewall de windows, sino te lo bloquea tambien, saludos!

      Marco

      Intenta cambiar la extensión, de XLS a XLSX. Comenta si resulto.

    hernan

    Amigo muchas gracias muy completa y facil de entender tu aporte muchas gracias en serio eres el mejor

      Oyagum

      Muchisimas gracias a ti por el comentario. Me alegro mucho que te haya servido;)

    Sebastian

    Genio! Fue de muchísima utilidad tu post.
    Gracias!

    Oyagum

    Gracias a ti por leer y comentar 🙂

    Me alegra mucho que te haya servido 😉

    Eduardo Bzura

    Como hago para variar la altura de una fila en el excel resultante ?
    Ocurre que debo agregar una foto en la ultima columna, y se me superponen.
    Entonces, pense que aumentando el tamaño de la fila, la foto puede verse correctamente.

      Oyagum

      Buenas,

      La verdad que este código es muy simple y no se puede modificar demasiado, es algo para salir del paso, la verdad que para hacer algo más con cara y ojos, necesitarias algunas herramientas más potentes, aquí te dejo algunas:

      http://faisalman.github.io/simple-excel-php/

      https://code.google.com/archive/p/php-excel/

      https://github.com/PHPOffice/PhpSpreadsheet

      Espero que te sirva alguno de ellos. Realmente no he necesitado hacer nunca un excel más complejo, pero entiendo que pueda ocurrir.

      Espero que te sirva lo que te paso.

      Un saludo y ya comentaras a ver que tal 😉

    Juan Jansen

    Excelente, esto es aprovechar los recursos!!! Felicitaciones

      Oyagum

      Muchas gracias! Me alegro de que te haya ayudado 🙂

    Antonio

    Hola amigo, ando buscando algo parecido, cómo puedo acceder al códgio? gracias. Si algo, éste es mi correo: incolpsicometria@gmail.com saludos

      Oyagum

      Hola Antonio,

      Primero de todo gracias por leerme y segundo el código lo tienes en principio ahí mismo en la entrada. Puedes darle a cambiar a texto plano y copiarlo y pegarlo fácilmente. Espero haberte ayudado!

    Marcelo

    Hola estuve usando PHPExcel sin problemas, hasta que configuramos los certificados SSL, a partir de ese momento el codigo no me funciona ya que no me deja abrir el excel generado.. Sobre dominios sin certificados funciona bien.. Alguna idea como solucionar este tema ?
    Al intentar abrir el archivo me sale el mensaje siguiente:» Excel no puede abrir el archivo xxxx.xlsx porque el formato o la extension de este no son válidos. Compruebe que el archivo no se ha dañado y que la extension del mismo coincida con el formato del archivo».
    Te comento que el codigo en un hosting sin certificados SSL funciona perfecto.

    Alguna idea de como lo podemos solucionar ? Gracias

      Oyagum

      Buenas,

      Primero de todo gracias por venir aquí y segundo pedirte perdon por la tardanza en contestar.

      La verdad es que no tengo ni idea, pero imagino que al tener el ssl, debe generar un archivo erroneo, yo lo que intentaría es ver con notepad o notepad++ que es lo que me está generando el fichero, para ver si es que a partir de tener los certificados, está devolviendo un error y generando un fichero con ese error y a partir de ahí intentar encontrar una solución.

      La verdad que PHPExcel no lo he tocado y no sabría decirte mucho sobre el tema. Espero que mirando el fichero, os ponga el error que os da y podais subsanarlo fácilmente.

      Un Saludo

    Diana

    Buen día quisiera saber cómo coloco el archivo que generó en excel en una carpeta del servidor o adjuntarlo para enviarlo en un correo gracias

      Oyagum

      Buenos días,

      Para hacer lo que pides deberías trabajar con las funciones file de PHP, en concreto con la de fwrite (https://www.php.net/manual/es/function.fwrite.php) con esas funciones puedes guardar el fichero donde quieras del servidor y luego hacer con el lo que quieras.

      Yo para enviar e-mails utilizo siempre el PHPMailer (https://github.com/PHPMailer/PHPMailer) la verdad que va muy bien y es totalmente configurable.

      Espero que te haya sido útil mi respuesta.

      Un saludo!

    henry

    hola alguien soluciono los caracteres especiales,
    tengo problemas con ellos
    —-el codigo es de gran ayuda
    saludos

    Oyagum

    Buenas,

    Primero de todo agradecerte que me hayas leído.

    Y segundo y a tu problema, imagino que lo que te está pasando es que los resultados que muestras están codificados en algo que no sea iso8869-15, e imagino que lo tienes codifgicado como utf8, así que lo que deberías hacer a la hora de mostrar el resultado es decodificarlo.

    Como imagino que es utf8, deberías aplicar <?php utf8_decode($loquesea); ?>

    Espero te sirva de ayuda, si por el contrario es otra codificación, mira a ver iconv (https://www.php.net/manual/es/function.iconv.php)

    Espero te sirva.

    Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.