Foros del Web » Programando para Internet » PHP »

Cargar archivo .xlsx en mysql con PCHExcel

Estas en el tema de Cargar archivo .xlsx en mysql con PCHExcel en el foro de PHP en Foros del Web. Estimados, estoy armando un simple sistema el cual me permita subir un archivo excel a una tabla de un bd mysql la cual la pueda ...
  #1 (permalink)  
Antiguo 01/12/2015, 11:10
 
Fecha de Ingreso: diciembre-2015
Mensajes: 2
Antigüedad: 8 años, 4 meses
Puntos: 0
Cargar archivo .xlsx en mysql con PCHExcel

Estimados, estoy armando un simple sistema el cual me permita subir un archivo excel a una tabla de un bd mysql la cual la pueda comparar con otra tabla de la misma base de datos y así poder comparar si los registros se encuentran anteriormente subidos.

La idea es tener una tabla notaria, a la cual se puedan cargar todas las operaciones pagadas en notaria.

También tener una tabla compara la que sirve para comprobar si los registros están duplicados en la tabla notaria antes de subir el archivo excel a la tabla notaria(importar.php).

La estructura de las dos tablas es así.

1 id int(11)
2 nombre varchar(50)
3 num_op int(11)
4 no_rep int(10)
5 fecha_rep varchar(10)
6 ot int(6)
7 fecha_pago varchar(10)
8 bfact varchar(12)
9 id_notaria int(11)
10 valor int(12)
11 pagada varchar(4)
12 fecha varchar(10)

Para trabajar utilizo dos archivos, importar.php y compara.php , abajo subiré el código.

Para poder Cargar el archivo en la base de datos estoy utilizando PHPExcel, que funciona bien, puedo tomar el archivo y subirlo sin problemas.

* El problema que tengo es que me permite subir solo una vez los datos desde el importar.php ej, subo un archivo con 2500 filas, y luego quiero subir 100 operaciones o pagos de notaria no me lo permite.

importar.php

<body>
<p class="formulario">* Selecciona el archivo Excel a Importar (.xlsx): </p><br/>

<img src="img/iconos/excel.png" width="50" height="50" /><p>

<form name="importa" method="post" action="<?php echo $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>
<p>

<?php
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 ("","","") or die ("ERROR EN LA CONEXION");
$db = mysql_select_db ("",$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=1; //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
{

$nombre=$objPHPExcel->getActiveSheet()->getCell('B'.$i)->getCalculatedValue();
$num_op=$objPHPExcel->getActiveSheet()->getCell('C'.$i)->getCalculatedValue();
$no_rep=$objPHPExcel->getActiveSheet()->getCell('D'.$i)->getCalculatedValue();
$fecha_rep=$objPHPExcel->getActiveSheet()->getCell('E'.$i)->getCalculatedValue();
$ot=$objPHPExcel->getActiveSheet()->getCell('F'.$i)->getCalculatedValue();
$fecha_pago=$objPHPExcel->getActiveSheet()->getCell('G'.$i)->getCalculatedValue();
$bfact=$objPHPExcel->getActiveSheet()->getCell('H'.$i)->getCalculatedValue();
$id_notaria=$objPHPExcel->getActiveSheet()->getCell('I'.$i)->getCalculatedValue();
$valor=$objPHPExcel->getActiveSheet()->getCell('J'.$i)->getCalculatedValue();
$pagada=$objPHPExcel->getActiveSheet()->getCell('K'.$i)->getCalculatedValue();
$fecha=$objPHPExcel->getActiveSheet()->getCell('L'.$i)->getCalculatedValue();

$c=("insert into notaria2 values($i,'$nombre','$num_op','$no_rep','$fecha_re p','$ot','$fecha_pago','$bfact','$id_notaria','$va lor','$pagada','$fecha')");
mysql_query($c);

if($objPHPExcel->getActiveSheet()->getCell('A'.$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)
}

?>



</div>


</body>

La librería se puede descargar desde la siguiente dirección: https://phpexcel.codeplex.com/
  #2 (permalink)  
Antiguo 02/12/2015, 07:01
 
Fecha de Ingreso: diciembre-2015
Mensajes: 2
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Cargar archivo .xlsx en mysql con PCHExcel

Estimados no pude modificar el título, pero queria decir PHPExcel.
Saludos y Gracias

Etiquetas: fecha, formulario, mysql, registro, 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 03:01.