You are here

private function PHPExcel_Writer_Excel5_Worksheet::_writeBreaks in Loft Data Grids 6.2

Same name and namespace in other branches
  1. 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5/Worksheet.php \PHPExcel_Writer_Excel5_Worksheet::_writeBreaks()

* Write the HORIZONTALPAGEBREAKS and VERTICALPAGEBREAKS BIFF records.

1 call to PHPExcel_Writer_Excel5_Worksheet::_writeBreaks()
PHPExcel_Writer_Excel5_Worksheet::close in vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5/Worksheet.php
* Add data to the beginning of the workbook (note the reverse order) * and to the end of the workbook. * * @access public *

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5/Worksheet.php, line 2182

Class

PHPExcel_Writer_Excel5_Worksheet
PHPExcel_Writer_Excel5_Worksheet

Code

private function _writeBreaks() {

  // initialize
  $vbreaks = array();
  $hbreaks = array();
  foreach ($this->_phpSheet
    ->getBreaks() as $cell => $breakType) {

    // Fetch coordinates
    $coordinates = PHPExcel_Cell::coordinateFromString($cell);

    // Decide what to do by the type of break
    switch ($breakType) {
      case PHPExcel_Worksheet::BREAK_COLUMN:

        // Add to list of vertical breaks
        $vbreaks[] = PHPExcel_Cell::columnIndexFromString($coordinates[0]) - 1;
        break;
      case PHPExcel_Worksheet::BREAK_ROW:

        // Add to list of horizontal breaks
        $hbreaks[] = $coordinates[1];
        break;
      case PHPExcel_Worksheet::BREAK_NONE:
      default:

        // Nothing to do
        break;
    }
  }

  //horizontal page breaks
  if (!empty($hbreaks)) {

    // Sort and filter array of page breaks
    sort($hbreaks, SORT_NUMERIC);
    if ($hbreaks[0] == 0) {

      // don't use first break if it's 0
      array_shift($hbreaks);
    }
    $record = 0x1b;

    // Record identifier
    $cbrk = count($hbreaks);

    // Number of page breaks
    $length = 2 + 6 * $cbrk;

    // Bytes to follow
    $header = pack("vv", $record, $length);
    $data = pack("v", $cbrk);

    // Append each page break
    foreach ($hbreaks as $hbreak) {
      $data .= pack("vvv", $hbreak, 0x0, 0xff);
    }
    $this
      ->_append($header . $data);
  }

  // vertical page breaks
  if (!empty($vbreaks)) {

    // 1000 vertical pagebreaks appears to be an internal Excel 5 limit.
    // It is slightly higher in Excel 97/200, approx. 1026
    $vbreaks = array_slice($vbreaks, 0, 1000);

    // Sort and filter array of page breaks
    sort($vbreaks, SORT_NUMERIC);
    if ($vbreaks[0] == 0) {

      // don't use first break if it's 0
      array_shift($vbreaks);
    }
    $record = 0x1a;

    // Record identifier
    $cbrk = count($vbreaks);

    // Number of page breaks
    $length = 2 + 6 * $cbrk;

    // Bytes to follow
    $header = pack("vv", $record, $length);
    $data = pack("v", $cbrk);

    // Append each page break
    foreach ($vbreaks as $vbreak) {
      $data .= pack("vvv", $vbreak, 0x0, 0xffff);
    }
    $this
      ->_append($header . $data);
  }
}