Saltar al contenido

Combinar celdas en Excel por filas y columnas usando PHPExcel

Esta es el arreglo más correcta que te podemos brindar, sin embargo obsérvala detenidamente y analiza si se puede adaptar a tu trabajo.

Solución:

Combinar simplemente requiere un rango válido de celdas como A1:B2, por lo que su

$sheet->mergeCells("G".($row_count+1).":I".($row_count+1));

debería funcionar sin ningún problema.

¿Puede experimentar con un caso de prueba simple para demostrar que esto le está causando un problema y no otra cosa en su secuencia de comandos?

EDITAR

Después de volver a leer su pregunta: su problema puede ser que está tratando de fusionar celdas que ya forman parte de un rango de fusión, en lugar de fusionar cada fila, luego intenta fusionar por columna, intente fusionar el rango completo de una sola vez.

$sheet->mergeCells("G".($row_count+1).":I".($row_count+4));              

Hay un método más para la fusión de celdas.

    /**
 * Set merge on a cell range by using numeric cell coordinates
 *
 * @param   int $pColumn1   Numeric column coordinate of the first cell
 * @param   int $pRow1      Numeric row coordinate of the first cell
 * @param   int $pColumn2   Numeric column coordinate of the last cell
 * @param   int $pRow2      Numeric row coordinate of the last cell
 * @throws  Exception
 * @return PHPExcel_Worksheet
 */
     public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)

function cellsToMergeByColsRow($start = -1, $end = -1, $row = -1)
    $merge = 'A1:A1';
    if($start>=0 && $end>=0 && $row>=0)
        $start = PHPExcel_Cell::stringFromColumnIndex($start);
        $end = PHPExcel_Cell::stringFromColumnIndex($end);
        $merge = "$start$row:$end$row";
    
    return $merge;

Adición al caso:

$objPHPExcel->getActiveSheet()->mergeCells(cellsToMergeByColsRow(0,2,3))

Si te animas, eres capaz de dejar un ensayo acerca de qué le añadirías a este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *