Foros del Web » Programando para Internet » PHP »

Importar datos de excel a mysql mediante codigo PHP

Estas en el tema de Importar datos de excel a mysql mediante codigo PHP en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 15/09/2005, 17:11
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1
Antigüedad: 18 años, 7 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 15/09/2005, 20:47
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 19 años
Puntos: 0
¿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!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #3 (permalink)  
Antiguo 16/09/2005, 07:30
 
Fecha de Ingreso: junio-2004
Mensajes: 53
Antigüedad: 19 años, 10 meses
Puntos: 3
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>"
  #4 (permalink)  
Antiguo 11/04/2006, 14:53
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
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???
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #5 (permalink)  
Antiguo 11/04/2006, 15:01
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
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
  #6 (permalink)  
Antiguo 11/04/2006, 15:04
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
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!!!
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #7 (permalink)  
Antiguo 11/04/2006, 15:11
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
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!
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #8 (permalink)  
Antiguo 11/04/2006, 15:39
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Solucionado!

Hola, escribo para agradecer a todos, y para comentarles que se me ocurrió cuál era el problema (mientras me duchaba ), 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
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #9 (permalink)  
Antiguo 28/05/2006, 17:36
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
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.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #10 (permalink)  
Antiguo 04/06/2007, 11:03
 
Fecha de Ingreso: febrero-2007
Mensajes: 5
Antigüedad: 17 años, 2 meses
Puntos: 0
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?
  #11 (permalink)  
Antiguo 04/06/2007, 11:15
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
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

Última edición por usermax; 05/06/2007 a las 11:26
  #12 (permalink)  
Antiguo 20/09/2007, 04:52
 
Fecha de Ingreso: febrero-2007
Ubicación: Valencia
Mensajes: 457
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Importar datos de excel a mysql mediante codigo PHP

Cita:
Iniciado por usermax Ver Mensaje
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,
  #13 (permalink)  
Antiguo 19/12/2007, 14:40
 
Fecha de Ingreso: noviembre-2007
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
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.

Última edición por victormanuel2008; 20/12/2007 a las 08:27
  #14 (permalink)  
Antiguo 20/12/2007, 08:26
 
Fecha de Ingreso: noviembre-2007
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
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.
  #15 (permalink)  
Antiguo 22/12/2007, 04:43
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
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.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #16 (permalink)  
Antiguo 15/01/2008, 09:37
 
Fecha de Ingreso: enero-2008
Mensajes: 1
Antigüedad: 16 años, 3 meses
Puntos: 0
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'
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 18:36.