Comunidad de diseño web y desarrollo en internet online

probleama con for para capturar datos de hoja de exel a mysql

Citar            
MensajeEscrito el 08 Feb 2014 10:06 pm
hola lo que pasa es que cuando capturo los datos datos de la hoja de exel, solo me captura los primeros 47 datos de la hoja , por la condicion del for ($i=0; $i<47; $i++), si aumento el for a 100 me captura los primeros 100 logicamente ... pero en caso de que en la hoja sean menos datos me captura los datos pero en el id de la tabla me los crea por que esta con autoincremento esta llave primaria de la tabla,,,, quiero que me guarde exatamente lo que hay en la hoja. (el numero de registros de la hoja de la base de datos es aleatorio) pueden ser X cantidad o Y cantidad, he intentado de todo,,,pero nada funciona,,,, pense que estas lineas ivan arreglar el problema pero tampoco

$Contar = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
//for ($i = 0; $i<=$Contar; ++ $i)

mi codigo es este
<?php

//cargamos el archivo al servidor con el mismo nombre
//solo le agregue el sufijo bak_
$archivo = $_FILES['excel']['name'];
$tipo = $_FILES['excel']['type'];
$destino = "bak_" . $archivo;
if (copy($_FILES['excel']['tmp_name'], $destino)){
echo "Archivo Cargado Con Éxito <br>";
}
else{
echo "Error Al Cargar el Archivo";
}
if (file_exists("bak_" . $archivo)) {


/** Clases necesarias */
require_once('Classes/PHPExcel.php');
//require_once('Classes/PHPExcel/Reader/Excel2007.php');
require_once 'excel_reader2.php';
// Cargando la hoja de cálculo
$objReader = new PHPExcel_Reader_Excel2007();
$objPHPExcel = $objReader->load("bak_" . $archivo);
$objFecha = new PHPExcel_Shared_Date();
// Asignar hoja de excel activa
$objPHPExcel->setActiveSheetIndex(0);
//contamos la cantidad de celdas con datos
//$Contar = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
//$LastRow=$objPHPExcel->setActiveSheetIndex()->getHighestRow();



///$maxCol = $objPHPExcel->getHighestColumn();
//conectamos con la base de datos
$cn = mysql_connect("localhost", "root", "") or die("ERROR EN LA CONEXION");
$db = mysql_select_db("prueba", $cn) or die("ERROR AL CONECTAR A LA BD");



// Llenamos el arreglo con los datos del archivo xlsx
for ($i = 0; $i<=47; ++ $i) {

//for ($i = 0; $i=$LastRow; ++ $i) {
///--------for ($i = 1; $i<=$objHoja; $i++){
//estaes/$result ='0';


$objCelda[$i]['municipio'] = $objPHPExcel->getActiveSheet()->getCell('B' . $i)->getCalculatedValue();
$objCelda[$i]['institucion'] = $objPHPExcel->getActiveSheet()->getCell('C' . $i)->getCalculatedValue();
$objCelda[$i]['cod_dane'] = $objPHPExcel->getActiveSheet()->getCell('D' . $i)->getCalculatedValue();
$objCelda[$i]['docente'] = $objPHPExcel->getActiveSheet()->getCell('E' . $i)->getCalculatedValue();
$objCelda[$i]['sede'] = $objPHPExcel->getActiveSheet()->getCell('F' . $i)->getCalculatedValue();
$objCelda[$i]['cod_dane_sede'] = $objPHPExcel->getActiveSheet()->getCell('G' . $i)->getCalculatedValue();
$objCelda[$i]['fec_visita_interna'] = $objPHPExcel->getActiveSheet()->getCell('H' . $i)->getCalculatedValue();
$objCelda[$i]['fec_fin_visita_int'] = $objPHPExcel->getActiveSheet()->getCell('I' . $i)->getCalculatedValue();
$objCelda[$i]['fec_corte_mat_simat'] = $objPHPExcel->getActiveSheet()->getCell('J' . $i)->getCalculatedValue();
$objCelda[$i]['matricula_simat'] = $objPHPExcel->getActiveSheet()->getCell('K' . $i)->getCalculatedValue();
$objCelda[$i]['mat_simat_asistentes'] = $objPHPExcel->getActiveSheet()->getCell('L' . $i)->getCalculatedValue();
$objCelda[$i]['diferencia'] = $objPHPExcel->getActiveSheet()->getCell('M' . $i)->getCalculatedValue();
$objCelda[$i]['alumnos_no_mat_simat'] = $objPHPExcel->getActiveSheet()->getCell('N' . $i)->getCalculatedValue();
$objCelda[$i]['alumnos_mat_simat'] = $objPHPExcel->getActiveSheet()->getCell('O' . $i)->getCalculatedValue();
$objCelda[$i]['total_mat_real'] = $objPHPExcel->getActiveSheet()->getCell('P' . $i)->getCalculatedValue();
$objCelda[$i]['diferencia_1'] = $objPHPExcel->getActiveSheet()->getCell('Q' . $i)->getCalculatedValue();
$objCelda[$i]['auditor'] = $objPHPExcel->getActiveSheet()->getCell('R' . $i)->getCalculatedValue();
$objCelda[$i]['contrato_num'] = $objPHPExcel->getActiveSheet()->getCell('S' . $i)->getCalculatedValue();
$objCelda[$i]['operador_admin'] = $objPHPExcel->getActiveSheet()->getCell('T' . $i)->getCalculatedValue();
$objCelda[$i]['tipo_auditoria'] = $objPHPExcel->getActiveSheet()->getCell('U' . $i)->getCalculatedValue();

//esta es/echo "<br> hola ".count($_DATOS_EXCEL[$i])."<br>";
//esta es/$result = $result+1;


//} echo $i;

#break;
}
}
//si por algo no cargo el archivo bak_
else {
echo "Necesitas primero importar el archivo";
}
$errores = 0;
//recorremos el arreglo multidimensional
//para ir recuperando los datos obtenidos
//del excel e ir insertandolos en la BD
foreach ($objCelda as $campo => $valor) {
$sql = "INSERT INTO campos_auditoria VALUES (NULL,'";
foreach ($valor as $campo2 => $valor2) {
$campo2 == "tipo_auditoria" ? $sql.= $valor2 . "');" : $sql.= $valor2 . "','";
}
echo $sql;
$result = mysql_query($sql);
if (!$result) {
echo "Error al insertar registro " . $campo;
$errores+=1;
}
}
echo "<strong><center>ARCHIVO IMPORTADO CON EXITO, EN TOTAL $campo REGISTROS Y $errores ERRORES</center></strong>";
//una vez terminado el proceso borramos el archivo que esta en el servidor el bak_
echo '<a href="logout.php">Logout<br><br></a>';
echo '<a href="consultas/index1.php" align="center"><input type="submit" value="Registros"></a>';
unlink($destino);
?>




he intentado de todo,,,,, y nada me sale ,,, he intentado con contadores y nada ,,,, no se que pasa,,,,, si alguien me puede ayudar estare muy agradecido....

Por Franciscol

1 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 09 Feb 2014 04:22 pm
por que dejaste comentado esta linea??
$Contar = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
si supongo que esa te retorna el numero total de lineas que tiene la LISTA del excel

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Feb 2014 01:46 pm
he dejado comentada esa linea, por que no sirve de nada,,,, en mi codigo, cuando recargo la pagina con esa linea se desborda, por eso la comente
yo tambien creia que esta linea
$Contar = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
me retorna en numero de lineas pero no funciona


con $Contar condiciono mi for pero no me funciona,,, como en el siguiente ejemplo

for($I=0, $i<= $Contar; $i++)

Por Franciscol

1 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Feb 2014 05:01 am
mmm raro,podes subir una rchivo excel de ejemplo y la libreria ExcelPhp que estas usando,es extranho que haya desbordamiento almenos que sea algun error

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 11 Feb 2014 05:32 pm
Ammm creo que haces demaciadas peticiones con la libreria al archivo :(

aqui más información:

https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/ReadingSpreadsheetFiles/04-Reader-Options.md

Sugiero ver el ejemplo 10 exampleReader10.php que parece que va mas a tu caso.

Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.