Subir una tabla excel a mysql usando php

Estoy desarrollando un sitio web en el que tengo que hacer una aplicación de actualización de la base de datos.
En esta aplicación, una persona (que no tendrá ni idea de como pasar un archivo de hoja de cálculo a .csv) carga un archivo excel y actualiza los datos de una de las tablas de la base de datos.
Mi pregunta es, hay alguna manera de actualizar las tablas de la base de datos con un excel, ¿desde php? Es decir, yo recojo el nombre de la tabla a actualizar y el fichero.xls, datos que el usuario ha entrado desde un y un ... Abro el archivo, voy hoja por hoja convirtiéndolo a csv y luego lo "importo" a la base de datos, actualizando así la tabla
¿Esto se podría hacer? (O algo parecido, si es más fácil, mejor :P)

1 Respuesta

Respuesta
1
Hombre en formato csv está tirado de hacer, lo más complicado sería pasar desde excel hoja a hoja a csv (un coñazo)
Hay librerías para php que permiten "leer" el fichero xls
http://sourceforge.net/project/downloading.php?group_id=99160&use_mirror=switch&filename=phpExcelReader.zip&75681598
Este viene con ejemplos y tiene buena pinta.
Muchas gracias, la verdad es que funciona muy bien la librería... me ha servido de mucho...
Sólo tengo un problema... en los campos que hay fechas, las lee mal... por ejemplo:
Si yo tengo una fecha "03/09/36", al manipular y leer el excel, la convierte en "FriFri/SepSep/19361936"... supongo que tiene que ver con la codificación... cosa en la que voy muy muy perdida... :S:S
En el ejemplo de la librería que me pasaste, hay esto...
// Set output Encoding.
$data->setOutputEncoding('CP1251');

Que no tengo ni idea de qué es... pero... ¿puede ser que cambiándolo por otro "setoutputencoding" se me resuelva el problema de las fechas? ¿Quizá tendría que poner el utf8?
Gracias y perdona por mis dudas tontas...
G.
No hay dudas tontas, TODOS aprendemos, y para ello lo más rápido es preguntar (aunque yo prefiero investigar por mi cuenta jejej).
Lo que comentas de cambiar cp1251 parece interesante hasta que investigué un poco sobre ello, parece ser la página de códigos (o caracteres) para el cirílico, vamos caracteres en ruso, por lo que algo no me cuadra, si te extrae correctamente los campos de texto (y no te pone las R al revés) dando sólo problemas con las fechas, creo que más que un problema de página de códigos sea un problema sólo con la conversión de fechas. En el fichero reader.php (el fichero principal) en la línea 209 +- encontramos esto:
   /**
     * List of default date formats used by Excel
     *
     * @var array
     * @access public
     */
    var $dateFormats = array (
        0xe => "d/m/Y",
        0xf => "d-M-Y",
        0x10 => "d-M",
        0x11 => "M-Y",
        0x12 => "h:i a",
        0x13 => "h:i:s a",
        0x14 => "H:i",
        0x15 => "H:i:s",
        0x16 => "d/m/Y H:i",
        0x2d => "i:s",
        0x2e => "H:i:s",
        0x2f => "i:s.S");
Yo empezaría por ahí, pero sólo una cosa, si te fijas indica: "formatos por defecto", ¿por qué narices debería hacer cosas raras? ¿Version de excel? ¿Version con la que se ha guardado el fichero de excel? ¿Formato de fecha personalizado? No lo sé y la verdad excede de mis conocimientos, pero si localizas la linea a la que convierte tus fechas, y juegas con ella, seguramente puedas formatear tus fechas a tu gusto.
Otro detalle, "d/m/Y H:i", son acronimos internos de php para trabajar con fechas, ¿pero creo que se comprenden por si solos no? ;)
Informacion sobre la página de codigos "cirilico"
http://www.fingertipsoft.com/ref/cyrillic/cp1251.html
Informacion sobre la funcion date() de php
http://es.php.net/date
Siento no poder ser de más ayuda, pero como te he dicho antes, esto ya me sobrepasa, como ves tus dudas no son tontas, yo por lo menos he aprendido un par de cosillas.
Ok, muchas gracias por tu ayuda y por tu tiempo, "jugaré" con ese campo y al final, cabezona de mi, conseguiré algo, seguro.. :P
Hasta pronto,
G.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas