/** * 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); }
/** * 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(); } }
/** * 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); }
/** * 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(); }