/**
 * 
 * @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';
}
if (!isset($_SESSION['archivoExcel'])) {
    require_once 'subirArchivo.php';
}
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;
    }
Exemple #3
0
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;
}