getCell([$col, $row]); $style = $sheet->getStyle([$col, $row]); $dstCell = Coordinate::stringFromColumnIndex($destColumnStart + $colCount) . (string)((int)$destRowStart + (int)$rowCount); $destSheet->setCellValue($dstCell, $cell->getValue()); $destSheet->duplicateStyle($style, $dstCell); // Set width of column, but only once per column if ($rowCount === 0) { $w = $sheet->getColumnDimensionByColumn($col)->getWidth(); $destSheet->getColumnDimensionByColumn ($destColumnStart + $colCount)->setAutoSize(false); $destSheet->getColumnDimensionByColumn ($destColumnStart + $colCount)->setWidth($w); } $colCount++; } $h = $sheet->getRowDimension($row)->getRowHeight(); $destSheet->getRowDimension((int)$destRowStart + $rowCount)->setRowHeight($h); $rowCount++; } foreach ($sheet->getMergeCells() as $mergeCell) { $mc = explode(":", $mergeCell); $mergeColSrcStart = Coordinate::columnIndexFromString(preg_replace("/[0-9]*/", "", $mc[0])); $mergeColSrcEnd = Coordinate::columnIndexFromString(preg_replace("/[0-9]*/", "", $mc[1])); $mergeRowSrcStart = ((int)preg_replace("/[A-Z]*/", "", $mc[0])); $mergeRowSrcEnd = ((int)preg_replace("/[A-Z]*/", "", $mc[1])); $relativeColStart = $mergeColSrcStart - $srcColumnStart; $relativeColEnd = $mergeColSrcEnd - $srcColumnStart; $relativeRowStart = $mergeRowSrcStart - $srcRowStart; $relativeRowEnd = $mergeRowSrcEnd - $srcRowStart; if (0 <= $mergeRowSrcStart && $mergeRowSrcStart >= $srcRowStart && $mergeRowSrcEnd <= $srcRowEnd) { $targetColStart = Coordinate::stringFromColumnIndex($destColumnStart + $relativeColStart); $targetColEnd = Coordinate::stringFromColumnIndex($destColumnStart + $relativeColEnd); $targetRowStart = (int)$destRowStart + $relativeRowStart; $targetRowEnd = (int)$destRowStart + $relativeRowEnd; $merge = (string)$targetColStart . (string)($targetRowStart) . ":" . (string)$targetColEnd . (string)($targetRowEnd); //Merge target cells $destSheet->mergeCells($merge); } } } public static function copyStyleXFCollection(Spreadsheet $sourceSheet, Spreadsheet $destSheet) { $collection = $sourceSheet->getCellXfCollection(); foreach ($collection as $key => $item) { $destSheet->addCellXf($item); } } }