Foros del Web » Programando para Internet » PHP »

[AYUDA]Tabla tipo Excel de manera dinamica

Estas en el tema de [AYUDA]Tabla tipo Excel de manera dinamica en el foro de PHP en Foros del Web. Buenas tardes a todos, Tengo un problema, estoy leyendo un archivo de Excel con PHPExcel y estoy guardando la informacion de este archivo en una ...
  #1 (permalink)  
Antiguo 22/07/2013, 11:39
 
Fecha de Ingreso: agosto-2009
Mensajes: 59
Antigüedad: 15 años, 3 meses
Puntos: 0
[AYUDA]Tabla tipo Excel de manera dinamica

Buenas tardes a todos,

Tengo un problema, estoy leyendo un archivo de Excel con PHPExcel y estoy guardando la informacion de este archivo en una tabla de MySQL, la estructura de la tabla es la siguiente:

id
id_rel
tipo
valor

Guardo los datos de la siguiente forma:

id id_rel tipo valor
1 1 nombre Pedrito perez

La cuestion es que ninguno de los archivos tiene el mismo formato ni comienza en la misma fila por lo que el script verifica todo eso y lo guarda en la BD:

Código PHP:
require_once("excel/Classes/PHPExcel.php");
require_once(
"excel/Classes/PHPExcel/Reader/Excel2007.php");
$temporal $_FILES['excel']['tmp_name'];
$nombre_file $_FILES['excel']['name'];
$filaheader $_POST['filaheader'];
move_uploaded_file($temporal,"gettford_control/xls/".$nombre_file);
$objReader = new PHPExcel_Reader_Excel2007();
$objPHPExcel $objReader->load('gettford_control/xls/'.$nombre_file);
$mysqli->query("INSERT INTO cev_excel(tipo,valor) VALUES('archivo','$nombre_file')");
$id $mysqli->insert_id;
foreach (
$objPHPExcel->getWorksheetIterator() as $worksheet) {
    
$worksheetTitle     $worksheet->getTitle();
    
$highestRow         $worksheet->getHighestRow();
    
$highestColumn      $worksheet->getHighestColumn();
    
$highestColumnIndex PHPExcel_Cell::columnIndexFromString($highestColumn);
    
$nrColumns ord($highestColumn) - 64;
    
$mysqli->query("INSERT INTO cev_excel (id_rel,tipo,valor) VALUES ('$id','Hoja','$worksheetTitle')");
    echo 
"La hoja ".$worksheetTitle." tiene ";
echo 
$nrColumns ' columnas ';
echo 
', ' $highestRow ' filas y su cabecera comienza en la fila '.$filaheader;
    
$id2 $mysqli->insert_id;
    for (
$row $filaheader$row <= $highestRow; ++ $row) {
        
$letra=65;
        for (
$col 0$col $highestColumnIndex; ++ $col) {
            
$cell $worksheet->getCellByColumnAndRow($col$row);
            
$val $cell->getCalculatedValue();
            if(
$row === $filaheader){
                if (!empty(
$val)){
                    
$val_limpia limpia_cad($val);
            
$mysqli->query("INSERT INTO cev_excel (id_rel,tipo,valor) VALUES ('$id2','$val_limpia','$val')");
                }
            }else{
                if (!empty(
$val)){
                    
$tipo_nolimp $worksheet->getCell(chr($letra). $filaheader);
                    
$tipo limpia_cad($tipo_nolimp);
                
$letra++;
                
$mysqli->query("INSERT INTO cev_excel (id_rel,tipo,valor) VALUES ('$id2','$tipo','$val')");    
                }
            }
        }
    } 
Ahora luego de guardarlo tengo otra tabla llamada cev_excel_estr que es donde el usuario especifica cual sera la estructura de la tabla a mostrar.

La idea es mostrar una tabla con la estructura definida y en cada columna insertar los datos que corresponden de la tabla cev_excel.

La cuestion es que no hayo como hacerlo, podrían ayudarme con esto?

Muchas gracias!
  #2 (permalink)  
Antiguo 24/07/2013, 07:59
Avatar de iukaeru  
Fecha de Ingreso: mayo-2012
Mensajes: 127
Antigüedad: 12 años, 5 meses
Puntos: 12
Respuesta: [AYUDA]Tabla tipo Excel de manera dinamica

Solo un punto de vista:
Recuerda el "Principio KISS" (Busca en wikipedia). Es bueno llevar los caprichos del cliente, pero en cuanto al ORDEN deberías no dar tanta flexibilidad. Pide al cliente que ordene su archivo EXCEL en el ORDEN que tú estructura tenga y listo.

Etiquetas: dinamica, excel, manera, mysql, tabla, tipo
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 09:10.