Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Importar diferentes excel a una tabla de BD

Estas en el tema de Importar diferentes excel a una tabla de BD en el foro de PHP en Foros del Web. Hola amigos otra ves por aca con una consulta respecto a iprtar varios dicumentos de excel a un misma tabla, lo que tenog por el ...
  #1 (permalink)  
Antiguo 02/10/2013, 14:49
Avatar de giancarloffi  
Fecha de Ingreso: julio-2013
Mensajes: 63
Antigüedad: 10 años, 9 meses
Puntos: 0
Importar diferentes excel a una tabla de BD

Hola amigos otra ves por aca con una consulta respecto a iprtar varios dicumentos de excel a un misma tabla, lo que tenog por el momento es esto:

Código PHP:
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>:: Importar de Excel a la Base de Datos ::</title>
</head>    

<form name="importa" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" >
    <input type="file" name="excel" />
    <input type='submit' name='enviar'  value="Importar"  />
    <input type="hidden" value="upload" name="action" />
</form>

<?php
error_reporting
(0);
extract($_POST);
if (
$action == "upload") { //si action tiene como valor UPLOAD haga algo (el value de este hidden es es UPLOAD iniciado desde el value
//cargamos el archivo al servidor con el mismo nombre(solo le agregue el sufijo bak_)
    
$archivo $_FILES['excel']['name']; //captura el nombre del archivo
    
$tipo $_FILES['excel']['type']; //captura el tipo de archivo (2003 o 2007)

    
$destino "bak_" $archivo//lugar donde se copiara el archivo

    
if (copy($_FILES['excel']['tmp_name'], $destino)) { //si dese copiar la variable excel (archivo).nombreTemporal a destino (bak_.archivo) (si se ha dejado copiar)
        
echo "Archivo Cargado Con Exito";
    } else {
        echo 
"Error Al Cargar el Archivo";
    }

    if (
file_exists("bak_" $archivo)) { //validacion para saber si el archivo ya existe previamente
        /* INVOCACION DE CLASES Y CONEXION A BASE DE DATOS */
        /** Invocacion de Clases necesarias */
        
require_once('Classes/PHPExcel.php');
        require_once(
'Classes/PHPExcel/Reader/Excel2007.php');
//DATOS DE CONEXION A LA BASE DE DATOS
        
$cn mysql_connect("localhost""root""1234") or die("ERROR EN LA CONEXION");
        
$db mysql_select_db("escuela"$cn) or die("ERROR AL CONECTAR A LA BD");

// Cargando la hoja de calculo
        
$objReader = new PHPExcel_Reader_Excel2007(); //instancio un objeto como PHPExcelReader(objeto de captura de datos de excel)
        
$objPHPExcel $objReader->load("bak_" $archivo); //carga en objphpExcel por medio de objReader,el nombre del archivo
        
$objFecha = new PHPExcel_Shared_Date();
// Asignar hoja de excel activa
        
$objPHPExcel->setActiveSheetIndex(0); //objPHPExcel tomara la posicion de hoja (en esta caso 0 o 1) con el setActiveSheetIndex(numeroHoja)
// Llenamos un arreglo con los datos del archivo xlsx
        
$i 11//celda inicial en la cual empezara a realizar el barrido de la grilla de excel
        
$param 0;
        
$contador 0;
        while (
$param == 0) { //mientras el parametro siga en 0 (iniciado antes) que quiere decir que no ha encontrado un NULL entonces siga metiendo datos
            //$nocontrol = $objPHPExcel->getActiveSheet()->getCell('B' . $i)->getCalculatedValue();
            
$nombre $objPHPExcel->getActiveSheet()->getCell('S' $i)->getCalculatedValue();
            
//$grado = $objPHPExcel->getActiveSheet()->getCell('D' . $i)->getCalculatedValue();
            //$grupo = $objPHPExcel->getActiveSheet()->getCell('E' . $i)->getCalculatedValue();
            // $sexo = $objPHPExcel->getActiveSheet()->getCell('F' . $i)->getCalculatedValue();
            
$c = ("insert into alumnos2 values($i,'$nombre')");
            
mysql_query($c);

            if (
$objPHPExcel->getActiveSheet()->getCell('B' $i)->getCalculatedValue() == NULL) { //pregunto que si ha encontrado un valor null en una columna inicie un parametro en 1 que indicaria el fin del ciclo while
                
$param 1//para detener el ciclo cuando haya encontrado un valor NULL
            
}
            
$i++;
            
$contador $contador 1;
        }
        
$totalIngresados $contador 1//(porque se se para con un NULL y le esta registrando como que tambien un dato)
        
echo "Total elementos subidos: $totalIngresados";
    } else {
//si no se ha cargado el bak
        
echo "Necesitas primero importar el archivo";
    }

    
unlink($destino); //desenlazar a destino el lugar donde salen los datos(archivo)
}
?>
y lo que hace es ingresarme a la tabla de la bd los datos desde ese excel pero si quiro ingresar otra hoja de excel a la misma tabla de la base de datos no lo hace alguien a trabajado con algo parecido, ya que lo que queir en si es lo siguiente:

por ejemplo un paciente se hace varios tipos de examenes y hya una amquina que te bota los resultados en excel y esos datos se encesitan ingresar al sistema mediante esa hoja de excel enotncs otro paciente se toma otors examen y ingresar tambien esos datos a esa tabla y asi sucesivamente por favor si alguien tuviera alguna guia o algun codigo por ahi q se pareciera en algo para estudiarlo ya que es la primera ves que hago algo asi, gracias de antemano
  #2 (permalink)  
Antiguo 02/10/2013, 15:46
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Importar diferentes excel a una tabla de BD

Hola.
Deberias poner un campo unico que se autoincremente.
Podrian estar sobreescribiendose los datos.
Saludos
  #3 (permalink)  
Antiguo 02/10/2013, 16:22
Avatar de giancarloffi  
Fecha de Ingreso: julio-2013
Mensajes: 63
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Importar diferentes excel a una tabla de BD

pues es autoincrementable y no lo sobreescribe simplemente no los sube :(
  #4 (permalink)  
Antiguo 02/10/2013, 16:39
Avatar de javioreto  
Fecha de Ingreso: enero-2005
Ubicación: C:\España\Bilbao
Mensajes: 1.212
Antigüedad: 19 años, 3 meses
Puntos: 15
Respuesta: Importar diferentes excel a una tabla de BD

¿Has probado a ver si funciona con los CSV simples? Quizás el problema venga de la librería que usas para abrir los xlsx.


Prueba a mostrar por pantalla los datos que se van sacando del excel para usarlo como bandera e identificar si hay errores en el procesado. De la misma forma, fuerza a meter una linea de contenido estática a la BD para ver si esta bien la conexión.

Última edición por javioreto; 02/10/2013 a las 16:52
  #5 (permalink)  
Antiguo 02/10/2013, 16:59
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Importar diferentes excel a una tabla de BD

¿Verificaste que estás leyendo la hoja de forma correcta?

Con poner echo sobre todo lo que lee podrías darte una idea de si estas leyendo bien el archivo y es problema de la bd o desde la lectura del excel hay problemas.
  #6 (permalink)  
Antiguo 02/10/2013, 17:09
Avatar de giancarloffi  
Fecha de Ingreso: julio-2013
Mensajes: 63
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Importar diferentes excel a una tabla de BD

Te refieres a los csv delimitados por comas pues no me importa nada :S

se refieren a ponerle ECHO aqui:

Código PHP:
echo $nombre $objPHPExcel->getActiveSheet()->getCell('S' $i)->getCalculatedValue(); 
pues ah si me mestra losd atos del escel que estoy subiendo pero en la BD no los ingresa

Última edición por giancarloffi; 02/10/2013 a las 17:23
  #7 (permalink)  
Antiguo 02/10/2013, 17:29
Avatar de giancarloffi  
Fecha de Ingreso: julio-2013
Mensajes: 63
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Importar diferentes excel a una tabla de BD

estuve hacienod unas pruebas y poues ingrese los datos del libro de excel q empeizan desde el 11 en este excel solo habian 4 datos de 11 al 14, los ingrese normal, despues en el codigo cambien en la variable $i = 11 a $i = 15 para que me ingrese desde ahi los datos y los ingreso correctamente, ahora com podria hacerlo para que el $i vaya tomando desde el campo que esta vacia para que asi vaya ingresando los datos?
  #8 (permalink)  
Antiguo 02/10/2013, 17:39
Avatar de javioreto  
Fecha de Ingreso: enero-2005
Ubicación: C:\España\Bilbao
Mensajes: 1.212
Antigüedad: 19 años, 3 meses
Puntos: 15
Respuesta: Importar diferentes excel a una tabla de BD

Eso es tema de la base de datos, directamente tu pones un campo de id autoincremental y haces insert sobre ella y se van poniendo a la cola del contenido que ya esta metido.

En el caso de que por algún motivo necesites saber cual es el último número metido en la BD puedes hacer una consulta (select id from tu_tabla order by desc limit 1) y esa id sera el número de registro último de tu tabla.
  #9 (permalink)  
Antiguo 04/10/2013, 01:07
Avatar de giancarloffi  
Fecha de Ingreso: julio-2013
Mensajes: 63
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Importar diferentes excel a una tabla de BD

bueno resolvi el problema, era algo pequeño jejeje, y tenían razón era cuestión de id, bueno doy como solucionado el tema, gracias por sus respuestas.

Etiquetas: bd, excel, fecha, html, mysql, select, tabla, variable
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 12:04.