Foros del Web » Programando para Internet » PHP »

Importar 2 archivos *.xls a Mysql.

Estas en el tema de Importar 2 archivos *.xls a Mysql. en el foro de PHP en Foros del Web. Tengo este caso(Master-details): Tengo 2 archivos excel, el primer archivo es para la cabecera y el segundo es para e l detalle. Y me gustaría ...
  #1 (permalink)  
Antiguo 30/05/2014, 10:49
Avatar de wunderwaffen077  
Fecha de Ingreso: marzo-2014
Mensajes: 45
Antigüedad: 10 años, 1 mes
Puntos: 3
Importar 2 archivos *.xls a Mysql.

Tengo este caso(Master-details):
Tengo 2 archivos excel, el primer archivo es para la cabecera y el segundo es para e l detalle.

Y me gustaría saber de que manera cargar estos 2 excel, a un formulario y al presionar un boton "IMPORTAR" se ingrese la cabecera y luego se ingrese el detalle.

Alguna idea..? Seria necesario crear tablas temporales?


Pego una parte del codigo que es solo para la carga de la cabecera..
Código PHP:
/*-----------LIBRERIA EXCEL PARA CARGA DE DATOS-------------------*/

/** Include path **/
require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
require_once 
dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php';


$archivoExcel="facturaCabecera.xlsx";
$archivoRuta='../../../data/'.$_SESSION['xcom_comp'].'/import/'$archivoExcel;    

$objReader         PHPExcel_IOFactory::createReader('Excel2007');
$TABLE_NAME "mlofac011";


/*-----------COMPROBAR EXTENSION DEL ARCHIVO----------------------*/
$extension=getTipoDeExtencion($archivoExcel);

if (
$extension!="Excel2007") {
    
header("location:sist_upload.php?status=Tipo de Archivo no permitido para subir al Servidor.");
    die(
"");
}

/*-----------COMPROBAR SI EXISTE EL ARCHIVO-----------------------*/
if (file_exists($archivoRuta)) {
    
$objPHPExcel     $objReader->load($archivoRuta);
    
$objWorksheet     $objPHPExcel->getActiveSheet();

    
$worksheetTitle     $objWorksheet->getTitle();
    
$highestRow         $objWorksheet->getHighestRow(); // e.g. 10
    
$highestColumn      $objWorksheet->getHighestColumn(); // e.g 'F'
    
$highestColumnIndex PHPExcel_Cell::columnIndexFromString($highestColumn);
    
$nrColumns ord($highestColumn) - 64;




/*-----------INICIAMOS TRANSACIONES-------------------------------*/
//DESACTIVAR AUTOCOMIT
mysqli_autocommit($linkFALSE);

for (
$row 2$row <= $highestRow; ++$row) {   
  
$registros=array();
  for (
$col 0$col $highestColumnIndex; ++$col) {

      
$columnname=infoColumn($TABLE_NAME,$col+1,$link);      


    
//---------------------------------------------------------------------------------------
      //VALIDACIONES CAMPOS

    
if ($columnname=='ven_codo') {
        
$codo=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
        if (
strlen(strval($codo))!=&& $codo!='01') {
            
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$codo." - El tipo de documento $codo no existe en BD.");
        die(
"");
        } 
    }    
    if (
$columnname=='ven_seri') {
        
$seri=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
        if (!
fn_validarDatos('se',$seri,'')) {
            
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$seri." - La serie $seri no existe en BD.");
        die(
"");
        }
    }
    if (
$columnname=='ven_nums') {
        
$nums=$objWorksheet->getCellByColumnAndRow($col$row)->getValue(); 
      if (
fn_validarDatos('nu',$nums,$seri)){          
          
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$nums." - La factura número $nums ya existe.");
          die(
"");
      }         
        if (!(
strlen(strval($nums))>&& strlen(strval($nums))<=8) ) { 
        if(
$nums==""$nums="NULL";
            
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$nums." - Tamaño: 1 a 8");
          die(
"");
        }
    }
    if (
$columnname=='ven_feem') {
      
$feem=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (
strlen(strval($feem))!=10 || MyCheckDate($feem)!=TRUE) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$feem." - Formato->'2012-01-01'");
        die(
"");
      }
    }
    if (
$columnname=='ven_cote') {
      
$cote=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (!
fn_validarDatos('te',$cote,'')) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$cote." - El código de cliente $cote no existe en la BD.");
        die(
"");
      }
    }
    if (
$columnname=='ven_cocp') {
      
$cocp=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (!
fn_validarDatos('cp',$cocp,'')) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$cocp." - El código de condición de pago $cocp, no existe en la BD.");
        die(
"");
      }
    }
    if (
$columnname=='ven_core') {
      
$core=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (!
fn_validarDatos('re',$core,'')) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$core." - El codigo del Rep. de Venta $core no existe en la BD.");
        die(
"");
      }
    }
    if (
$columnname=='ven_como') {
      
$ven_como=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (
strlen(strval($ven_como))!=|| ($ven_como!='PEN' && $ven_como!='USD')) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$ven_como." - Formato->'PEN' o 'USD'");
        die(
"");
      }
    }
    if (
$columnname=='ven_nume') {
      
$nume=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();     
      if (!
fn_validarDatos('di',$nume,$cote)) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$nume." - El código de cliente $cote, no tiene la dirección $nume.");
        die(
"");
      }
    }
    if (
$columnname=='ven_cota') {
      
$cota=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();     
      if (!
fn_validarDatos('li',$cota,'')) {       
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$cota." - El código de lista de precios $cota no existe en la BD.");
        die(
"");
      }
    }
    if (
$columnname=='ven_feen') {
      
$feen=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (
strlen(strval($feen))!=10 || MyCheckDate($feen)!=TRUE) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$feen." - Formato->'2012-01-01'");
        die(
"");
      }
    }
    if (
$columnname=='ven_tica') {
      
$tica=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (!
validarFloat($tica)) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$tica." - Formato->'9.999'");
        die(
"");
      }
    }
    if (
$columnname=='ven_stat') {
      
$stat=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (
$stat!='99') {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$stat." - Solo acepta el valor: 99");
        die(
"");
      }
    }
    if (
$columnname=='ven_desp') {
      
$desp=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (
$desp!='0') {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$desp." - Solo acepta el valor: 0");
        die(
"");
      }
    }
    if (
$columnname=='ven_usua') {
      
$usua=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (!
fn_validarDatos('lo',$usua,'')){
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$usua." - El usuario $usua no existe en la BD.");
        die(
"");
      }
    }
    if (
$columnname=='ven_fere') {
      
$fere=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (
strlen(strval($fere))!=10 || MyCheckDate($fere)!=TRUE) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$fere." - Formato->'2012-01-01'");
        die(
"");
      }
    }
    if (
$columnname=='ven_hore') {
      
$hore=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (!
validarHora($hore)) {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$hore." - Formato->'00:00:00'");
        die(
"");
      }
    }
    if (
$columnname=='ven_covo') {
      
$covo=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (
$covo!='V01') {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$covo." - Solo acepta el valor: V01");
        die(
"");
      }
    }
    if (
$columnname=='ven_nhre') {
      
$nhre=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
      if (
$nhre!='0') {
        
header("location:sist_upload.php?status=Error de Carga: CELDA=".getNumeroALetra($col).$row.", VALOR=".$nhre." - Solo acepta el valor: 0");
        die(
"");
      }
    }   
    
    
//FINAL VALIDACIONES
    //---------------------------------------------------------------------------------------
      



      //GUARDAR REGISTROS EN ARREGLO
    
$registros[$columnname]=$objWorksheet->getCellByColumnAndRow($col$row)->getValue();
  }
  
  
//INSERTAMOS FILA ACTUAL
  
$resultado=dbRowInsert($TABLE_NAME,$registros,$link);
  
  if(
$resultado['mysqli_error'] ) {            
          
//ROLLBACK HAY ERRORES AL INSERTAR
        
mysqli_rollback($link);
        
header("location:sist_upload.php?status=Error de Carga:".$resultado['mysqli_error']);
        exit();
  } 
  
}
//TERMINAMOS LA TRANSACCION
mysqli_commit($link);
mysqli_close($link);
header("location:sist_upload.php?status=Archivo subido correctamente"); 

Última edición por wunderwaffen077; 30/05/2014 a las 10:55

Etiquetas: mysql+consulta
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 00:47.