Saltar al contenido
🚀 Lacodigoteca.com

Cómo exportar registros SQL a un documento de Excel con PHP

<?php
//Función para conectarnos con la BBDD 
function conectar(){
    // Rellenamos todos los datos para conectarnos a la BBDD
    $x=new mysqli(
        "", // URL
        "", // Usuario
        "", // Clave
        "" // Nombre 
    );
    //En caso de haber un error de conexión a la BBDD...
    if ($x->connect_errno){
        //Salimos de la conexión con el error
        die ("Error: ".$x->mysqli_connect_errno().$x->mysqli_connect_error());
        exit(); 
    }
return $x;
}
//Nos conectamos a SQL
$c=conectar();

// Creamos la consulta que va a compartir la visualización en PHP y en CSV
$consulta=$c->query("SELECT idtienda,nombre,direccion FROM tiendas order by idtienda desc limit 3 ");

//Si hemos pulsado al botón de Exportar a Excel (CSV)...
if(isset($_POST["exportarCSV"])) {
    if(!empty($consulta)) {
        //El nombre del fichero tendrá el nombre de "usuarios_dia-mes-anio hora_minutos_segundos.csv"
        $ficheroExcel="usuarios ".date("d-m-Y H_i_s").".csv";
        
        //Indicamos que vamos a tratar con un fichero CSV
        header("Content-type: text/csv");
        header("Content-Disposition: attachment; filename=".$ficheroExcel);
        
        // Vamos a mostrar en las celdas las columnas que queremos que aparezcan en la primera fila, separadas por ; 
        echo "idtienda;nombre;direccion\n";    
            
        // Recorremos la consulta SQL y lo mostramos
        while($cliente=$consulta->fetch_array()){
                echo $cliente['idtienda'].";";
                echo $cliente['nombre'].";";
                echo $cliente['direccion']."\n";
        }                
    }else{
        echo "No hay datos a exportar";
    }
    //Para que se cree el Excel correctamente, hay que añadir la sentencia exit;
    exit;
}
?>
<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <form action="<?php echo $_SERVER[“PHP_SELF”]; ?>" method="post">
            <button type="submit" id="export_data" name="exportarCSV" value="Export to excel" class="btn btn-info">Exportar a Excel (CSV)</button>
        </form>
        <table>
            <thead>
                <tr>
                    <th>DNI</th>
                    <th>Nombre</th>
                    <th>Apellidos</th>
                    <th>Teléfono</th>
                    <th>Email</th>
                </tr>
            </thead>
            <tbody>    
                <?php
                while($cliente=$consulta->fetch_array()){
                    echo '<tr>';
                        echo '<td>'.$cliente['idtienda'].'</td>';
                        echo '<td>'.$cliente['nombre'].'</td>';
                        echo '<td>'.$cliente['direccion'].'</td>';
                        echo '<td></td>';
                        echo '<td></td>';
                    echo '</tr>';
                }
                ?>
            </tbody>
        </table>
    </body>
</html>