De Excel a MySQL fácilmente y sin romperte la cabeza by @puntogeek

fuente: http://www.puntogeek.com/2011/06/24/de-excel-a-mysql-facilmente-y-sin-romperte-la-cabeza

Hoy me vi en la necesidad de exportar una “base de datos” creada en Excel (Las comillas son porque no estoy del todo de acuerdo en que se hagan en Excel, existiendo soluciones específicas para ello), a un servidor con MySQL. Y como fue algo nuevo para mi, les dejo el como lo realicé, por si a alguien más le llegase a servir.

Antes que todo crearemos una pequeña tabla en Excel a manera de ejemplo, con 4 campos como se observa en la imagen de arriba, o bien, si ya tienen su tabla hecha, se pueden ahorrar este paso.

Lo que sigue es guardar el archivo, pero no como documento de Excel. En las opciones de “Guardar como” seleccionaremos la que mencione “CSV (Delimitado por comas)(*.csv)“, o algo similar.

Con Excel ya terminamos. Pero tenemos que modificar algo en este archivo. Así que lo abrimos en nuestro editor de texto favorito, y vamos a eliminar la primera línea. Esta es la que tiene el título de los campos, y no nos interesa, ya que de dejarla, se rellenaría nuestra base de datos en MySQL con esos valores.

Ahora sí, manos a la obra con phpmyadmin. Primero tenemos que crear una nueva base de datos, acto seguido creamos una tabla, y añadiremos los 4 campos correspondientes: nombre, sexo, estado_civil y nacionalidad. Con sus respectivos atributos y toda la cosa.

El nombre de mi tabla es “fulanitos”, en una base de datos que llamé “xxx”. En este caso todos serán del tipo VARCHAR, con longitud más o menos calculada de rápido, a manera de ejemplo solamente. Y vemos que todo salió bien:

Sigue la última parte. Es aquí donde radica el “truco”. Que no es más que una simplesentencia SQL que lo que hará será tomar un archivo como referencia, leerlo, e interpretarlo según dos parámetros que le indicaremos:

  • Los datos que van en cada campo se separan mediante una coma (“,”)
  • Los diferentes registros se separan por un salto de línea (“\n”)

La sentencia es la siguiente, y la debemos realizar desde la sección de “SQL”, que está en el menú superior:

LOAD DATA INFILE ‘ubicación/del/archivo’ INTO TABLE ‘nombre_de_la_tabla’

FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\n’;

Y listo, si todo salió bien (Si hubo errores, revisa bien la ubicación del archivo que indicaste), tendremos nuestra BDD de Excel exportada a MySQL:

Tip: En mi caso, en Ubuntu, coloqué el archivo .csv en el escritorio, y la ruta que seguí para llegar a él desde la sentencia SQL fue:  ../../../../home/jonateo/Desktop/bdd.csv

Para que lo tengan en cuenta, es una ruta un poco rara sí, pero los “../” son para retroceder y poder llegar a las carpetas padre.

Generar archivos de Excel y Word desde PHP casi por arte de magia by donestandares.wordpress.com

Fuente: donestandares.wordpress.com

 

En algunos proyectos sea personales o de oficina, necesitamos generar archivos Excel y Word desde PHP. a diferencia de formatos abiertos (los que comúnmente maneja Libre Office y otras offimáticas libres) que tienen mayor documentación, los archivos de propiedad de Microsoft son muy cerrados lo que dificulta la documentación.

Generar archivo EXCEL desde PHP

Lo primero que tenemos que entender, es que una hoja de cálculo es una tabla gigante, por lo tanto cuando vayamos a exportar, lo que exportaremos es una tabla HTML.

Una tabla de ejemplo de algunos jugadores de mi equipo del alma Millonarios FC

<h1>Tabla de asistencias Pase-gol de los jugadores de Millonarios F.C.</h1>
<table cellspacing="0" cellpadding="0">
 <tr>
 <th>Pedro Franco</th>
 <th>Wilson Carpintero</th>
 <th>&Aacute;lvaro Barros</th>
 <th>Mayer Candelo</th>
 </tr>
 <tr>
 <td>20</td>
 <td>80</td>
 <td>10</td>
 <td>34</td>
 </tr>
 <tr>
 <td>78</td>
 <td>90</td>
 <td>10</td>
 <td>02</td>
 </tr>
</table>

con esta tabla, procedemos a insertarle en la parte superior un código PHP que es el que generará el archivo de Microsoft Excel:

<?php
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=nombre_del_archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");
?>

Lo único que tenés que cambiarle es donde dice: “nombre_del_archivo.xls” y ya, ese es el nombre del archivo que genera.

El código final nos quedaría así:

<?
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=nombre_del_archivo.xls");
header("Pragma: no-cache");
header("Expires: 0");?>
 
<h1>Tabla de asistencias Pase-gol de los jugadores de Millonarios F.C.</h1>
 
<table cellspacing="0" cellpadding="0">
 <tr>
 
 <th>Pedro Franco</th>
 <th>Wilson Carpintero</th>
 <th>&Aacute;lvaro Barros</th>
 <th>Mayer Candelo</th>
 </tr>
 <tr>
 <td>20</td>
 <td>80</td>
 <td>10</td>
 <td>34</td>
 </tr>
 <tr>
 <td>78</td>
 <td>90</td>
 <td>10</td>
 <td>02</td>
 </tr>
</table>

Guardás el archivo .php con el nombre que mirés adecuado, ejemplo tabla_jugadores_excel.php y lo abrís desde el la url normal, lo que te mostrará un cuadro de descarga del archivo excel