Académique Documents
Professionnel Documents
Culture Documents
Vamos a ver cmo transformar un archivo Excel en un archivo .csv para poder leerlo desde nuestra
aplicacin usando PHP y as poderlo almacenar en nuestra base de datos.
La estructura que vamos a usar para nuestra plantilla en Excel es usar la primera lnea para poner el ttulo de
nuestros campos como por ejemplo Nombre, edad y profesin y el resto de lneas se corresponder a los datos
que deseemos insertar.
La primera lnea haremos que no se lea porque contiene los ttulos como veremos ms adelante.
A la tabla se le puede aadir efectos visuales como colores, eso no nos condicionar a la hora de trabajar.
Ahora deberemos de guardar nuestra Excel en formato .csv, para ello pulsamos archivo/guardar
como/examinar/CSV (Delimitado por comas).
Una vez tengamos nuestro archivo guardado podemos abrirlo con un editor de texto como el bloc de notas y
veremos lo siguiente:
Ya tenemos nuestro archivo preparado, como vemos la primera lnea no se va a leer, aunque ms adelante
explicar tambin cmo hacer que tambin lea la primera lnea por si no queremos ponerle ttulos a las
columnas.
Leemos los datos del archivo .csv con el siguiente cdigo en PHP
Ahora pasamos al cdigo de nuestra aplicacin, para comenzar explicar que se va a trabajar sobre dos
archivos, el primero ser donde se suba nuestro archivo.csv mediante un formulario y el segundo ser el que
reciba el archivo.csv y se encargue de leerlo y guardarlo en nuestra base de datos, para este ejemplo
usaremos MySQL.
Cdigo del formulario:
$tamanio = $_FILES['archivo']['size'];
$archivotmp = $_FILES['archivo']['tmp_name'];
//cargamos el archivo
$lineas = file($archivotmp);
//inicializamos variable a 0, esto nos ayudar a indicarle que no lea la primera lnea
$i=0;
//cerramos condicin
}
Te va ser muy til cuando necesitas cargar datos que ya tienes almacenados en una hoja de
Excel y que ahora necesitas insertarlos en tu base de datos, o bien necesitas jalar datos del
mismo Excel para realizar clculos en tu cdigo, etc. muchos ejemplos donde necesites leer un
documento en Excel.
Pero bueno a ti te interesa el ejemplo y eso te voy a explicar ahorita, paso a paso:
Primero: La base de datos que voy a utilizar para este ejemplo se llama: escuela y la tabla en la
voy insertar los registros extrados de Excel se llama alumnos y tiene los campos (id, no control,
nombre, grado, grupo, sexo).
Segundo: Necesitas descargar la Clase PHPExcel de Maarten Balliauw (tiene licencia LGPL), y
la puedes descargar desde aqu http://www.codeplex.com/PHPExcel, o bien ya viene incluida
en el ejemplo.
<Head>
</head>
<body>
</form>
<?php
extract($_POST);
if ($action == upload){
$archivo = $_FILES[excel][name];
$tipo = $_FILES[excel][type];
$destino = bak_.$archivo;
////////////////////////////////////////////////////////
if (file_exists (bak_.$archivo)){
require_once(Classes/PHPExcel.php);
require_once(Classes/PHPExcel/Reader/Excel2007.php);
$objPHPExcel = $objReader->load(bak_.$archivo);
$objPHPExcel->setActiveSheetIndex(0);
$_DATOS_EXCEL[$i][nocontrol] = $objPHPExcel->getActiveSheet()->getCell(B.$i)-
>getCalculatedValue();
$_DATOS_EXCEL[$i][nombre] = $objPHPExcel->getActiveSheet()->getCell(C.$i)-
>getCalculatedValue();
$_DATOS_EXCEL[$i][grado]= $objPHPExcel->getActiveSheet()->getCell(D.$i)-
>getCalculatedValue();
$_DATOS_EXCEL[$i][grupo]= $objPHPExcel->getActiveSheet()->getCell(E.$i)-
>getCalculatedValue();
$_DATOS_EXCEL[$i][sexo] = $objPHPExcel->getActiveSheet()->getCell(F.$i)-
>getCalculatedValue();
$errores=0;
$result = mysql_query($sql);
/////////////////////////////////////////////////////////////////////////
unlink($destino);
?>
</body>
</html>
Cuarto: Te explico, lo primer
o es el formulario HTML que solicita el archivo a importar, luego una vez copiado correctamente
el mismo en el servidor y gracias a la clase PHPExcel comenzamos a recorrerlo y obtener los
datos del mismo hacia un arreglo multidimensional, ojo aqu se podra ir creando la consulta sql
para insertarlo en la BD, pero la idea de guardarlo en el arreglo es poder procesar, utilizar y/o
calcular si lo fuese necesario con esos datos almacenados.
Ya una vez almacenado los datos en el arreglo ahora los utilizamos para pasarlos a la
consulta que se encarga de insertar los datos.