/** * * @param PHPExcel_Worksheet $hoja * @param int $pk representa el índice de la columna en el archivo de excel que está asociada con la llave primaria de la tabla * @return string rerpesenta el nombre la ruta del archivo creado. Si no se pudo crear el archivo se regresa otra cosa :p */ function prepararArchivo($hoja, $pk = false, $incluirPrimeraFila = false) { $objetoExcel = new PHPExcel(); $hojaInsertar = $objetoExcel->getSheet(0); $hojaInsertar->setTitle('Insertar'); if ($objetoExcel->getSheetCount() > 1) { $hojaActualizar = $objetoExcel->getSheet(1); $hojaActualizar->setTitle('Actualizar'); } else { $hojaActualizar = new PHPExcel_Worksheet(); $hojaActualizar->setTitle('Actualizar'); $objetoExcel->addSheet($hojaActualizar); } $rango = $hoja->calculateWorksheetDataDimension(); if (!$incluirPrimeraFila) { $rango[1] = '2'; } $contenidoExcel = $hoja->rangeToArray($rango); $datos = array(); $datos['insertar'] = array(); $datos['actualizar'] = array(); if ($pk) { $db = new DbConnection(); $db->abrirConexion(); $llavePrimaria = $_SESSION['pk']; foreach ($contenidoExcel as $fila) { $existe = $db->existeRegistro($_SESSION['tabla'], $llavePrimaria, $fila[$pk]); if ($existe) { $datos['actualizar'][] = $fila; } else { $datos['insertar'][] = $fila; } } $db->cerrarConexion(); } else { foreach ($contenidoExcel as $fila) { $datos['insertar'][] = $fila; } } $hojaInsertar->fromArray($datos['insertar'], null, 'A1', true); $hojaActualizar->fromArray($datos['actualizar'], null, 'A1', true); $escritorExcel = PHPExcel_IOFactory::createWriter($objetoExcel, 'Excel2007'); $escritorExcel->save('excelTmp/tmp_import_upload.xlsx'); return 'excelTmp/tmp_import_upload.xlsx'; }
} require_once 'lectorExcel.php'; $columnas = fila($hoja, '1'); $size = count($columnas); for ($i = 0; $i < $size; $i++) { if ($columnas[$i] === null) { unset($columnas[$i]); } } $db = new DbConnection(); if (isset($_POST['tabla'])) { $_SESSION['tabla'] = $_POST['tabla']; } $db->abrirConexion(); $campos = $db->getCampos($_SESSION['tabla']); $db->cerrarConexion(); echo EOL; var_dump($columnas); echo EOL; print_r($_SESSION['tabla']); if (isset($_SESSION['camposMapeados'])) { $mapeo = array(); if (!$_SESSION['incluirPrimeraFila']) { foreach ($_SESSION['camposMapeados'] as $index => $elemento) { $mapeo[$columnas[$index]] = $elemento; } } else { $mapeo[] = false; } } else { $mapeo = mapear($columnas, $campos);
function actualizarRegistros($datos) { $db = new DbConnection(); $result = array(); $db->abrirConexion(); foreach ($datos as $row) { $row[] = $db->actualizarRegistro($_SESSION['tabla'], $_SESSION['camposMapeados'], $row, $_SESSION['pk']); $result[] = $row; } $db->cerrarConexion(); return $result; }