Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Importar datos de excel a mysql mediante codigo PHP (http://www.forosdelweb.com/f18/importar-datos-excel-mysql-mediante-codigo-php-334083/)

annieh87 15/09/2005 17:11

Importar datos de excel a mysql mediante codigo PHP
 
Hola:

Por favor necesito ayuda para importar mis datos desde un archivo excel a mysql mediante un formulario creado en php, es decir el formulario debe mostrar los encabezados de las columnas de excel de manera que me permita elegir que columnas deben ser copiadas a mi base de datos. Para lo cual necesito saber como abrir un archivo excel en php y tambien me sería util ejemplos de codigo para recorrer columnas y hojas de mi libro excel. Gracias de antemano.

elmaster 15/09/2005 20:47

¿No te convendrá exportar el archivo como CSV y ahí entrarle?

No conozco còmo acceder archivos excel desde PHP, si alguien sabe o lo ha investigado estarìa interesasnte saberlo.

Saludos!

JordiSolanas 16/09/2005 07:30

de excel a mysql
 
A mi me pasaron lo que sigue abajo y me funciona.
Que te vaya bien.

Seguramente, os habéis preguntado como poder pasar los datos de una hoja de Excel a una Base de Datos
Mysql, por ejemplo, para que la gente pueda ver los artículos que hay en mi almacén.
1.-El primer paso es crear la tabla.
CREATE TABLE almacen
(
articulo CHAR(80),
color CHAR(20) ,
material CHAR(60),
precio INTEGER
);
2.- El segundo paso es convertir el fichero de excel en un fichero con formato (.CSV).

Esto consiste en generar un fichero, donde los datos de cada fila van separados por coma.

Para guardarlo se debe seleccionar "Guardar como" y elegir el Tipo (CSV "Delimitado por comas").
Le damos el nombre "datos.csv".

El fichero generado quedaría algo así:

Camiseta,Blanca,Algodón,1500
Pantalón,Azul,Algodón,5000
Jersey,Negro,Algodón,3500
Malla,Azul,Algodón,3000
Top,Blanco,Algodón,3400
Correa,Negra,Cuero,3400
Gorra,Colores,Algodón,1400
Calcetines,Blancos,Algodón,500
3.-El tercer paso es leer el fichero "datos.scv" y meterlo el la tabla "Almacen" de la Base de Datos.
<?php

require("conexion.inc");
$row = 1;

$fp = fopen ("datos.scv","r");
while ($data = fgetcsv ($fp, 1000, ","))
{
$num = count ($data);
print " <br>";
$row++;

echo "$row.". $data[0]." ------------ ".$data[1]."-------".$data[3];
$insertar="INSERT INTO almacen (articulo,color,material,precio) VALUES ('$data[0]','$data[1]','data[2]','data[3]')";
mysql_query($insertar);
}
fclose ($fp);
?>
Esto lo único que hace, es leer del fichero datos.csv e introducirlo en el Almacén.
PASAR EL CONTENIDO DE UNA TABLA A UN FICHERO DE EXCEL.
$archivo="archivo.xls";
$busca=mysql_query(SELECT * FROM clientes");
while ($row = mysql_fetch_row($busca))
{
$a=$row[0];
$a.=",$row[1]";
$a.=",$row[2]";
$a.=",$row[3]";
$a.=",$row[4] \n";
echo $a;
$p=fopen("$archivo","a");
if($p)
{
fputs($p,$a);
}
}
fclose($p);
echo "<a href=$archivo>Ver archivo</a>"

Anarninquë 11/04/2006 14:53

Excel a MySQL
 
Porbé este código y no me funciona... alguna idea...

les dejo acá mi code (es igual al de arriba con unas pequeñas modificaciones para adecuarlo a mis necesidades!):

Código PHP:

<?php
require("config.php");
$row 1;
$fp fopen ("prueba.csv","r");
while (
$data fgetcsv ($fp1000";"))
{
$num count ($data);
print 
" <br>";
$row++;
echo 
"$row."$data[0]." ------------ ".$data[1]." ------------ ".$data[2].$data[3];
$insertar="INSERT INTO sorteo_inaugural (numero,nombre,mail,ci,date,time) VALUES ('$data[0]','$data[1]','data[2]','data[3]','data[4]','data[5]')";
mysql_query($insertar);
}
fclose ($fp);
?>


Alguna idea???:neurotico :neurotico :neurotico

Seppo 11/04/2006 15:01

Yo tuve q hacerlo "por única vez" y lo que hice fue un copy - paste en PHP y setearlo en una variable. Después usaba un explode de los saltos de línea, y un explode de las tabulaciones entonces recorría las filas con foreachs

Por ejemplo:
Código PHP:

<?php
$variable 
= <<<datos
dato11    dato21    dato31
dato12    dato22    dato32
datos;

$filas explode("\n",$variable);

foreach (
$filas AS $fila) {
    
$columnas explode("\t",$fila);
    echo 
$columnas[1];
}

?>

Saludos

Anarninquë 11/04/2006 15:04

Cita:

$variable = <<<datos
dato11 dato21 dato31
dato12 dato22 dato32
datos;
Disculpá mi ignorancia pero no entiendo!

Aparte (sin querer despreciar tu valiosa ayuda), me gustaría encontrarle la vuelta al código que puse arriba, porque es raro, me agrega el 1er reg... y los demás no!)...
Gracias, y espero ayuda, please!!! :adios:

Anarninquë 11/04/2006 15:11

Encontré un posible error, que no se porqué sucede, ni como solucionarlo, pero quizá alguien sepa...

El problema es que TODA la cadena de datos me la guarda en $data[0], y en los demás NADA...
no se porque, porque supuestamente debería separar por cada ";", verdad?

a alguien se le ocurre porque o como solucionarlo???

gracias!

Anarninquë 11/04/2006 15:39

Solucionado!
 
Hola, escribo para agradecer a todos, y para comentarles que se me ocurrió cuál era el problema (mientras me duchaba :risa:), y lo probé y efectivamente era eso...

No sé porqué, las lineas (dato1;otrodato;etc;etc) me habían quedado entre comillas (y por eso, agarraba toda la linea como el primer registro)...

Pero el código estaba bien, acá lo dejo por si en otro momento alguien se topa con esto buscando lo mismo que yo buscaba hoy...

CÓDIGO PARA SUBIR UN EXCEL A MYSQL:

Código PHP:

<?php
require("config.php");
$row 1;
$fp fopen ("prueba.csv","r");
while (
$data fgetcsv ($fp1000";"))
{
$num count ($data);
print 
" <br>";
$row++;
echo 
"$row- ".$data[0].$data[1].$data[2].$data[3].$data[4].$data[5];
$insertar="INSERT INTO sorteo_inaugural (numero,nombre,mail,ci,date,time) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]')";
mysql_query($insertar);
}
fclose ($fp);
?>

El excel hay que guardarlo como "CSV" y subirlo a la carpeta donde va este script...


saludos, y gracias de nuevo :adios:

xyyy7 28/05/2006 17:36

Esto Funciona Perfectamente amigos... No estaba en busca de esto llegue aqui por el buscador de esta pagina.... pero estaba interesante este tema..
ami tambien se sirvio

Saludos.-

Spideep 04/06/2007 11:03

Re: Importar datos de excel a mysql mediante codigo PHP
 
Oigan todo esto esta muy interesante, pero no habrá forma de hacerlo todo en un sólo paso? no necesariamente con php sino usando una librería de navicat y programando en algun lenguaje no web sino de escritorio, es posible? alguien sabe como hacerlo?

usermax 04/06/2007 11:15

Re: Importar datos de excel a mysql mediante codigo PHP
 
Hola,

Tengo un programa que lo hace rápido y bien.
Me escribes un mail y te lo paso.
atencion.online#( a r r o b a )#gmail#.#com

Quita los # y escribe bien el arroba, lo puse asi para que lo escaneen los robots.

Saludos

PD: funciona con excel ycon CSV

Capi666 20/09/2007 04:52

Re: Importar datos de excel a mysql mediante codigo PHP
 
Cita:

Iniciado por usermax (Mensaje 2025512)
Hola,

Tengo un programa que lo hace rápido y bien.
Me escribes un mail y te lo paso.
atencion.online#( a r r o b a )#gmail#.#com

Quita los # y escribe bien el arroba, lo puse asi para que lo escaneen los robots.

Saludos

PD: funciona con excel ycon CSV

Podria colgar el programa?

Gracias,

victormanuel2008 19/12/2007 14:40

Re: Importar datos de excel a mysql mediante codigo PHP
 
Código PHP:

<?php 
require("config.php"); 
$row 1
$fp fopen ("prueba.csv","r"); 
while (
$data fgetcsv ($fp1000";")) 

$num count ($data); 
print 
" <br>"
$row++; 
echo 
"$row- ".$data[0].$data[1].$data[2].$data[3].$data[4].$data[5]; 
$insertar="INSERT INTO sorteo_inaugural (numero,nombre,mail,ci,date,time) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]')"
mysql_query($insertar); 

fclose ($fp); 
?>

En mi caso ya tengo creada una tabla pero aca sale un paso pero es el final, cuando ya creo el archivo .csv, pero como traspaso un excel a un .csv, no entiendo esa parte, por otro lado que me explique como trabaja el foreach, nunca lo he entendido, y por ultimo de donde sacas el archivo config.php ¿es una biblioteca de php?. Esas son mis dudas, gracias y suerte.

victormanuel2008 20/12/2007 08:26

Re: Importar datos de excel a mysql mediante codigo PHP
 
Hola amigos, todavia sigo esperando respuesta de mi pregunta, la necesito a la brevendad por favor, es q' me estan apurando bastante, y bueno a mi me cuesta entnder siempre he tenido q' necesitar tiempo para aprender, nos vemos olaja lo antes posible, gracias.

xyyy7 22/12/2007 04:43

Re: Importar datos de excel a mysql mediante codigo PHP
 
Código PHP:

<?
require("config.php");
?>

Se supone que config.php contiene los datos de conexión a tu DB MySQL

y respecto a tu pregunta de "como traspaso un excel a un .csv"

Bueno en Excel click en :

ARCHIVO -> GUARDAR COMO... -> GUARDAR COMO TIPO -> CSV (delimitado por comas)(*.csv)

Saludos.-

alex_007002 15/01/2008 09:37

Re: Importar datos de excel a mysql mediante codigo PHP
 
una pregunta y no ay una forma de hacerlo con exel? 'recorer sus filas y columnas'


La zona horaria es GMT -6. Ahora son las 01:13.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.