Sei sulla pagina 1di 5

Exportar a excel con PHP y Mysql

Muchas veces nos hemos encontrado con la necesidad de exportar informacin de una
tabla en nuestra base de datos a una hoja de Excel para generar informes o hacer
clculos extra, a continuacin veremos cmo podemos exportar la consulta de una
base de datos a un archivo Excel.
Que necesitamos?

Necesitamos un script php el cual va a generar la consulta a la base de datos y


luego va a generar un archivo .xls

Necesitamos tener la tabla que queremos exportar en nuestra base de datos.

Servidor WEB para correr el script PHP.


Proceso
El proceso es muy sencillo, vamos a darle un criterio a nuestra consulta para no
exportar toda la informacin de la tabla. Para efectos de este tutorial utilizaremos la
fecha.
Base de Datos.
Vamos a crear una base de datos en donde tendremos una tabla llamada ventas con
los siguientes campos.

ID

Ventas_dia

Fecha

Sera el identificador
del registro, nuestra
llave primaria y se
autoincrementara.
Formato INT

Supongamos que de
otro script se est
guardando esta
informacin , con
cada una de las
ventas del da, el
formato es DOUBLE
para poder guardar
decimales

Supongamos que
dicho script esta
guardando la fecha a
la que pertenece el
registro de ventas. El
formato es DATE

SQL para la creacin de la tabla

CREATE TABLE `ventas` (


`id` INT NOT NULL AUTO_INCREMENT ,
`Ventas_dia` DOUBLE NOT NULL ,
`fecha` DATE NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

Una vez tenemos la tabla creada vamos a insertar algunos valores para poder probar
nuestro script.
INSERT INTO `ventas` (`id`, `Ventas_dia`, `fecha`) VALUES (NULL, 234500, 2011-0409), (NULL, 530890, 2011-04-09);
Ahora que ya tenemos datos en nuestra tabla para poder probar nuestro script, vamos
a crear 2 archivos PHP:

Fecha.php

Reporte.php

Este archivo ser el encargado de


mostrar las fechas disponibles en
los registros de la base de datos
para escoger el da del cual
queremos exportar la
informacin.

Este archivo recoger el criterio


fecha y lo utilizara para limitar la
consulta a solo los registros que
tengan esa fecha y luego
generara el archivo Excel con la
informacin recuperada.

Fecha.php
Creamos un formulario para enviar la informacin a reporte.php
<form action=reporte.php method=post>
<label>Escoja la fecha</label><br /><br />
<select name=date>
<?php
//hacemos una conexin a nuestro servidor MySQL para poder recuperar las fechas
disponibles, cambie los datos de la conexin de acuerdo a los que se acomoden a su
servidor.
$conexio = mysql_connect(localhost,usuariotest,123456);
//realizamos la consulta

// Noten que estoy escribiendo select distinct que lo que hace es buscar un valor en la
base de datos pero no trae los que se repiten en el caso de la fecha sabes que se repite
porque hay varios registros en la tabla, pero no queremos traer cada uno de los
registros con esa fecha, solo me interesa traer la fecha 1 vez ya que ser nuestro
criterio de bsqueda.
$sql = mysql_query(select distinct fecha from tutoriales.ventas order by fecha DESC,
$conexio);
//una vez tenemos loa resultados vamos a colocarlos en un array y vamos a hacer un
loop para imprimir cada resultado en la opcin
while($row = mysql_fetch_array($sql)){
echo <option>$row[fecha]</option>;
}
?>
</select>
<input name=" type=submit value=Enviar />
</form>

Reporte.php
<?php
//insertamos los headers que van a generar el archivo excel
header(Content-type: application/vnd.ms-excel);
//en filename vamos a colocar el nombre con el que el archivo xls sera generado
header(Content-Disposition: attachment; filename=ventas.xls);
header(Pragma: no-cache);
header(Expires: 0);
//recogemos la variable de fecha con la que limitaremos la cinsulta.
$fecha = $_POST['date'];
//hacemos la conexion al servidor MySql
$conexio = mysql_connect(localhost,usuariotest,123456);
//realizamos la consulta
$sql = mysql_query(select * from tutoriales.ventas where fecha = $fecha,$conexio);

?>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Reporte de ventas</title>
</head>

<body><!Vamos a crear una tabla que ser impresa en el archivo excel >
<table width=600 border=0>
<tr>
<th width=600>
<!Imprimimos un titulo >
<div style=color:#003; text-align:center; text-shadow:#666;><font
size=+2>Reporte de Ventas <br /><?php echo $fecha ?></font></div></th>
</tr>
</table>
<!creamos la tabla de el reporte con border 1 y los ttulos>
<table width=641 border=1>
<tr>
<th width=50% style=background-color:#006; text-align:center;
color:#FFF><strong>Ventas</strong></th>
<th width=50% style=background-color:#006; text-align:center;
color:#FFF><strong>Fecha</strong></th>
</tr>
<?php
// Un proceso repetitivo para imprimir cada uno de los registros.
while($row = mysql_fetch_array($sql)){
echo
<tr>

<td bgcolor=\#ededed\ align=\center\>$row[Ventas_dia]</td>


<td bgcolor=\#ededed\ align=\center\>$row[fecha]</td>
</tr>;
}
?>
</table>
</body>
</html>

Ahora que ya tenemos los scripts que necesitamos corremos los archivos en nuestro
servidor web y obtenemos el archivo excel

Potrebbero piacerti anche