Example #1
1
 /**
  *
  * @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;
 }
Example #2
0
/**
 * 
 * @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';
}
Example #3
0
 /**
  * Will return dimension of data in worksheet
  * @return Dimension
  */
 public function getDataDimension()
 {
     $dimensionsString = $this->sheet->calculateWorksheetDataDimension();
     return new Dimension($dimensionsString);
 }