Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/05/2014, 07:03
Avatar de informacionsys
informacionsys
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Respuesta: Leer text Pesado con PHP

Hola a todos..

bueno de hecho es una intranet , y tengo acceso para modificar cualquier directiva del php.ini...

les comento la logica rapidamente: En html muestro la vista previa del archivo con sus cabeceras y un solo registro nada mas.... el usuario tiene la posibilidad de escoger que columnas o cabeceras desea trabajar....despues de eso, leo todo el archivo completo y almaceno en un arreglo final la informacion de las columnas que escogió el usuario para posteriormente almacenarla en la base de datos...

Aqui el codigo :

Código PHP:
Ver original
  1. public function FileMatrizAsociativo($file_name,$separador)
  2.     {
  3.                
  4.         $file  = fopen($file_name,"r");
  5.         $matriz = array();
  6.  
  7.         if($file)
  8.         {  
  9.             $matriz = array();
  10.             $contador = 0;
  11.             $cabeza = fgetcsv($file,50000000,$separador);
  12.             $cantcols = count($cabeza);
  13.  
  14.  
  15.             while($recordSet = fgetcsv($file,50000000,$separador))
  16.             {  
  17.                 foreach($this->campos as $camp)//arreglo con los campos que escogio el usuario
  18.                 {  
  19.                     for($cols = 0; $cols < $cantcols ; $cols++)// for columnas del archivo
  20.                     {  
  21.                         //quita espacios
  22.                         $indices = str_replace(" ","",trim($cabeza[$cols]));
  23.                         //quitar caracteres raros
  24.                         $namecabeza = $this->QuitarCaracteresRarosCargue(utf8_encode($indices));
  25.                        
  26.                         if(trim($camp->COLUMN_NAME) == strtoupper($namecabeza))
  27.                         {  
  28.                             $arreglodatos[strtolower($camp->COLUMN_NAME)] = $recordSet[$cols];
  29.                         }
  30.                     }// for de la cabeza del archivo
  31.  
  32.                 }// foreach campos
  33.                
  34.                   array_push($matriz,$arreglodatos);
  35.                 $contador++;
  36.             }// while
  37.         }// fin validacion archivo
  38.  
  39.         return $matriz;
  40.     }

PD: La funcion anterior la uso para leer archivos text y/o csv; para leer excel uso una libreria, pero la logica es la misma....