/** * * @param string $startColName * @param string $endColName * @return Formatter */ public function autosizeColumns($startColName = null, $endColName = null) { if (is_null($startColName) || is_null($endColName)) { list($startCoordinates, $endCoordinates) = explode(':', $this->sheet->calculateWorksheetDataDimension()); $startColName = is_null($startColName) ? preg_replace('/\\d*/', '', $startCoordinates) : $startColName; $endColName = is_null($endColName) ? preg_replace('/\\d*/', '', $endCoordinates) : $endColName; } $startNum = PhpOffice_PHPExcel_Cell::columnIndexFromString($startColName); // A = 1 $endNum = PhpOffice_PHPExcel_Cell::columnIndexFromString($endColName); for ($i = $startNum - 1; $i < $endNum; $i++) { $this->sheet->getColumnDimensionByColumn($i)->setAutoSize(true); // A = 0 } $this->sheet->calculateColumnWidths(); return $this; }
/** * * @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'; }
/** * Will return dimension of data in worksheet * @return Dimension */ public function getDataDimension() { $dimensionsString = $this->sheet->calculateWorksheetDataDimension(); return new Dimension($dimensionsString); }