Esempio n. 1
0
 /**
  * Convert a number token to ptgInt or ptgNum
  *
  * @access private
  * @param mixed $num an integer or double for conversion to its ptg value
  */
 function _convertNumber($num)
 {
     // Integer in the range 0..2**16-1
     if (preg_match("/^\\d+\$/", $num) and $num <= 65535) {
         return pack("Cv", $this->ptg['ptgInt'], $num);
     } else {
         // A float
         if (PHPExcel_Writer_Excel5_BIFFwriter::getByteOrder()) {
             // if it's Big Endian
             $num = strrev($num);
         }
         return pack("Cd", $this->ptg['ptgNum'], $num);
     }
 }
Esempio n. 2
0
 /**
  * Constructor
  *
  * @param int		&$str_total		Total number of strings
  * @param int		&$str_unique	Total number of unique strings
  * @param array		&$str_table		String Table
  * @param array		&$colors		Colour Table
  * @param mixed		$parser			The formula parser created for the Workbook
  * @param boolean	$preCalculateFormulas	Flag indicating whether formulas should be calculated or just written
  * @param string	$phpSheet		The worksheet to write
  * @param PHPExcel_Worksheet $phpSheet
  */
 public function __construct(&$str_total, &$str_unique, &$str_table, &$colors, $parser, $preCalculateFormulas, $phpSheet)
 {
     // It needs to call its parent's constructor explicitly
     parent::__construct();
     // change BIFFwriter limit for CONTINUE records
     //		$this->_limit = 8224;
     $this->_preCalculateFormulas = $preCalculateFormulas;
     $this->_str_total =& $str_total;
     $this->_str_unique =& $str_unique;
     $this->_str_table =& $str_table;
     $this->_colors =& $colors;
     $this->_parser = $parser;
     $this->_phpSheet = $phpSheet;
     //$this->ext_sheets		= array();
     //$this->offset			= 0;
     $this->_xls_strmax = 255;
     $this->_colinfo = array();
     $this->_selection = array(0, 0, 0, 0);
     $this->_active_pane = 3;
     $this->_print_headers = 0;
     $this->_outline_style = 0;
     $this->_outline_below = 1;
     $this->_outline_right = 1;
     $this->_outline_on = 1;
     $this->_fntHashIndex = array();
     // calculate values for DIMENSIONS record
     $minR = 1;
     $minC = 'A';
     $maxR = $this->_phpSheet->getHighestRow();
     $maxC = $this->_phpSheet->getHighestColumn();
     // Determine lowest and highest column and row
     //		$this->_firstRowIndex = ($minR > 65535) ? 65535 : $minR;
     $this->_lastRowIndex = $maxR > 65535 ? 65535 : $maxR;
     $this->_firstColumnIndex = PHPExcel_Cell::columnIndexFromString($minC);
     $this->_lastColumnIndex = PHPExcel_Cell::columnIndexFromString($maxC);
     //		if ($this->_firstColumnIndex > 255) $this->_firstColumnIndex = 255;
     if ($this->_lastColumnIndex > 255) {
         $this->_lastColumnIndex = 255;
     }
     $this->_countCellStyleXfs = count($phpSheet->getParent()->getCellStyleXfCollection());
 }
Esempio n. 3
0
 /**
  * Class constructor
  *
  * @param PHPExcel    $phpExcel        The Workbook
  * @param int        &$str_total        Total number of strings
  * @param int        &$str_unique    Total number of unique strings
  * @param array        &$str_table        String Table
  * @param array        &$colors        Colour Table
  * @param mixed        $parser            The formula parser created for the Workbook
  */
 public function __construct(PHPExcel $phpExcel = null, &$str_total, &$str_unique, &$str_table, &$colors, $parser)
 {
     // It needs to call its parent's constructor explicitly
     parent::__construct();
     $this->parser = $parser;
     $this->biffSize = 0;
     $this->palette = array();
     $this->countryCode = -1;
     $this->strTotal =& $str_total;
     $this->strUnique =& $str_unique;
     $this->strTable =& $str_table;
     $this->colors =& $colors;
     $this->setPaletteXl97();
     $this->phpExcel = $phpExcel;
     // set BIFFwriter limit for CONTINUE records
     //        $this->_limit = 8224;
     $this->codepage = 0x4b0;
     // Add empty sheets and Build color cache
     $countSheets = $phpExcel->getSheetCount();
     for ($i = 0; $i < $countSheets; ++$i) {
         $phpSheet = $phpExcel->getSheet($i);
         $this->parser->setExtSheet($phpSheet->getTitle(), $i);
         // Register worksheet name with parser
         $supbook_index = 0x0;
         $ref = pack('vvv', $supbook_index, $i, $i);
         $this->parser->references[] = $ref;
         // Register reference with parser
         // Sheet tab colors?
         if ($phpSheet->isTabColorSet()) {
             $this->addColor($phpSheet->getTabColor()->getRGB());
         }
     }
 }
Esempio n. 4
0
 /**
  * Determine the byte order and store it as class data to avoid
  * recalculating it for each call to new().
  *
  * @return int
  */
 public static function getByteOrder()
 {
     if (!isset(self::$_byte_order)) {
         // Check if "pack" gives the required IEEE 64bit float
         $teststr = pack("d", 1.2345);
         $number = pack("C8", 0x8d, 0x97, 0x6e, 0x12, 0x83, 0xc0, 0xf3, 0x3f);
         if ($number == $teststr) {
             $byte_order = 0;
             // Little Endian
         } elseif ($number == strrev($teststr)) {
             $byte_order = 1;
             // Big Endian
         } else {
             // Give up. I'll fix this in a later version.
             throw new Exception("Required floating point format not supported on this platform.");
         }
         self::$_byte_order = $byte_order;
     }
     return self::$_byte_order;
 }
Esempio n. 5
0
 /**
  * Store the BOTTOMMARGIN BIFF record.
  */
 private function _writeMarginBottom()
 {
     $record = 0x29;
     // Record identifier
     $length = 0x8;
     // Bytes to follow
     $margin = $this->_phpSheet->getPageMargins()->getBottom();
     // Margin in inches
     $header = pack("vv", $record, $length);
     $data = pack("d", $margin);
     if (PHPExcel_Writer_Excel5_BIFFwriter::getByteOrder()) {
         // if it's Big Endian
         $data = strrev($data);
     }
     $this->_append($header . $data);
 }
Esempio n. 6
0
 /**
  * Store Worksheet data in memory using the parent's class append() or to a
  * temporary file, the default.
  *
  * @access private
  * @param string $data The binary data to append
  */
 function _append($data)
 {
     if ($this->_using_tmpfile) {
         // Add CONTINUE records if necessary
         if (strlen($data) > $this->_limit) {
             $data = $this->_addContinue($data);
         }
         fwrite($this->_filehandle, $data);
         $this->_datasize += strlen($data);
     } else {
         parent::_append($data);
     }
 }
Esempio n. 7
0
 /**
  * Class constructor
  *
  * @param PHPExcel $phpExcel The Workbook
  * @param int $BIFF_verions BIFF version
  * @param int  $str_total		Total number of strings
  * @param int  $str_unique		Total number of unique strings
  * @param array  $str_table
  * @param mixed   $parser	  The formula parser created for the Workbook
  */
 public function __construct(PHPExcel $phpExcel = null, $BIFF_version = 0x600, &$str_total, &$str_unique, &$str_table, &$colors, $parser)
 {
     // It needs to call its parent's constructor explicitly
     parent::__construct();
     $this->_parser = $parser;
     $this->_biffsize = 0;
     $this->_palette = array();
     $this->_codepage = 0x4e4;
     // FIXME: should change for BIFF8
     $this->_country_code = -1;
     $this->_str_total =& $str_total;
     $this->_str_unique =& $str_unique;
     $this->_str_table =& $str_table;
     $this->_colors =& $colors;
     $this->_setPaletteXl97();
     $this->_phpExcel = $phpExcel;
     if ($BIFF_version == 0x600) {
         $this->_BIFF_version = 0x600;
         // change BIFFwriter limit for CONTINUE records
         $this->_limit = 8224;
         $this->_codepage = 0x4b0;
     }
     // Add empty sheets and Build color cache
     $countSheets = $phpExcel->getSheetCount();
     for ($i = 0; $i < $countSheets; ++$i) {
         $phpSheet = $phpExcel->getSheet($i);
         $this->_parser->setExtSheet($phpSheet->getTitle(), $i);
         // Register worksheet name with parser
         // for BIFF8
         if ($this->_BIFF_version == 0x600) {
             $supbook_index = 0x0;
             $ref = pack('vvv', $supbook_index, $i, $i);
             $this->_parser->_references[] = $ref;
             // Register reference with parser
         }
         // Sheet tab colors?
         if ($phpSheet->isTabColorSet()) {
             $this->_addColor($phpSheet->getTabColor()->getRGB());
         }
     }
 }