Foros del Web » Programando para Internet » PHP »

Exportar datos de Excel a la DB

Estas en el tema de Exportar datos de Excel a la DB en el foro de PHP en Foros del Web. Leyendo este interesante post , pude visualizar en cierta medida cómo se ejecuta el pcdto del asunto sin embargo, en mi caso me encuentro con ...
  #1 (permalink)  
Antiguo 09/10/2006, 14:35
Avatar de cmarti  
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 20 años, 5 meses
Puntos: 1
Exportar datos de Excel a la DB

Leyendo este interesante post, pude visualizar en cierta medida cómo se ejecuta el pcdto del asunto sin embargo, en mi caso me encuentro con un problemita.
Para empezar, imaginen Uds. que tengo solo 2 columnas. En la 1era, solo irá un Nro (Id de cliente) y en la 2da una descripción de varios items. En excel, esta 2da columna tiene muchísimos pero muchísimos datos algunos de los cuales vienen separados por "," y otros por ";". Dejar un separador u otro no es problema porque con un sencillo "Buscar Reemplazar" lo logro pero COMO HAGO para separar los datos de un registro con otro cuando en la mismísima celda de excel, tengo un grupo importante de texto con estos caracteres.
Ejemplo:
ID Cliente: 124555
Deportes: Nautica, Aladeltismo; Buceo ; Paracaidismo, Equitación; etc. etc. etc
Me olvidaba. Si lo notaron, existen blancos entre los separadores por lo cual, lo ideal sería que una vez exportados (o antes) los datos a la DB, estos blancos desaparecieran y quedara la cosa "limpita".
Como hago porque si dejo la salida como un .CSV tal cual se menciona en el post, los separadores tomarían un rol importante. Se me ocurre que en este punto podría alterar la Configuración Regional de mi Pc pero necesito que al campo 2 se exporte obviamente con todo su contenido.
Debería poner un fin de registro al final del último dato de las celdas 2.?
M Gs.
__________________
When all else is lost the future still remains.
  #2 (permalink)  
Antiguo 09/10/2006, 14:50
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Pues yo creo que deverías de reemplazar esos carácteres problematicos por unos no tan comunes. Lo que yo hago es reemplazar (,) por (|) y (;) por (^) en Excel por decir algo y antes de guardarlos en la base de datos utilizo la función str_replace pasandole los array's de esta forma:

$encuentra = array ( ',', ';');
$remplaza = array ( '|', '^' );
$campo = str_replace ( $encuentra, $remplaza, $campo );

Como vez es muy sencillo y hay que tener en cuenta el orden y el número de elementos de los array's ya que (,) es reemplazada por (|) y así sucesivamente. Espero haberme dado a entender y mi aporte te sirva por lo menos para darte una idea.Suerte
  #3 (permalink)  
Antiguo 11/10/2006, 04:22
Avatar de cmarti  
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 20 años, 5 meses
Puntos: 1
De Excel a DB, caracteres "," ";" Fin de registro?

En realidad me preocupa (porque nunca lo hice) cómo considera PHP el "fin de registro". Creo recordar que en algunos procesos de volcado y captura este caracter se "colocaba" pero como digo, el contenido de las celdas en cuanto a las comas o los punto y coma no me preocupa mucho dado que el dato sale de un excel a una DB. El punto es dónde PHP considera el fin de registro considerando esos dos caracteres ("," ";")contenidos en la celda (2da en mi caso).
GS
__________________
When all else is lost the future still remains.
  #4 (permalink)  
Antiguo 11/10/2006, 11:34
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Si piensas exportar de excel un documento CSV a una base de datos en los que más deberías de fijarte es en los separadores de coma (,) ya que un documento CSV separado por comas, separará las celdas con este caracter, por ejemplo, si tienes 2 columnar de esta manera (idcliente, otracelda):

idcliente+otracelda
1 |cpu
2 |monitor;procesador
3 |mouse,teclado;gabinete
4 |tarjeta de red

A la hora de guardar como CSV las celdas de la fila tres te causarán problemas ya que las comas representan otro registro y la fila tres te dará como resultado tres celdas en lugar de las dos que ya tenías porque te quedaría algo así:

3,mouse,teclado;gabinete

mientras que los demás campos sí tendrán dos registros:

1,cpu
2,monitor;procesador
4,tarjeta de red

Ahora entiendes lo que quiero decir, el carácter que deberías de cambiar por otro no tan común es la coma para que no te genere este tipo de problemas. Entonces como puedes ver no es PHP quien decide donde termina el registro sino que PHP sólo obedece lo que tu le mandaste, que es, un registro acana cada que encuentre una coma.

Espero haberme dado a entender. Suerte
  #5 (permalink)  
Antiguo 11/10/2006, 19:43
Avatar de cmarti  
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 20 años, 5 meses
Puntos: 1
Hola Erik. Desde ya que fuíste muy pero muy claro. Intento cerrar este post de la siguiente manera.
A) De no equivocarme, la coma o el "punto y coma" puede que jueguen un papel preponderante según sean los caracteres bajos los cuales uno dejó configurada valga la redundancia la "Configuración Regional" de su Pc.
En caso de no serlo,
B) Lo que yo decía es: No estoy pasando de un excel a un .CSV sino de un Excel a una DB vale decir que la 2da celda (la celda de los caracteres complicados) es la que me interesa durante el proceso de importación cómo la considera PHP.
Gs.
__________________
When all else is lost the future still remains.
  #6 (permalink)  
Antiguo 11/10/2006, 20:58
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Cita:
Iniciado por cmarti Ver Mensaje
No estoy pasando de un excel a un .CSV sino de un Excel a una DB
A lo que veo quieres exportar de un Excel es decir un documento .xls a una Base de Datos, creo que esto no se puede hacer hasta donde yo sé, ya que hay problemas para leer el archivo (para distinguir entre la Hoja 1,Hoja 2,Hoja 3), así que lo tendrías que guardar con un separador que es lo que hace el archivo .csv que si te fijas no te deja guardar más de una hoja es algo así como guardar en un archivo .txt ¿me entiendes?. Y si se puede pues que nos hagan el favor de explicarnos y de paso aprendo algo nuevo.

Bueno espero que esto sirva de aporte. Suerte
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.
Respuesta




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