Example #1
1
 /**
  * Writes Excel BIFF BOUNDSHEET record.
  *
  * @param \PHPExcel\Worksheet  $sheet Worksheet name
  * @param integer $offset    Location of worksheet BOF
  */
 private function writeBoundSheet($sheet, $offset)
 {
     $sheetname = $sheet->getTitle();
     $record = 0x85;
     // Record identifier
     // sheet state
     switch ($sheet->getSheetState()) {
         case \PHPExcel\Worksheet::SHEETSTATE_VISIBLE:
             $ss = 0x0;
             break;
         case \PHPExcel\Worksheet::SHEETSTATE_HIDDEN:
             $ss = 0x1;
             break;
         case \PHPExcel\Worksheet::SHEETSTATE_VERYHIDDEN:
             $ss = 0x2;
             break;
         default:
             $ss = 0x0;
             break;
     }
     // sheet type
     $st = 0x0;
     $grbit = 0x0;
     // Visibility and sheet type
     $data = pack("VCC", $offset, $ss, $st);
     $data .= \PHPExcel\Shared\StringHelper::UTF8toBIFF8UnicodeShort($sheetname);
     $length = strlen($data);
     $header = pack("vv", $record, $length);
     $this->append($header . $data);
 }
Example #2
0
 /**
  * Write Defined Name for PrintTitles
  *
  * @param     \PHPExcel\Shared\XMLWriter    $objWriter         XML Writer
  * @param     \PHPExcel\Worksheet            $pSheet
  * @param     int                            $pSheetId
  * @throws     \PHPExcel\Writer\Exception
  */
 private function writeDefinedNameForPrintArea(\PHPExcel\Shared\XMLWriter $objWriter, \PHPExcel\Worksheet $pSheet = null, $pSheetId = 0)
 {
     // definedName for PrintArea
     if ($pSheet->getPageSetup()->isPrintAreaSet()) {
         $objWriter->startElement('definedName');
         $objWriter->writeAttribute('name', '_xlnm.Print_Area');
         $objWriter->writeAttribute('localSheetId', $pSheetId);
         // Setting string
         $settingString = '';
         // Print area
         $printArea = \PHPExcel\Cell::splitRange($pSheet->getPageSetup()->getPrintArea());
         $chunks = array();
         foreach ($printArea as $printAreaRect) {
             $printAreaRect[0] = \PHPExcel\Cell::absoluteReference($printAreaRect[0]);
             $printAreaRect[1] = \PHPExcel\Cell::absoluteReference($printAreaRect[1]);
             $chunks[] = '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!' . implode(':', $printAreaRect);
         }
         $objWriter->writeRawData(implode(',', $chunks));
         $objWriter->endElement();
     }
 }
Example #3
0
 /**
  * Writes the Excel BIFF EXTERNSHEET record. These references are used by
  * formulas. A formula references a sheet name via an index. Since we store a
  * reference to all of the external worksheets the EXTERNSHEET index is the same
  * as the worksheet index.
  *
  * @param string $sheetname The name of a external worksheet
  */
 private function writeExternsheet($sheetname)
 {
     $record = 0x17;
     // Record identifier
     // References to the current sheet are encoded differently to references to
     // external sheets.
     //
     if ($this->phpSheet->getTitle() == $sheetname) {
         $sheetname = '';
         $length = 0x2;
         // The following 2 bytes
         $cch = 1;
         // The following byte
         $rgch = 0x2;
         // Self reference
     } else {
         $length = 0x2 + strlen($sheetname);
         $cch = strlen($sheetname);
         $rgch = 0x3;
         // Reference to a sheet in the current workbook
     }
     $header = pack("vv", $record, $length);
     $data = pack("CC", $cch, $rgch);
     $this->append($header . $data . $sheetname);
 }
Example #4
0
 /**
  * Write SheetPr
  *
  * @param    \PHPExcel\Shared\XMLWriter        $objWriter        XML Writer
  * @param    \PHPExcel\Worksheet                $pSheet            Worksheet
  * @throws    \PHPExcel\Writer\Exception
  */
 private function writeSheetPr(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Worksheet $pSheet = null)
 {
     // sheetPr
     $objWriter->startElement('sheetPr');
     //$objWriter->writeAttribute('codeName',        $pSheet->getTitle());
     if ($pSheet->getParent()->hasMacros()) {
         //if the workbook have macros, we need to have codeName for the sheet
         if ($pSheet->hasCodeName() == false) {
             $pSheet->setCodeName($pSheet->getTitle());
         }
         $objWriter->writeAttribute('codeName', $pSheet->getCodeName());
     }
     $autoFilterRange = $pSheet->getAutoFilter()->getRange();
     if (!empty($autoFilterRange)) {
         $objWriter->writeAttribute('filterMode', 1);
         $pSheet->getAutoFilter()->showHideRows();
     }
     // tabColor
     if ($pSheet->isTabColorSet()) {
         $objWriter->startElement('tabColor');
         $objWriter->writeAttribute('rgb', $pSheet->getTabColor()->getARGB());
         $objWriter->endElement();
     }
     // outlinePr
     $objWriter->startElement('outlinePr');
     $objWriter->writeAttribute('summaryBelow', $pSheet->getShowSummaryBelow() ? '1' : '0');
     $objWriter->writeAttribute('summaryRight', $pSheet->getShowSummaryRight() ? '1' : '0');
     $objWriter->endElement();
     // pageSetUpPr
     if ($pSheet->getPageSetup()->getFitToPage()) {
         $objWriter->startElement('pageSetUpPr');
         $objWriter->writeAttribute('fitToPage', '1');
         $objWriter->endElement();
     }
     $objWriter->endElement();
 }