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.