Camilo Camargo, Bienvenida al Blog.
Hola, espero que este artículo pueda serte útil.

¿No resolviste tu problema? Usa el buscador o déjame un comentario.

Cómo exportar datos a excel con php


Exportar datos a Excel con PHP realmente es algo MUY sencillo y no requiere de librerías externas o mayores complicaciones.

Esta es otra de mis entradas o tips rápidos, en esta ocasión sobre programación.

Recientemente tuve la necesidad de exportar registros de MySql con PHP, más específicamente en formato Excel o .xls, como quieras llamarlo. 😉


Exportando datos de mysql a excel con php

Muy bien, no voy a entrar en detalles sobre el script en particular porqué es realmente básico, sin embargo, recuerda que si tienes dudas, siempre puedes dejarlas en los comentarios. 😉

/*--------------------------------------------------------------
* Función encargada de exportar a excel.
* Recibe como parametro un arreglo de datos.
*---------------------------------------------------------------*/

    function exportProductDatabase($productResult) {

            $timestamp = time();
            $filename = 'Export_' . $timestamp . '.xls';
            
            header("Content-Type: application/vnd.ms-excel");
            header("Content-Disposition: attachment; filename=\"$filename\"");
            
            $isPrintHeader = false;

            foreach ($productResult as $row) {

                if (! $isPrintHeader ) {

                    echo implode("\t", array_keys($row)) . "\n";
                    $isPrintHeader = true;

                }

                echo implode("\t", array_values($row)) . "\n";

            }

            exit();

        }


El anterior script hace todo el trabajo.

Te explico: La función de nombre exportProductDatabase() recibe como parámetro un arreglo con la información a exportar o incluir en el excel.

Tan simple como hacer una consulta a MySQL y almacenar el resultado en una variable, luego pasar esa variable a la función.

Detalles importantes: Los encabezados o «headers» son obligatorios y se encargaran de darle formato al archivo de salida.

La función array_keys(), imprime o establece el nombre de las columnas.

La función array_values() hace justo lo mismo que su similar, pero con los valores de las columnas.

Se utiliza isPrintHeader para determinar si ya se estableció el nombre de las columnas y así ejecutar array_keys(), solo una vez.

Es todo, el anterior código, luce para mi de esta forma:

Hemos terminado. 😉

Si, tal cual, es un tip muy rápido, mientras en realidad aprovecho para documentar esto en mi Blog.

Si tienes cualquier duda sobre el proceso para exportar datos con PHP o simplemente quieres que hable sobre algún tema, no dudes en dejar TODO en los comentarios.

Compartir es amor. 😉

¿Te ha resultado útil? Comparte el artículo.

6 comentarios en «Cómo exportar datos a excel con php»

  1. Hola capaz este no se a el medio pero necesito ayuda, yo tengo una pagina web donde le cargo un numero y me tira en otra solapa un archivo .php, mi pregunta es la siguiente, saben si existe la posibilidad si cargando ese numero en excel me devuelve el o los valores del .php que uno necesite? no se si fui claro, espero me puedan ayudar

    Responder
    • Hola Matias!

      En efecto es posible hacer lo que mencionas, pero no me queda clara tu pregunta, no del todo. ¿Quieres formularla con más claridad? Con gusto te indico el camino. 😉

      Responder
  2. Hola buenas, una pregunta ¿ El arreglo tiene que tener una estructura determinada? Le he dado a la variable este valor:
    $data = array(1=>100, 2=>93.09, 3=>89.79, 4=>86.48, 5=>83.18, 6=>46.83);
    Pero me devuelve el excel vacio de datos
    Muchas gracias por tu ayuda

    Responder
    • Hola Angel, ¡Qué gusto verte por el Blog!

      No exactamente, pero el código expuesto en el ejemplo, está diseñado para funcionar con un arreglo tipo:


      array(
      array('nombre' => 'valor', 'nombre' => 'valor'),
      array('nombre' => 'valor', 'nombre' => 'valor'),
      ...
      );

      Para adaptarlo a tu arreglo, debes modificar la estructura/lógica del foreach.

      Un abrazo,

      Responder
      • Entendido, muchísimas gracias.
        Resuelto. Una buena explicación

        Responder
  3. Funciona perfectamente si lo llamo de javascript con windows.location.href pero si deseo pasar el array desde javascript me produce 2 errores según si lo hago con POST o GET, con GET me dice que la url es demasiado larga y cuando consigo que salga el excel sale vacío, con POST (ajax) no se me ‘abre’ una pestaña nueva y por tanto no se llega a crear el excel, haciendo un echo del array dentro de tu función se puede ver que llega perfectamente. La única solución que he encontrado es usando $_SESSION y funciona perfectamente pero los jefes no me dejan usarlo porque ya tenemos el servidor hasta los topes. Espero tu respuesta y gracias por esta estupenda página.

    Responder

Comentarios