Exportar datos a Excel con PHP y MySQL

Exportar datos en formato Excel es una característica muy útil para que los usuarios puedan guardar información de forma offline, que más tarde puedan utilizar. El formato Excel es idóneo para eso, ya que es un formato que nos proporciona mucha flexibilidad. En este tutorial te mostraremos cómo exportar datos a Excel con PHP y MySQL.

La estructura que emplearemos en este ejemplo es la siguiente:

  • index.php
  • export_data.php

Crear la base de datos MySQL

Antes que nada, vamos a crear una tabla en nuestra base de datos MySQL llamada developer en la que albergaremos registros de desarrolladores, para después exportarlos a un fichero Excel.

CREATE TABLE `developers` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`skills` varchar(255) NOT NULL,
`address` varchar(255) NOT NULL,
`gender` varchar(255) NOT NULL,
`designation` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`image` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Obtener los datos

Obtendremos los registros de la tabla developers de nuestra base de datos MySQL y los almacenaremos en un array para después mostrarlos y exportarlos a un fichero Excel.

include_once("db_connect.php");
$sql_query = "SELECT name, gender, address, designation, age FROM developers LIMIT 10";
$resultset = mysqli_query($conn, $sql_query) or die("database error:". mysqli_error($conn));
$developer_records = array();
while( $rows = mysqli_fetch_assoc($resultset) ) {
$developer_records[] = $rows;
}

Crear HTML y mostrar los registros con el botón Exportar

En el fichero index.php, crearemos el HTML necesario y mostraremos los registros utilizando el array de antes. Por supuesto, también crearemos el formulario con el botón de Exportar para exportar los datos que se nos envíen por submit.

<div class="container">
<h2>Export Data to Excel with PHP and MySQL</h2>
<div class="well-sm col-sm-12">
<div class="btn-group pull-right">
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<button type="submit" id="export_data" name='export_data' value="Export to excel" class="btn btn-info">Export to excel</button>
</form>
</div>
</div>
<table id="" class="table table-striped table-bordered">
<tr>
<th>Name</th>
<th>Gender</th>
<th>Age</th>
<th>Designation</th>
<th>Address</th>
</tr>
<tbody>
<?php foreach($developer_records as $developer) { ?>
<tr>
<td><?php echo $developer ['name']; ?></td>
<td><?php echo $developer ['gender']; ?></td>
<td><?php echo $developer ['age']; ?></td>
<td><?php echo $developer ['designation']; ?></td>
<td><?php echo $developer ['address']; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>

Exportar datos a Excel

Por último, en el fichero export_data.php implementaremos la funcionalidad de exportar los datos a Excel con PHP. Comprobaremos todos los valores que hemos recibido por POST del formulario.

if(isset($_POST["export_data"])) {
$filename = "phpzag_data_export_".date('Ymd') . ".xls";
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename="$filename"");
$show_coloumn = false;
if(!empty($developer_records)) {
foreach($developer_records as $record) {
if(!$show_coloumn) {
// display field/column names in first row
echo implode("t", array_keys($record)) . "n";
$show_coloumn = true;
}
echo implode("t", array_values($record)) . "n";
}
}
exit;
}

Fuente: phpzag.com

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP