Exportar tabla MySQL a Excel en PHP

Subodh Poudel 3 abril 2022
Exportar tabla MySQL a Excel en PHP

Veremos cómo exportar la tabla en MySQL a Excel usando PHP en este artículo.

Exportar tabla MySQL a Excel en PHP

Podemos usar los encabezados de Excel en PHP para importar la tabla en MySQL a un archivo de Excel. Deberíamos especificar el encabezado Content-type como application/xls para incluir el encabezado de Excel. Para descargar el archivo de Excel, debemos usar el encabezado Content-Disposition como attachment y proporcionar el nombre del archivo con la opción nombre de archivo. Podemos consultar la tabla requerida en PHP y guardar el resultado en una variable. La variable debe ser una tabla HTML que contenga los resultados consultados. Luego, podemos enviar la información del encabezado al navegador usando la función header() y generar la variable que contiene la tabla usando la función echo. Desglosaremos los pasos para exportar una tabla MySQL a un archivo de Excel.

Por ejemplo, tenemos una tabla llamada users en nuestra base de datos.

+----+-----------+----------+------------+
| id | firstname | lastname | dob        |
+----+-----------+----------+------------+
|  1 | james     | gunn     | 1998-08-13 |
|  2 | bille     | joe      | 1970-02-15 |
+----+-----------+----------+------------+

Ahora, exportaremos la tabla a un archivo de Excel. Primero, creemos un botón para exportar la tabla a Excel.

<form method="post" action="index.php">
<input type="submit" name="submit" value="Export" />
</form>

Creamos un formulario que envía los datos al archivo index.php cuando se hace clic en el botón. El atributo name de nuestro botón es submit. Usaremos este valor más adelante para comprobar si los datos se han enviado en el formulario.

En primer lugar, tenemos que establecer una conexión con la base de datos. Para eso, use la función mysqli_connect() y proporcione los detalles de su servidor. Guarda la conexión en la variable $connect.

$connect = mysqli_connect("hostname", "username", "password", "db_name");

Tenga en cuenta que los valores escritos como parámetros de la función anterior son simplemente marcadores de posición. Debes completarlo con la información de tu servidor.

A continuación, podemos usar la función isset() para verificar si el formulario ha sido enviado. Como el atributo method es post en el formulario que creamos, deberíamos usar la matriz $_POST para comprobar. Usamos el valor del atributo name, submit como índice del array $_POST dentro de la función isset().

Después de eso, escribe la consulta SQL y guarda el resultado en la variable $res. La consulta para seleccionar todas las filas de la tabla users se encuentra a continuación.

SELECT * FROM users;

Luego, ejecute la consulta usando la función mysqli_query(). La variable de conexión de la base de datos es el primer parámetro de la función y la consulta de MySQL es el segundo parámetro. Podemos verificar el resultado de la consulta usando la función mysqli_num_rows(). La función devuelve el número de filas de la base de datos. El número de filas debe ser mayor que cero para ejecutar más operaciones. Escriba la condición if para evaluar la condición.

Dentro de la condición if, cree una variable $export y guarde la tabla HTML en ella. Cree los encabezados de la tabla con la etiqueta th. Cree los encabezados con el mismo nombre que los nombres de columna en la tabla. Después de eso, obtenga los datos de la base de datos utilizando la función mysqli_fetch_array(). Asigne la función a una variable $row.

Luego, use la variable $row para extraer los datos usando el nombre de la columna como índice. Envuelva la variable dentro de la etiqueta td para que los datos se completen en la tabla. A continuación se muestra un ejemplo.

<td>'.$row["id"].'</td>

A continuación, cierre todas las etiquetas de la tabla. La variable $export contiene la tabla como una cadena. A continuación, escriba la función header() para indicar el contenido enviado al navegador como un archivo de Excel. Nuevamente, use la función para descargar el archivo de Excel. El ejemplo se muestra a continuación.

 header('Content-Type: application/xls');
 header('Content-Disposition: attachment; filename=info.xls');

Finalmente, imprime la variable $export utilizando la función echo. Tenga en cuenta que toda la parte de PHP se realiza en el archivo index.php.

El ejemplo de código final se muestra a continuación.

Código de ejemplo:

$connect = mysqli_connect("hostname", "username", "password", "db_name");
if(isset($_POST["submit"]))
{
 $query = "SELECT * FROM users";
 $res = mysqli_query($connect, $query);
 if(mysqli_num_rows($res) > 0)
 {
 $export .= '
 <table> 
 <tr> 
 <th> id </th>
 <th>firstname</th> 
 <th>lastname</th> 
 <th>dob</th> 
 
 </tr>
 ';
 while($row = mysqli_fetch_array($res))
 {
 $export .= '
 <tr>
 <td>'.$row["id"].'</td> 
 <td>'.$row["firstname"].'</td> 
 <td>'.$row["lastname"].'</td> 
 <td>'.$row["dob"].'</td> 
 
 
 </tr>
 ';
 }
 $export .= '</table>';
 header('Content-Type: application/xls');
 header('Content-Disposition: attachment; filename=info.xls');
 echo $export;
 }
}

Cuando hacemos clic en el botón Exportar, podremos descargar el archivo de Excel, que contiene el contenido de la base de datos. De esta forma, podemos exportar la tabla MySQL a un archivo de Excel en PHP.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artículo relacionado - PHP MySQL