Inicio » Blog » PHP

24 octubre, 2018

Exportar datos a Excel con PHP y MySQL

Para exportar a Excel desde PHP y Mysql debes tener una BD Mysql con datos, una conexión a la BD, el diseño del Layout HTML, finalmente un botón.

Suscríbete a nuestro canal en Youtube

Suscríbirse

¡Hola!...Bienvenido a este pequeño tutorial sobre cómo exportar una tabla Mysql usando PHP a un formato de Excel XLS.

¿Cómo exportar datos a Excel con PHP y MySql?

Al grano, en algunas aplicaciones web necesitas funcionalidades como reportes visuales y deben ser reportes hacia documentos legibles que sean de fácil interpretación a un usuario común los probables formatos son en PDF, EXCEL, Etc... en esta ocación veremos la forma más sencilla de exportar datos de una base de datos a Excel, el caso práctico en ésta ocasión es "un listado de usuarios a formato excel"; creándose un documento para su descarga automática desde la misma aplicación web. Y una cosa muy importante que quiero hacer incapié que es sin usar librerías adicionales, las cuáles pueden ralentizar el proceso de tu aplicación. Claro ello depende de algunos factores pero uno de ellos puede ser usar librerías.

Puntos para crear la funcionalidad con PHP y MYSQL a Excel

Bueno, al punto. ¿Qué actividades vamos a llevar a cabo? son los pasos que también tienes que tener en cuenta antes de empezar. ¿Por qué? porque me dió y te dará cierto orden a la hora de desarrollar. Y son lo siguientes:

  1. Creación de la base de datos y la tabla usuario en MySql
  2. Script para conectarse a la base de datos con PHP y MySql además de gestionar el método para realizar la consulta de datos
  3. Programación del archivo layout PHP que debe realizar el proceso de generación a formato Excel xls. tendrá el nombre plantilla.php
  4. La creacion de un archivo principal que llamará index.php, este enlazará a plantilla.php para que mediante un click generemos el excel descargable.

 

1.- Creación de la tabla Usuario MYSQL

Ahora. Antes de debes crear una base de datos, yo usé el servidor local Xampp, donde creé la base de datos, le dí el nombre de bdusuarios y dentro ejecuté en la consola SQL el siguiente script MYSQL, o también puedes crear la tabla con la interfaz gráfica de Xampp puedes usar cualquier nombre para la tabla, particularmente yo usé el nombre de usuario. Veamos el código MYSQL:

tabla usuarios xampp

 

Sql para generar la tabla usuario en xampp 

El script crea la base de datos e inserta unos registros que nos ayudará para debugear o mejor dicho testear el resultado del código interpretado.

 

2.- Conexión a la Base de Datos y Gestión de consultas

Para la conexión, usaremos un par de clases con que me realmente me ayudan en gran parte de mis proyectos. 

Veamos código para conectarnos a la BD MySql

Archivo de configuración config.php

<?php
define("DB_NAME","bdusuarios");
define("DB_USER","root");
define("DB_PASS","");

Archivo de conexión a la BD Mysql

<?php
require "config.php";
class Conexion{
    public $cnx;
    public function conectar(){
        try {
            $opciones = array(
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
                PDO::ATTR_ERRMODE =>PDO::ERRMODE_EXCEPTION
            );
            $this->cnx = new PDO(
                "mysql:host=localhost;
                dbname=".DB_NAME,
                DB_USER, 
                DB_PASS,
                $opciones
            );
            return $this->cnx;
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
    }
    public function desconectar(){
        $this->cnx = null;
    }
}
  • Clase para gestionar las consultas a la BD MYSQL ir al script para consultas Mysql en PHP. Esta clase contiene muchos métodos, de los cuales solo emplearemos el método search, que nos servirá para buscar una coincidencia.

Ahora el método necesario para la consulta

<?php
require "conexion.php";

class Consulta{
    private $_db;
    private  $lista_usuarios;

    public function __construct(){
        $this->_db = new Conexion();
    }

    public function buscar(){
        
        $this->_db->conectar();

        $consulta = $this->_db->cnx->prepare("SELECT * FROM usuario");

        $consulta->execute();

        while($row = $consulta->fetch(PDO::FETCH_OBJ)){
            $this->lista_usuarios[] =$row;
        }

        $this->_db->desconectar();
        return $this->lista_usuarios;

    }

}

 

3.- Proceso de generación del documento Excel

Lo llamaremos plantilla.php, quién creará el doc. excel para su descarga 

  • Requerimos el archivo consulta.php para instanciar el objeto o clase Consulta.
  • Declaramos una variable string llamada salida. Esta almacenará código html con una técnica de concatenación html. 
  • Recorremos la lista de objetos generados a partir de una consulta en este caso buscar todos los registros sin excepción.
  • Por cada vuelta anexamos los datos a la variable salida.
  • Declaramos los encabezados correctamente para generar el archivo excel.
  • Finalmente retornamos el documento para su descarga directa.
<?php
require "consulta.php";
$usuario = new Consulta();
$salida = "";
$salida .= "<table>";
$salida .= "<thead> <th>ID</th> <th>Nombre</th><th>Email</th></thead>";
foreach($usuario->buscar() as $r){
    $salida .= "<tr> <td>".$r->id."</td> <td>".$r->nombre."</td><td>".$r->email."</td></tr>";
}
$salida .= "</table>";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=usuarios_".time().".xls");
header("Pragma: no-cache");
header("Expires: 0");
echo $salida;

 

4.- Archivo principal que llama al archivo index.php

Este archivo es típico html, al cual se le agrega en el body la siguiente línea.

  • Creamos un documento index.php
  • Declaramos una tabla con dos celdas
  • En una de la s celdas colocamos un link al archivo que procesa la generación de datos a excel y la consecuente descarga.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<table>
    <tr>
        <td>ARCHIVO EXCEL</td>
        <td><a href="plantilla.php">DESCARGAR EXCEL</a></td>
    </tr>
</table>
    
</body>
</html>

 

5.- Resultado final

Finalmente tenemos una funcionalidad básica y sencilla, pero fácil de implementar en tu aplicación web. Lógicamente todo código se puede mejorar y/o optimizar.

Archivo generado a Excel

Bueno, hasta un próximo tutorial.


Leido 33284 veces

Descarga el código fuente PHP

Recurso descargado 732 veces

USD

Descargar Código Fuente

Compartir link del tutorial con tus amigos


MVC PHP y MySql Página Web MVC PHP y MySql Página Web

Curso MVC PHP MySQL desarrollo de una página web administrable

Descarga del código fuente

USD 7.00

Aprende más sobre PHP

Cursos de programación

Codea Codea App

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Todos los derechos reservados Codea App | ...de frente al código!!! | 2020 - 2023