Foros del Web » Programando para Internet » PHP »

Insertar Excel en SQL 2005 usando PHP

Estas en el tema de Insertar Excel en SQL 2005 usando PHP en el foro de PHP en Foros del Web. Hola que tal a todos!! Mi pregunta es, ¿Como puedo insertarle a SQL información contenida en un Excel? Ya tengo por así decirlo un "camino" ...
  #1 (permalink)  
Antiguo 31/03/2014, 14:10
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Insertar Excel en SQL 2005 usando PHP

Hola que tal a todos!!

Mi pregunta es, ¿Como puedo insertarle a SQL información contenida en un Excel?
Ya tengo por así decirlo un "camino" trazado, pero si tienen uno mejor, con gusto puedo cambiarlo.

Primero, con un uploading file, el usuario selecciona el XLS a subir, despues, al validar que sea un XLS se llama una funcion de cargar_archivo.php...ahi es donde me atoro, si puedo conecatrme al servidor pero no se como manipular la informacion de Excel para insertarla en SQL.¿se puede saltar una fila cuando este insertando la informacion?¿como se le haria?... Muchas gracias por sus respuestas.

Nota: estoy usando una libreria llamada PHPExcel-1.7.7..

Este es el que maneja el uploader que esta en html...
Código PHP:
require_once 'manipula_exe.php';

if( !isset(
$_FILES['archivo']) ){
  echo 
'Ha habido un error, tienes que elegir un archivo<br/>';
  echo 
'<a href="index.php">Subir archivo</a>';
}else{
 
  
$nombre $_FILES['archivo']['name'];
  
$nombre_tmp $_FILES['archivo']['tmp_name'];
  
$tipo $_FILES['archivo']['type'];
  
$tamano $_FILES['archivo']['size'];
 
  
$ext_permitidas = array('xls','xlsx');
  
$partes_nombre explode('.'$nombre);
  
$extension end$partes_nombre );
  
$ext_correcta in_array($extension$ext_permitidas);
 
  
 
  
$limite 1000 1024;
 
  if( 
$ext_correcta  && $tamano <= $limite ){
    if( 
$_FILES['archivo']['error'] > ){
      echo 
'Error: ' $_FILES['archivo']['error'] . '<br/>';
    }else{
      
/*echo 'Nombre: ' . $nombre . '<br/>';
      echo 'Tipo: ' . $tipo . '<br/>';
      echo 'Tamaño: ' . ($tamano / 1024) . ' Kb<br/>';
      echo 'Guardado en: ' . $nombre_tmp;*/
 
      
if( file_exists'xls/'.$nombre) ){
        echo 
'<br/>El archivo '.$nombre.' ya existe.';
      }else{
        
move_uploaded_file($nombre_tmp,
          
"xls/" $nombre);
            
cargar_archivo($nombre);//AQUI MANDO LLAMAR LA FUNCION DE INSERCION
 
        /*echo "<br/>Guardado en: " . "xls/" . $nombre;*/
      
}
    }
  }else{
    echo 
'Archivo inválido, verifique el tamaño del archivo. No debe pasar de 1MB.';
  }

Y ESTE ES EL QUE SE SUPONE INSERTA EL EXCEL...
Código PHP:


require_once 'php/ext/PHPExcel-1.7.7/Classes/PHPExcel/IOFactory.php';
require_once 
'conexion/configuracion.inc.php';

function 
cargar_archivo($nombre){

                    
//cargamos el archivo que deseamos leer
                    
$objPHPExcel PHPExcel_IOFactory::load('xls/'.$nombre);
                    
//obtenemos los datos de la hoja activa (la primera)
                    
$objHoja=$objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
                    
//recorremos las filas obtenidas
                    
                    
                        
conectar(); // despues de conectar ya no se como
insertar las filas en el sql.... uso mssql... no las funciones sql regulares... 
  #2 (permalink)  
Antiguo 31/03/2014, 16:18
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Insertar Excel en SQL 2005 usando PHP

Holas,

No veo mucho del SQL que usas pero en principio podrias plantearte opciones, y pueda ser que en el excel contenga o exista una columna que se como el ID o valor unico con el puedas identificar en la tabla, es decir:

1. Buscar si existe o no.
2. Si existe puedas hacer un update.
3. Si no existe puedas hacer un insert.

Otra opcion:

1. Buscar si existe o no.
2. Si existe hacer con continue dentro del for o bucle que uses.
3. Si no existe puedas hacer un insert.

Ya nos cuentas cual opcion estas usando o aplicando.

Saludos,
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 01/04/2014, 22:18
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Insertar Excel en SQL 2005 usando PHP

Muchas gracias Gildus por pasar a responder. Ya "resolví" la inserción en la tabla de prueba, pero aun asi tengo problemas al insertar los datos ya que me dice que no se puede cambiar el string a dataset(que son campos de fecha en SQL), sabras de que otra manera puedo manipular informacion de EXCEL?
Gracias por responder.!!
Código PHP:

require_once 'php/ext/PHPExcel-1.7.7/Classes/PHPExcel/IOFactory.php';
require_once 
'conexion/configuracion.inc.php';

function 
cargar_archivo($nombre){

                    
//cargamos el archivo que deseamos leer
                    
$objPHPExcel PHPExcel_IOFactory::load('xls/'.$nombre);
                    
//obtenemos los datos de la hoja activa (la primera)
                    
$objHoja=$objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
                    
//recorremos las filas obtenidas
                    
                        
conectar();
                    
try {
foreach (
$objHoja as $iIndice=>$objCelda) {
        
//DE ESTA MANERA SE INSERTAN LAS COLUMNAS.    
    
$query mssql_query("INSERT INTO asistencia VALUES('.$objCelda[A].','.$objCelda[B].','. $objCelda[C].','. $objCelda[D].',
        '. $objCelda[E].','. $objCelda[F].','. $objCelda[G].','. $objCelda[H].','. $objCelda[I].','. $objCelda[J].'')"
) ;
                
                    }
}
catch(
Exception $e) {
    echo 
'Excepción capturada: ',  $e->getMessage(), "\n";

            
unlink('xls/'.$nombre);

            
mssql_close();
}

            
unlink('xls/'.$nombre);

            
mssql_close();



Etiquetas: excel, html, sql, usando
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 03:20.