You are here

function PHPExcel_Writer_Excel5_Worksheet::close in Loft Data Grids 7.2

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

* Add data to the beginning of the workbook (note the reverse order) * and to the end of the workbook. * * @access public *

See also

PHPExcel_Writer_Excel5_Workbook::storeWorkbook()

File

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

Class

PHPExcel_Writer_Excel5_Worksheet
PHPExcel_Writer_Excel5_Worksheet

Code

function close() {
  $_phpSheet = $this->_phpSheet;
  $num_sheets = $_phpSheet
    ->getParent()
    ->getSheetCount();

  // Write BOF record
  $this
    ->_storeBof(0x10);

  // Write PRINTHEADERS
  $this
    ->_writePrintHeaders();

  // Write PRINTGRIDLINES
  $this
    ->_writePrintGridlines();

  // Write GRIDSET
  $this
    ->_writeGridset();

  // Calculate column widths
  $_phpSheet
    ->calculateColumnWidths();

  // Column dimensions
  if (($defaultWidth = $_phpSheet
    ->getDefaultColumnDimension()
    ->getWidth()) < 0) {
    $defaultWidth = PHPExcel_Shared_Font::getDefaultColumnWidthByFont($_phpSheet
      ->getParent()
      ->getDefaultStyle()
      ->getFont());
  }
  $columnDimensions = $_phpSheet
    ->getColumnDimensions();
  $maxCol = $this->_lastColumnIndex - 1;
  for ($i = 0; $i <= $maxCol; ++$i) {
    $hidden = 0;
    $level = 0;
    $xfIndex = 15;

    // there are 15 cell style Xfs
    $width = $defaultWidth;
    $columnLetter = PHPExcel_Cell::stringFromColumnIndex($i);
    if (isset($columnDimensions[$columnLetter])) {
      $columnDimension = $columnDimensions[$columnLetter];
      if ($columnDimension
        ->getWidth() >= 0) {
        $width = $columnDimension
          ->getWidth();
      }
      $hidden = $columnDimension
        ->getVisible() ? 0 : 1;
      $level = $columnDimension
        ->getOutlineLevel();
      $xfIndex = $columnDimension
        ->getXfIndex() + 15;

      // there are 15 cell style Xfs
    }

    // Components of _colinfo:
    // $firstcol first column on the range
    // $lastcol  last column on the range
    // $width	width to set
    // $xfIndex  The optional cell style Xf index to apply to the columns
    // $hidden   The optional hidden atribute
    // $level	The optional outline level
    $this->_colinfo[] = array(
      $i,
      $i,
      $width,
      $xfIndex,
      $hidden,
      $level,
    );
  }

  // Write GUTS
  $this
    ->_writeGuts();

  // Write DEFAULTROWHEIGHT
  $this
    ->_writeDefaultRowHeight();

  // Write WSBOOL
  $this
    ->_writeWsbool();

  // Write horizontal and vertical page breaks
  $this
    ->_writeBreaks();

  // Write page header
  $this
    ->_writeHeader();

  // Write page footer
  $this
    ->_writeFooter();

  // Write page horizontal centering
  $this
    ->_writeHcenter();

  // Write page vertical centering
  $this
    ->_writeVcenter();

  // Write left margin
  $this
    ->_writeMarginLeft();

  // Write right margin
  $this
    ->_writeMarginRight();

  // Write top margin
  $this
    ->_writeMarginTop();

  // Write bottom margin
  $this
    ->_writeMarginBottom();

  // Write page setup
  $this
    ->_writeSetup();

  // Write sheet protection
  $this
    ->_writeProtect();

  // Write SCENPROTECT
  $this
    ->_writeScenProtect();

  // Write OBJECTPROTECT
  $this
    ->_writeObjectProtect();

  // Write sheet password
  $this
    ->_writePassword();

  // Write DEFCOLWIDTH record
  $this
    ->_writeDefcol();

  // Write the COLINFO records if they exist
  if (!empty($this->_colinfo)) {
    $colcount = count($this->_colinfo);
    for ($i = 0; $i < $colcount; ++$i) {
      $this
        ->_writeColinfo($this->_colinfo[$i]);
    }
  }
  $autoFilterRange = $_phpSheet
    ->getAutoFilter()
    ->getRange();
  if (!empty($autoFilterRange)) {

    // Write AUTOFILTERINFO
    $this
      ->_writeAutoFilterInfo();
  }

  // Write sheet dimensions
  $this
    ->_writeDimensions();

  // Row dimensions
  foreach ($_phpSheet
    ->getRowDimensions() as $rowDimension) {
    $xfIndex = $rowDimension
      ->getXfIndex() + 15;

    // there are 15 cellXfs
    $this
      ->_writeRow($rowDimension
      ->getRowIndex() - 1, $rowDimension
      ->getRowHeight(), $xfIndex, $rowDimension
      ->getVisible() ? '0' : '1', $rowDimension
      ->getOutlineLevel());
  }

  // Write Cells
  foreach ($_phpSheet
    ->getCellCollection() as $cellID) {
    $cell = $_phpSheet
      ->getCell($cellID);
    $row = $cell
      ->getRow() - 1;
    $column = PHPExcel_Cell::columnIndexFromString($cell
      ->getColumn()) - 1;

    // Don't break Excel!
    //			if ($row + 1 > 65536 or $column + 1 > 256) {
    if ($row > 65535 || $column > 255) {
      break;
    }

    // Write cell value
    $xfIndex = $cell
      ->getXfIndex() + 15;

    // there are 15 cell style Xfs
    $cVal = $cell
      ->getValue();
    if ($cVal instanceof PHPExcel_RichText) {

      // $this->_writeString($row, $column, $cVal->getPlainText(), $xfIndex);
      $arrcRun = array();
      $str_len = PHPExcel_Shared_String::CountCharacters($cVal
        ->getPlainText(), 'UTF-8');
      $str_pos = 0;
      $elements = $cVal
        ->getRichTextElements();
      foreach ($elements as $element) {

        // FONT Index
        if ($element instanceof PHPExcel_RichText_Run) {
          $str_fontidx = $this->_fntHashIndex[$element
            ->getFont()
            ->getHashCode()];
        }
        else {
          $str_fontidx = 0;
        }
        $arrcRun[] = array(
          'strlen' => $str_pos,
          'fontidx' => $str_fontidx,
        );

        // Position FROM
        $str_pos += PHPExcel_Shared_String::CountCharacters($element
          ->getText(), 'UTF-8');
      }
      $this
        ->_writeRichTextString($row, $column, $cVal
        ->getPlainText(), $xfIndex, $arrcRun);
    }
    else {
      switch ($cell
        ->getDatatype()) {
        case PHPExcel_Cell_DataType::TYPE_STRING:
        case PHPExcel_Cell_DataType::TYPE_NULL:
          if ($cVal === '' || $cVal === null) {
            $this
              ->_writeBlank($row, $column, $xfIndex);
          }
          else {
            $this
              ->_writeString($row, $column, $cVal, $xfIndex);
          }
          break;
        case PHPExcel_Cell_DataType::TYPE_NUMERIC:
          $this
            ->_writeNumber($row, $column, $cVal, $xfIndex);
          break;
        case PHPExcel_Cell_DataType::TYPE_FORMULA:
          $calculatedValue = $this->_preCalculateFormulas ? $cell
            ->getCalculatedValue() : null;
          $this
            ->_writeFormula($row, $column, $cVal, $xfIndex, $calculatedValue);
          break;
        case PHPExcel_Cell_DataType::TYPE_BOOL:
          $this
            ->_writeBoolErr($row, $column, $cVal, 0, $xfIndex);
          break;
        case PHPExcel_Cell_DataType::TYPE_ERROR:
          $this
            ->_writeBoolErr($row, $column, self::_mapErrorCode($cVal), 1, $xfIndex);
          break;
      }
    }
  }

  // Append
  $this
    ->_writeMsoDrawing();

  // Write WINDOW2 record
  $this
    ->_writeWindow2();

  // Write PLV record
  $this
    ->_writePageLayoutView();

  // Write ZOOM record
  $this
    ->_writeZoom();
  if ($_phpSheet
    ->getFreezePane()) {
    $this
      ->_writePanes();
  }

  // Write SELECTION record
  $this
    ->_writeSelection();

  // Write MergedCellsTable Record
  $this
    ->_writeMergedCells();

  // Hyperlinks
  foreach ($_phpSheet
    ->getHyperLinkCollection() as $coordinate => $hyperlink) {
    list($column, $row) = PHPExcel_Cell::coordinateFromString($coordinate);
    $url = $hyperlink
      ->getUrl();
    if (strpos($url, 'sheet://') !== false) {

      // internal to current workbook
      $url = str_replace('sheet://', 'internal:', $url);
    }
    else {
      if (preg_match('/^(http:|https:|ftp:|mailto:)/', $url)) {

        // URL
        // $url = $url;
      }
      else {

        // external (local file)
        $url = 'external:' . $url;
      }
    }
    $this
      ->_writeUrl($row - 1, PHPExcel_Cell::columnIndexFromString($column) - 1, $url);
  }
  $this
    ->_writeDataValidity();
  $this
    ->_writeSheetLayout();

  // Write SHEETPROTECTION record
  $this
    ->_writeSheetProtection();
  $this
    ->_writeRangeProtection();
  $arrConditionalStyles = $_phpSheet
    ->getConditionalStylesCollection();
  if (!empty($arrConditionalStyles)) {
    $arrConditional = array();

    // @todo CFRule & CFHeader
    // Write CFHEADER record
    $this
      ->_writeCFHeader();

    // Write ConditionalFormattingTable records
    foreach ($arrConditionalStyles as $cellCoordinate => $conditionalStyles) {
      foreach ($conditionalStyles as $conditional) {
        if ($conditional
          ->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION || $conditional
          ->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) {
          if (!in_array($conditional
            ->getHashCode(), $arrConditional)) {
            $arrConditional[] = $conditional
              ->getHashCode();

            // Write CFRULE record
            $this
              ->_writeCFRule($conditional);
          }
        }
      }
    }
  }
  $this
    ->_storeEof();
}