DESCARGAR BACKUP ARCHIVO EXCEL EXPORTADO DESDE MYSQL PHP PDO
DESCARGAR BACKUP ARCHIVO EXCEL EXPORTADO DESDE MYSQL PHP PDO
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "bdpersonas";
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();
}
$tableName = "personas2";
try {
$stmt = $conn->prepare("SELECT * FROM $tableName");
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
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();
?>
Comentarios
Publicar un comentario