/** * Write SHEETLAYOUT record */ private function _writeSheetLayout() { if (!$this->_phpSheet->isTabColorSet()) { return; } $recordData = pack('vvVVVvv', 0x862, 0x0, 0x0, 0x0, 0x14, $this->_colors[$this->_phpSheet->getTabColor()->getRGB()], 0x0); $length = strlen($recordData); $record = 0x862; // Record identifier $header = pack('vv', $record, $length); $this->_append($header . $recordData); }
/** * Read SHEETLAYOUT record. Stores sheet tab color information. */ private function _readSheetLayout() { $length = $this->_GetInt2d($this->_data, $this->_pos + 2); $recordData = substr($this->_data, $this->_pos + 4, $length); // move stream pointer to next record $this->_pos += 4 + $length; // local pointer in record data $offset = 0; if (!$this->_readDataOnly) { // offset: 0; size: 2; repeated record identifier 0x0862 // offset: 2; size: 10; not used // offset: 12; size: 4; size of record data // Excel 2003 uses size of 0x14 (documented), Excel 2007 uses size of 0x28 (not documented?) $sz = $this->_GetInt4d($recordData, 12); switch ($sz) { case 0x14: // offset: 16; size: 2; color index for sheet tab $colorIndex = $this->_GetInt2d($recordData, 16); $color = $this->_readColor($colorIndex); $this->_phpSheet->getTabColor()->setRGB($color['rgb']); break; case 0x28: // TODO: Investigate structure for .xls SHEETLAYOUT record as saved by MS Office Excel 2007 return; break; } } }
/** * Write SheetPr * * @param Shared_XMLWriter $objWriter XML Writer * @param Worksheet $pSheet Worksheet * @throws Exception */ private function _writeSheetPr(Shared_XMLWriter $objWriter = null, Worksheet $pSheet = null) { // sheetPr $objWriter->startElement('sheetPr'); //$objWriter->writeAttribute('codeName', $pSheet->getTitle()); // 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(); }