BACKUP DE UNA TABLA MYSQL Y EXPORTAR EXCEL CON PHP PDO INCLUIR NOMBRE COLUMNAS PHPSPREADSHEET

 Para hacer un backup de una tabla MySQL y exportarla a un archivo .xls (Excel) con PHP PDO, y además incluir los nombres de las columnas usando la biblioteca PhpSpreadsheet

, puedes seguir los siguientes pasos:


DESCARGAR LIBRERÍA PhpSpreadsheet DE EXCEL PARA PHP

DESCARGAR CLICK AQUI


Conexión a la base de datos utilizando PHP PDO:

php

Copy code

<?php

$servername = "localhost";

$username = "tu_usuario";

$password = "tu_contraseña";

$dbname = "nombre_base_de_datos";


try {

    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {

    echo "Error: " . $e->getMessage();

}

?>


Realizar una consulta a la base de datos para obtener los datos de la tabla:


<?php

$tableName = "nombre_tabla";


try {

    $stmt = $conn->prepare("SELECT * FROM $tableName");

    $stmt->execute();

    $data = $stmt->fetchAll(PDO::FETCH_ASSOC);

} catch(PDOException $e) {

    echo "Error: " . $e->getMessage();

}

?>

Exportar los datos a un archivo .xls utilizando PhpSpreadsheet:

Primero, asegúrate de haber instalado la biblioteca PhpSpreadsheet en tu proyecto. Puedes hacerlo mediante Composer con el siguiente comando:


bash


composer require phpoffice/phpspreadsheet

Luego, crea el código para exportar los datos a un archivo .xls:


<?php

require 'vendor/autoload.php'; // Incluir el autoloader de PhpSpreadsheet


use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Writer\Xls;


// Crear una nueva instancia de Spreadsheet

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet();


// Escribir los nombres de las columnas en la primera fila del archivo .xls

$columnNames = array_keys($data[0]);

$columnIndex = 1;

foreach ($columnNames as $columnName) {

    $sheet->setCellValueByColumnAndRow($columnIndex, 1, $columnName);

    $columnIndex++;

}


// Escribir los datos en las filas siguientes

$rowIndex = 2;

foreach ($data as $rowData) {

    $columnIndex = 1;

    foreach ($rowData as $cellData) {

        $sheet->setCellValueByColumnAndRow($columnIndex, $rowIndex, $cellData);

        $columnIndex++;

    }

    $rowIndex++;

}


// Guardar el archivo .xls

$writer = new Xls($spreadsheet);

$filename = 'backup_tabla.xls';

$writer->save($filename);

?>

Este código generará un archivo "backup_tabla.xls" que contiene los datos de la tabla de MySQL y los nombres de las columnas en la primera fila. Recuerda reemplazar "nombre_tabla", "tu_usuario", "tu_contraseña" y "nombre_base_de_datos" con los valores correspondientes a tu base de datos MySQL.


Es importante mencionar que la extensión .xls está asociada con el formato de archivo binario de Excel (formato antiguo). Si deseas exportar el archivo en el formato más reciente de Excel (formato .xlsx), simplemente cambia "Xls" por "Xlsx" en la creación del objeto Writer:


use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// ...

$writer = new Xlsx($spreadsheet);

// ...

Con esto, el archivo se guardará como "backup_tabla.xlsx" en lugar de "backup_tabla.xls".


///////////////////////

HACER CODIGO PARA DESCARGAR  EL .xlsX  DESDE EL SERVIDOR WEB

ChatGPT

Para permitir la descarga del archivo .xlsx desde el servidor web, necesitas configurar el encabezado de respuesta adecuadamente en el script PHP. Debes enviar los encabezados apropiados antes de imprimir el contenido del archivo para que el navegador interprete la respuesta como un archivo descargable.


Aquí tienes el código completo para realizar la descarga del archivo .xlsx:


php

Copy code

<?php

require 'vendor/autoload.php'; // Incluir el autoloader de PhpSpreadsheet


use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;


// Crear una nueva instancia de Spreadsheet

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet();


// Obtener los datos de la tabla de MySQL (código previo)


// Escribir los nombres de las columnas en la primera fila del archivo .xlsx

$columnNames = array_keys($data[0]);

$columnIndex = 1;

foreach ($columnNames as $columnName) {

    $sheet->setCellValueByColumnAndRow($columnIndex, 1, $columnName);

    $columnIndex++;

}


// Escribir los datos en las filas siguientes

$rowIndex = 2;

foreach ($data as $rowData) {

    $columnIndex = 1;

    foreach ($rowData as $cellData) {

        $sheet->setCellValueByColumnAndRow($columnIndex, $rowIndex, $cellData);

        $columnIndex++;

    }

    $rowIndex++;

}


// Crear el objeto Writer para el archivo .xlsx

$writer = new Xlsx($spreadsheet);


// Definir los encabezados para la descarga

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

header('Content-Disposition: attachment;filename="backup_tabla.xlsx"');

header('Cache-Control: max-age=0');


// Guardar el archivo en el buffer de salida y enviarlo al navegador

$writer->save('php://output');

exit();

?>

Con este código, cuando el usuario acceda a este script PHP, se le pedirá guardar o abrir el archivo "backup_tabla.xlsx" generado desde el servidor web.


Asegúrate de tener los datos de la tabla en la variable $data, tal como se muestra en los pasos anteriores. Además, asegúrate de que la biblioteca PhpSpreadsheet esté instalada en tu proyecto (con el comando composer require phpoffice/phpspreadsheet) y que hayas incluido el autoloader al inicio del script (con el comando require 'vendor/autoload.php';).


HACER CODIGO PARA DESCARGAR  EL .xlsX  DESDE EL SERVIDOR WEB

ChatGPT

Para permitir la descarga del archivo .xlsx desde el servidor web, necesitas configurar el encabezado de respuesta adecuadamente en el script PHP. Debes enviar los encabezados apropiados antes de imprimir el contenido del archivo para que el navegador interprete la respuesta como un archivo descargable.


Aquí tienes el código completo para realizar la descarga del archivo .xlsx:


php

Copy code

<?php

require 'vendor/autoload.php'; // Incluir el autoloader de PhpSpreadsheet


use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;


// Crear una nueva instancia de Spreadsheet

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet();


// Obtener los datos de la tabla de MySQL (código previo)


// Escribir los nombres de las columnas en la primera fila del archivo .xlsx

$columnNames = array_keys($data[0]);

$columnIndex = 1;

foreach ($columnNames as $columnName) {

    $sheet->setCellValueByColumnAndRow($columnIndex, 1, $columnName);

    $columnIndex++;

}


// Escribir los datos en las filas siguientes

$rowIndex = 2;

foreach ($data as $rowData) {

    $columnIndex = 1;

    foreach ($rowData as $cellData) {

        $sheet->setCellValueByColumnAndRow($columnIndex, $rowIndex, $cellData);

        $columnIndex++;

    }

    $rowIndex++;

}


// Crear el objeto Writer para el archivo .xlsx

$writer = new Xlsx($spreadsheet);


// Definir los encabezados para la descarga

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

header('Content-Disposition: attachment;filename="backup_tabla.xlsx"');

header('Cache-Control: max-age=0');


// Guardar el archivo en el buffer de salida y enviarlo al navegador

$writer->save('php://output');

exit();

?>

Con este código, cuando el usuario acceda a este script PHP, se le pedirá guardar o abrir el archivo "backup_tabla.xlsx" generado desde el servidor web.


Asegúrate de tener los datos de la tabla en la variable $data, tal como se muestra en los pasos anteriores. Además, asegúrate de que la biblioteca PhpSpreadsheet esté instalada en tu proyecto (con el comando composer require phpoffice/phpspreadsheet) y que hayas incluido el autoloader al inicio del script (con el comando require 'vendor/autoload.php';).



Comentarios

Entradas populares de este blog

INSERTAR Y UPDATE FECHA CON PHP MYSQL EN FORMULARIO METODO POST CON JQUERY ETIQUETA DATE

Copia de Seguridad de Archivo MS Access (.mdb) a Pendrive con VB6

CONVERTIR IMÁGEN JPG O PNG A WEBP CON PHP DE FORMA SIMPLE