Foros del Web » Programando para Internet » PHP »

APORTE- de Excell 2007 a mysql

Estas en el tema de APORTE- de Excell 2007 a mysql en el foro de PHP en Foros del Web. Saludos a la banda forera Bueno pues me tope hace poco con que me salieron con que necesitaba hacer unas cosas en php , entre ...
  #1 (permalink)  
Antiguo 24/07/2012, 21:25
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
APORTE- de Excell 2007 a mysql

Saludos a la banda forera

Bueno pues me tope hace poco con que me salieron con que necesitaba hacer unas cosas en php , entre ello importar un excell 2007 a una tabla de mysql , intente guardando como ods el excell y guardarlo en la base de datos con phpmyadmin, pero me pinto cremas, por que mezclaba unos campos, asi que mejor me eche un script malevolo para la insertada directamente de un xlsx a una tabla de mysql, la idea es que tanto el excell como la tabla tengan una estructura similar y tengamos phpexcell funcionando, no es el script original por que tenia la tabla y los campos fijos asi que lo generalice un poco , se los dejo , si les sirve chido , si no , también chido

Código PHP:
Ver original
  1. <?
  2. #Autor Gerardo Aquino López
  3. #su conexion a la base de datos
  4. require_once('conn.php');
  5.  
  6. #si esta choncho el excell luego se truena entonces subo el tiempo de ejecucion y el tamaño de la memoria
  7. ini_set('memory_limit','64M');
  8. #incluyo la clase phpexcel y el archivo Excel a importar
  9. require_once '../PHPExcel-1.7.7/Classes/PHPExcel/IOFactory.php';
  10. $objReader = PHPExcel_IOFactory::createReader('Excel2007');
  11. $nombre_archivo="elarchivo.xlsx";
  12. $objPHPExcel = $objReader->load($nombre_archivo);
  13. #defino tabla y campos
  14. $tabla="tabla";
  15. $campos[]="campo1";
  16. $campos[]="campo2";
  17. $campos[]="campo3";
  18.  
  19. #funcion malevola
  20. function guarda(){
  21.         global $tabla;
  22.         global $conn;
  23.         global $campos;
  24.         $num_datos=count($arg_list);
  25.         $sql="INSERT INTO `$tabla` (";
  26.         foreach($campos as $campo)
  27.                 $sql.="$campo,";
  28.         )
  29.         $sql=substr($sql,0,strlen($sql)-1);
  30.         $sql.=") VALUES (";
  31.         for ($i=0;$i<$num_datos;$i++){
  32.                 if(isset($arg_list[$i])){
  33.                         $sql.="'{$arg_list[$i]}',";
  34.                 }
  35.                 else{
  36.                         $sql.="'',";
  37.                 }
  38.         }
  39.         $sql=substr($sql,0,strlen($sql)-1).");";
  40.         mysql_query($sql,$conn);
  41.  
  42. }
  43.  
  44. #recorrido de los campos del excell para insertarlos en la base de datos
  45. $objWorksheet = $objPHPExcel->getActiveSheet();
  46. foreach ($objWorksheet->getRowIterator() as $row) {
  47.   $cellIterator = $row->getCellIterator();
  48.   $cellIterator->setIterateOnlyExistingCells(false);
  49.   unset ($arg_list)   ;
  50.   foreach ($cellIterator as $cell) {
  51.         $arg_list[]=$cell->getCalculatedValue();
  52.   }
  53.   guarda($arg_list);
  54. }
  55. unset($objPHPExcel);
  56. mysql_close($conn);
  57. ?>
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #2 (permalink)  
Antiguo 24/07/2012, 22:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: APORTE- de Excell 2007 a mysql

Buen aporte, sólo una pequeña observación; es mejor inicializar un array antes de usarlo para evitar errores, por ejemplo:

$campos[] = 'Campo1';

$campos no está definido y creo que no funcionará correctamente en algunos servidores, lo correcto sería:

$campos = array();
$campos[] = 'Campo1';

O bien:

$campos = array('Campo1', 'Campo2', 'CampoN');

Más abajo tienes:

unset($arg_list);
$arg_list[] = /* bla bla bla */

Lo correcto es crear el array vacío, en lugar de unset, porque inicializas la variable específicamente para lo que la necesitas:

$arg_list = array();
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 24/07/2012, 22:51
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: APORTE- de Excell 2007 a mysql

ni como refutar buenas practicas asi we?

Código PHP:
Ver original
  1. <?
  2. #Autor Gerardo Aquino López
  3. #su conexion a la base de datos
  4. require_once('conn.php');
  5.  
  6. #si esta choncho el excell luego se truena entonces subo el tiempo de ejecucion y el tamaño de la memoria
  7. ini_set('memory_limit','64M');
  8. #incluyo la clase phpexcel y el archivo Excel a importar
  9. require_once '../PHPExcel-1.7.7/Classes/PHPExcel/IOFactory.php';
  10. $objReader = PHPExcel_IOFactory::createReader('Excel2007');
  11. $nombre_archivo="elarchivo.xlsx";
  12. $objPHPExcel = $objReader->load($nombre_archivo);
  13. #defino tabla y campos
  14. $tabla="tabla";
  15. $campos=array();# me calabaceo el triby XD
  16. $campos[]="campo1";
  17. $campos[]="campo2";
  18. $campos[]="campo3";
  19.  
  20. #funcion malevola
  21. function guarda($arg_list){
  22.         global $tabla;
  23.         global $conn;
  24.         global $campos;
  25.         $num_datos=count($arg_list);
  26.         $sql="INSERT INTO `$tabla` (";
  27.         foreach($campos as $campo)
  28.                 $sql.="$campo,";
  29.         )
  30.         $sql=substr($sql,0,strlen($sql)-1);
  31.         $sql.=") VALUES (";
  32.         for ($i=0;$i<$num_datos;$i++){
  33.                 if(isset($arg_list[$i])){
  34.                         $sql.="'{$arg_list[$i]}',";
  35.                 }
  36.                 else{
  37.                         $sql.="'',";
  38.                 }
  39.         }
  40.         $sql=substr($sql,0,strlen($sql)-1).");";
  41.         mysql_query($sql,$conn);
  42.  
  43. }
  44.  
  45. #recorrido de los campos del excell para insertarlos en la base de datos
  46. $objWorksheet = $objPHPExcel->getActiveSheet();
  47. foreach ($objWorksheet->getRowIterator() as $row) {
  48.   $cellIterator = $row->getCellIterator();
  49.   $cellIterator->setIterateOnlyExistingCells(false);
  50.   unset ($arg_list)   ;
  51.   $arg_list=array();# me calabaceo el triby XD
  52.  foreach ($cellIterator as $cell) {
  53.         $arg_list[]=$cell->getCalculatedValue();
  54.   }
  55.   guarda($arg_list);
  56. }
  57. unset($objPHPExcel);
  58. mysql_close($conn);
  59. ?>
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #4 (permalink)  
Antiguo 24/07/2012, 23:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: APORTE- de Excell 2007 a mysql

Sí, pero no fue calabaceada, sólo observación!
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 24/07/2012, 23:12
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: APORTE- de Excell 2007 a mysql

jajaja es coto tks por la observacion carnal
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo

Etiquetas: excell, mysql, sql, tabla, aportes
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:24.