Example #1
0
 /**
  * Write BIFF record RANGEPROTECTION
  *
  * Openoffice.org's Documentaion of the Microsoft Excel File Format uses term RANGEPROTECTION for these records
  * Microsoft Office Excel 97-2007 Binary File Format Specification uses term FEAT for these records
  */
 private function writeRangeProtection()
 {
     foreach ($this->phpSheet->getProtectedCells() as $range => $password) {
         // number of ranges, e.g. 'A1:B3 C20:D25'
         $cellRanges = explode(' ', $range);
         $cref = count($cellRanges);
         $recordData = pack('vvVVvCVvVv', 0x868, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, $cref, 0x0, 0x0);
         foreach ($cellRanges as $cellRange) {
             $recordData .= $this->writeBIFF8CellRangeAddressFixed($cellRange);
         }
         // the rgbFeat structure
         $recordData .= pack('VV', 0x0, hexdec($password));
         $recordData .= \PHPExcel\Shared\StringHelper::UTF8toBIFF8UnicodeLong('p' . md5($recordData));
         $length = strlen($recordData);
         $record = 0x868;
         // Record identifier
         $header = pack("vv", $record, $length);
         $this->append($header . $recordData);
     }
 }
Example #2
0
 /**
  * Write ProtectedRanges
  *
  * @param    \PHPExcel\Shared\XMLWriter            $objWriter        XML Writer
  * @param    \PHPExcel\Worksheet                    $pSheet            Worksheet
  * @throws    \PHPExcel\Writer\Exception
  */
 private function writeProtectedRanges(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Worksheet $pSheet = null)
 {
     if (count($pSheet->getProtectedCells()) > 0) {
         // protectedRanges
         $objWriter->startElement('protectedRanges');
         // Loop protectedRanges
         foreach ($pSheet->getProtectedCells() as $protectedCell => $passwordHash) {
             // protectedRange
             $objWriter->startElement('protectedRange');
             $objWriter->writeAttribute('name', 'p' . md5($protectedCell));
             $objWriter->writeAttribute('sqref', $protectedCell);
             if (!empty($passwordHash)) {
                 $objWriter->writeAttribute('password', $passwordHash);
             }
             $objWriter->endElement();
         }
         $objWriter->endElement();
     }
 }