Exemplo n.º 1
1
 /**
  * Store the MERGEDCELLS records for all ranges of merged cells
  */
 private function writeMergedCells()
 {
     $mergeCells = $this->phpSheet->getMergeCells();
     $countMergeCells = count($mergeCells);
     if ($countMergeCells == 0) {
         return;
     }
     // maximum allowed number of merged cells per record
     $maxCountMergeCellsPerRecord = 1027;
     // record identifier
     $record = 0xe5;
     // counter for total number of merged cells treated so far by the writer
     $i = 0;
     // counter for number of merged cells written in record currently being written
     $j = 0;
     // initialize record data
     $recordData = '';
     // loop through the merged cells
     foreach ($mergeCells as $mergeCell) {
         ++$i;
         ++$j;
         // extract the row and column indexes
         $range = \PHPExcel\Cell::splitRange($mergeCell);
         list($first, $last) = $range[0];
         list($firstColumn, $firstRow) = \PHPExcel\Cell::coordinateFromString($first);
         list($lastColumn, $lastRow) = \PHPExcel\Cell::coordinateFromString($last);
         $recordData .= pack('vvvv', $firstRow - 1, $lastRow - 1, \PHPExcel\Cell::columnIndexFromString($firstColumn) - 1, \PHPExcel\Cell::columnIndexFromString($lastColumn) - 1);
         // flush record if we have reached limit for number of merged cells, or reached final merged cell
         if ($j == $maxCountMergeCellsPerRecord or $i == $countMergeCells) {
             $recordData = pack('v', $j) . $recordData;
             $length = strlen($recordData);
             $header = pack('vv', $record, $length);
             $this->append($header . $recordData);
             // initialize for next record, if any
             $recordData = '';
             $j = 0;
         }
     }
 }
Exemplo n.º 2
-1
 /**
  * Write MergeCells
  *
  * @param    \PHPExcel\Shared\XMLWriter            $objWriter        XML Writer
  * @param    \PHPExcel\Worksheet                    $pSheet            Worksheet
  * @throws    \PHPExcel\Writer\Exception
  */
 private function writeMergeCells(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Worksheet $pSheet = null)
 {
     if (count($pSheet->getMergeCells()) > 0) {
         // mergeCells
         $objWriter->startElement('mergeCells');
         // Loop mergeCells
         foreach ($pSheet->getMergeCells() as $mergeCell) {
             // mergeCell
             $objWriter->startElement('mergeCell');
             $objWriter->writeAttribute('ref', $mergeCell);
             $objWriter->endElement();
         }
         $objWriter->endElement();
     }
 }