ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
PHPExcel_Writer_Excel5_Workbook Class Reference
+ Inheritance diagram for PHPExcel_Writer_Excel5_Workbook:
+ Collaboration diagram for PHPExcel_Writer_Excel5_Workbook:

Public Member Functions

 __construct (PHPExcel $phpExcel=null, $BIFF_version=0x0600, &$str_total, &$str_unique, &$str_table, &$colors, $parser)
 Class constructor.
 addXfWriter ($style, $isStyleXf=false)
 Add a new XF writer.
 _setPaletteXl97 ()
 Sets the colour palette to the Excel 97+ default.
 writeWorkbook ($pWorksheetSizes=null)
 Assemble worksheets into a workbook and send the BIFF data to an OLE storage.
 _calcSheetOffsets ()
 Calculate offsets for Worksheet BOF records.
 getEscher ()
 Get Escher object.
 setEscher (PHPExcel_Shared_Escher $pValue=null)
 Set Escher object.
- Public Member Functions inherited from PHPExcel_Writer_Excel5_BIFFwriter
 __construct ()
 Constructor.
 _append ($data)
 General storage function.
 writeData ($data)
 General storage function like _append, but returns string instead of modifying $this->_data.
 _storeBof ($type)
 Writes Excel BOF record to indicate the beginning of a stream or sub-stream in the BIFF file.
 _storeEof ()
 Writes Excel EOF record to indicate the end of a BIFF stream.
 writeEof ()
 Writes Excel EOF record to indicate the end of a BIFF stream.
 _addContinue ($data)
 Excel limits the size of BIFF records.

Data Fields

 $_biffsize
 $_palette
 $_codepage
 $_country_code
- Data Fields inherited from PHPExcel_Writer_Excel5_BIFFwriter
 $_BIFF_version = 0x0500
 $_data
 $_datasize
 $_limit

Private Member Functions

 _addColor ($rgb)
 Alter color palette adding a custom color.
 _writeAllFonts ()
 Store the Excel FONT records.
 _writeAllNumFormats ()
 Store user defined numerical formats i.e.
 _writeAllXfs ()
 Write all XF records.
 _writeAllStyles ()
 Write all STYLE records.
 _writeExterns ()
 Write the EXTERNCOUNT and EXTERNSHEET records.
 _writeNames ()
 Write the NAME record to define the print area and the repeat rows and cols.
 _writeAllDefinedNamesBiff8 ()
 Writes all the DEFINEDNAME records (BIFF8).
 _writeDefinedNameBiff8 ($name, $formulaData, $sheetIndex=0, $isBuiltIn=false)
 Write a DEFINEDNAME record for BIFF8 using explicit binary formula data.
 _writeCodepage ()
 Stores the CODEPAGE biff record.
 _writeWindow1 ()
 Write Excel BIFF WINDOW1 record.
 _writeBoundsheet ($sheet, $offset)
 Writes Excel BIFF BOUNDSHEET record.
 _writeSupbookInternal ()
 Write Internal SUPBOOK record.
 _writeExternsheetBiff8 ()
 Writes the Excel BIFF EXTERNSHEET record.
 _writeStyle ()
 Write Excel BIFF STYLE records.
 _writeNumFormat ($format, $ifmt)
 Writes Excel FORMAT record for non "built-in" numerical formats.
 _writeDatemode ()
 Write DATEMODE record to indicate the date system in use (1904 or 1900).
 _writeExterncount ($cxals)
 Write BIFF record EXTERNCOUNT to indicate the number of external sheet references in the workbook.
 _writeExternsheet ($sheetname)
 Writes the Excel BIFF EXTERNSHEET record.
 _writeNameShort ($index, $type, $rowmin, $rowmax, $colmin, $colmax)
 Store the NAME record in the short format that is used for storing the print area, repeat rows only and repeat columns only.
 _writeNameLong ($index, $type, $rowmin, $rowmax, $colmin, $colmax)
 Store the NAME record in the long format that is used for storing the repeat rows and columns when both are specified.
 _writeCountry ()
 Stores the COUNTRY record for localization.
 _writeRecalcId ()
 Write the RECALCID record.
 _writePalette ()
 Stores the PALETTE biff record.
 _writeSharedStringsTable ()
 Handling of the SST continue blocks is complicated by the need to include an additional continuation byte depending on whether the string is split between blocks or whether it starts at the beginning of the block.
 _writeMsoDrawingGroup ()
 Writes the MSODRAWINGGROUP record if needed.

Private Attributes

 $_parser
 $_xfWriters = array()
 $_phpExcel
 $_fontWriters = array()
 $_addedFonts = array()
 $_numberFormats = array()
 $_addedNumberFormats = array()
 $_worksheetSizes = array()
 $_worksheetOffsets = array()
 $_str_total
 $_str_unique
 $_str_table
 $_colors
 Color cache.
 $_escher

Additional Inherited Members

- Static Public Member Functions inherited from PHPExcel_Writer_Excel5_BIFFwriter
static getByteOrder ()
 Determine the byte order and store it as class data to avoid recalculating it for each call to new().

Detailed Description

Definition at line 71 of file Workbook.php.

Constructor & Destructor Documentation

PHPExcel_Writer_Excel5_Workbook::__construct ( PHPExcel  $phpExcel = null,
  $BIFF_version = 0x0600,
$str_total,
$str_unique,
$str_table,
$colors,
  $parser 
)

Class constructor.

Parameters
PHPExcel$phpExcelThe Workbook
int$BIFF_verionsBIFF version
int$str_totalTotal number of strings
int$str_uniqueTotal number of unique strings
array$str_table
mixed$parserThe formula parser created for the Workbook

Definition at line 203 of file Workbook.php.

References PHPExcel_Writer_Excel5_BIFFwriter\__construct(), _addColor(), and _setPaletteXl97().

{
// It needs to call its parent's constructor explicitly
$this->_parser = $parser;
$this->_biffsize = 0;
$this->_palette = array();
$this->_codepage = 0x04E4; // 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 == 0x0600) {
$this->_BIFF_version = 0x0600;
// change BIFFwriter limit for CONTINUE records
$this->_limit = 8224;
$this->_codepage = 0x04B0;
}
// 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 == 0x0600) {
$supbook_index = 0x00;
$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());
}
}
}

+ Here is the call graph for this function:

Member Function Documentation

PHPExcel_Writer_Excel5_Workbook::_addColor (   $rgb)
private

Alter color palette adding a custom color.

Parameters
string$rgbE.g. 'FF00AA'
Returns
int Color index

Definition at line 326 of file Workbook.php.

Referenced by __construct(), and addXfWriter().

{
if (!isset($this->_colors[$rgb])) {
if (count($this->_colors) < 57) {
// then we add a custom color altering the palette
$colorIndex = 8 + count($this->_colors);
$this->_palette[$colorIndex] =
array(
hexdec(substr($rgb, 0, 2)),
hexdec(substr($rgb, 2, 2)),
hexdec(substr($rgb, 4)),
0
);
$this->_colors[$rgb] = $colorIndex;
} else {
// no room for more custom colors, just map to black
$colorIndex = 0;
}
} else {
// fetch already added custom color
$colorIndex = $this->_colors[$rgb];
}
return $colorIndex;
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_calcSheetOffsets ( )

Calculate offsets for Worksheet BOF records.

private

Definition at line 489 of file Workbook.php.

References PHPExcel_Writer_Excel5_BIFFwriter\$_datasize, and PHPExcel_Shared_String\UTF8toBIFF8UnicodeShort().

Referenced by writeWorkbook().

{
if ($this->_BIFF_version == 0x0600) {
$boundsheet_length = 10; // fixed length for a BOUNDSHEET record
} else {
$boundsheet_length = 11;
}
// size of Workbook globals part 1 + 3
$offset = $this->_datasize;
// add size of Workbook globals part 2, the length of the SHEET records
$total_worksheets = count($this->_phpExcel->getAllSheets());
foreach ($this->_phpExcel->getWorksheetIterator() as $sheet) {
if ($this->_BIFF_version == 0x0600) {
$offset += $boundsheet_length + strlen(PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($sheet->getTitle()));
} else {
$offset += $boundsheet_length + strlen($sheet->getTitle());
}
}
// add the sizes of each of the Sheet substreams, respectively
for ($i = 0; $i < $total_worksheets; ++$i) {
$this->_worksheetOffsets[$i] = $offset;
$offset += $this->_worksheetSizes[$i];
}
$this->_biffsize = $offset;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_setPaletteXl97 ( )

Sets the colour palette to the Excel 97+ default.

private

Definition at line 356 of file Workbook.php.

Referenced by __construct().

{
$this->_palette = array(
0x08 => array(0x00, 0x00, 0x00, 0x00),
0x09 => array(0xff, 0xff, 0xff, 0x00),
0x0A => array(0xff, 0x00, 0x00, 0x00),
0x0B => array(0x00, 0xff, 0x00, 0x00),
0x0C => array(0x00, 0x00, 0xff, 0x00),
0x0D => array(0xff, 0xff, 0x00, 0x00),
0x0E => array(0xff, 0x00, 0xff, 0x00),
0x0F => array(0x00, 0xff, 0xff, 0x00),
0x10 => array(0x80, 0x00, 0x00, 0x00),
0x11 => array(0x00, 0x80, 0x00, 0x00),
0x12 => array(0x00, 0x00, 0x80, 0x00),
0x13 => array(0x80, 0x80, 0x00, 0x00),
0x14 => array(0x80, 0x00, 0x80, 0x00),
0x15 => array(0x00, 0x80, 0x80, 0x00),
0x16 => array(0xc0, 0xc0, 0xc0, 0x00),
0x17 => array(0x80, 0x80, 0x80, 0x00),
0x18 => array(0x99, 0x99, 0xff, 0x00),
0x19 => array(0x99, 0x33, 0x66, 0x00),
0x1A => array(0xff, 0xff, 0xcc, 0x00),
0x1B => array(0xcc, 0xff, 0xff, 0x00),
0x1C => array(0x66, 0x00, 0x66, 0x00),
0x1D => array(0xff, 0x80, 0x80, 0x00),
0x1E => array(0x00, 0x66, 0xcc, 0x00),
0x1F => array(0xcc, 0xcc, 0xff, 0x00),
0x20 => array(0x00, 0x00, 0x80, 0x00),
0x21 => array(0xff, 0x00, 0xff, 0x00),
0x22 => array(0xff, 0xff, 0x00, 0x00),
0x23 => array(0x00, 0xff, 0xff, 0x00),
0x24 => array(0x80, 0x00, 0x80, 0x00),
0x25 => array(0x80, 0x00, 0x00, 0x00),
0x26 => array(0x00, 0x80, 0x80, 0x00),
0x27 => array(0x00, 0x00, 0xff, 0x00),
0x28 => array(0x00, 0xcc, 0xff, 0x00),
0x29 => array(0xcc, 0xff, 0xff, 0x00),
0x2A => array(0xcc, 0xff, 0xcc, 0x00),
0x2B => array(0xff, 0xff, 0x99, 0x00),
0x2C => array(0x99, 0xcc, 0xff, 0x00),
0x2D => array(0xff, 0x99, 0xcc, 0x00),
0x2E => array(0xcc, 0x99, 0xff, 0x00),
0x2F => array(0xff, 0xcc, 0x99, 0x00),
0x30 => array(0x33, 0x66, 0xff, 0x00),
0x31 => array(0x33, 0xcc, 0xcc, 0x00),
0x32 => array(0x99, 0xcc, 0x00, 0x00),
0x33 => array(0xff, 0xcc, 0x00, 0x00),
0x34 => array(0xff, 0x99, 0x00, 0x00),
0x35 => array(0xff, 0x66, 0x00, 0x00),
0x36 => array(0x66, 0x66, 0x99, 0x00),
0x37 => array(0x96, 0x96, 0x96, 0x00),
0x38 => array(0x00, 0x33, 0x66, 0x00),
0x39 => array(0x33, 0x99, 0x66, 0x00),
0x3A => array(0x00, 0x33, 0x00, 0x00),
0x3B => array(0x33, 0x33, 0x00, 0x00),
0x3C => array(0x99, 0x33, 0x00, 0x00),
0x3D => array(0x99, 0x33, 0x66, 0x00),
0x3E => array(0x33, 0x33, 0x99, 0x00),
0x3F => array(0x33, 0x33, 0x33, 0x00),
);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeAllDefinedNamesBiff8 ( )
private

Writes all the DEFINEDNAME records (BIFF8).

So far this is only used for repeating rows/columns (print titles) and print areas

Definition at line 670 of file Workbook.php.

References PHPExcel_Cell\splitRange().

Referenced by writeWorkbook().

{
$chunk = '';
// Named ranges
if (count($this->_phpExcel->getNamedRanges()) > 0) {
// Loop named ranges
$namedRanges = $this->_phpExcel->getNamedRanges();
foreach ($namedRanges as $namedRange) {
// Create absolute coordinate
$range = PHPExcel_Cell::splitRange($namedRange->getRange());
for ($i = 0; $i < count($range); $i++) {
$range[$i][0] = '\'' . str_replace("'", "''", $namedRange->getWorksheet()->getTitle()) . '\'!' . PHPExcel_Cell::absoluteCoordinate($range[$i][0]);
if (isset($range[$i][1])) {
$range[$i][1] = PHPExcel_Cell::absoluteCoordinate($range[$i][1]);
}
}
$range = PHPExcel_Cell::buildRange($range); // e.g. Sheet1!$A$1:$B$2
// parse formula
try {
$error = $this->_parser->parse($range);
$formulaData = $this->_parser->toReversePolish();
// make sure tRef3d is of type tRef3dR (0x3A)
if (isset($formulaData{0}) and ($formulaData{0} == "\x7A" or $formulaData{0} == "\x5A")) {
$formulaData = "\x3A" . substr($formulaData, 1);
}
if ($namedRange->getLocalOnly()) {
// local scope
$scope = $this->_phpExcel->getIndex($namedRange->getScope()) + 1;
} else {
// global scope
$scope = 0;
}
$chunk .= $this->writeData($this->_writeDefinedNameBiff8($namedRange->getName(), $formulaData, $scope, false));
} catch(Exception $e) {
// do nothing
}
}
}
// total number of sheets
$total_worksheets = $this->_phpExcel->getSheetCount();
// write the print titles (repeating rows, columns), if any
for ($i = 0; $i < $total_worksheets; ++$i) {
$sheetSetup = $this->_phpExcel->getSheet($i)->getPageSetup();
// simultaneous repeatColumns repeatRows
if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) {
$repeat = $sheetSetup->getColumnsToRepeatAtLeft();
$colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1;
$colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1;
$repeat = $sheetSetup->getRowsToRepeatAtTop();
$rowmin = $repeat[0] - 1;
$rowmax = $repeat[1] - 1;
// construct formula data manually
$formulaData = pack('Cv', 0x29, 0x17); // tMemFunc
$formulaData .= pack('Cvvvvv', 0x3B, $i, 0, 65535, $colmin, $colmax); // tArea3d
$formulaData .= pack('Cvvvvv', 0x3B, $i, $rowmin, $rowmax, 0, 255); // tArea3d
$formulaData .= pack('C', 0x10); // tList
// store the DEFINEDNAME record
$chunk .= $this->writeData($this->_writeDefinedNameBiff8(pack('C', 0x07), $formulaData, $i + 1, true));
// (exclusive) either repeatColumns or repeatRows
} else if ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) {
// Columns to repeat
if ($sheetSetup->isColumnsToRepeatAtLeftSet()) {
$repeat = $sheetSetup->getColumnsToRepeatAtLeft();
$colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1;
$colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1;
} else {
$colmin = 0;
$colmax = 255;
}
// Rows to repeat
if ($sheetSetup->isRowsToRepeatAtTopSet()) {
$repeat = $sheetSetup->getRowsToRepeatAtTop();
$rowmin = $repeat[0] - 1;
$rowmax = $repeat[1] - 1;
} else {
$rowmin = 0;
$rowmax = 65535;
}
// construct formula data manually because parser does not recognize absolute 3d cell references
$formulaData = pack('Cvvvvv', 0x3B, $i, $rowmin, $rowmax, $colmin, $colmax);
// store the DEFINEDNAME record
$chunk .= $this->writeData($this->_writeDefinedNameBiff8(pack('C', 0x07), $formulaData, $i + 1, true));
}
}
// write the print areas, if any
for ($i = 0; $i < $total_worksheets; ++$i) {
$sheetSetup = $this->_phpExcel->getSheet($i)->getPageSetup();
if ($sheetSetup->isPrintAreaSet()) {
// Print area, e.g. A3:J6,H1:X20
$printArea = PHPExcel_Cell::splitRange($sheetSetup->getPrintArea());
$countPrintArea = count($printArea);
$formulaData = '';
for ($j = 0; $j < $countPrintArea; ++$j) {
$printAreaRect = $printArea[$j]; // e.g. A3:J6
$printAreaRect[0] = PHPExcel_Cell::coordinateFromString($printAreaRect[0]);
$printAreaRect[1] = PHPExcel_Cell::coordinateFromString($printAreaRect[1]);
$print_rowmin = $printAreaRect[0][1] - 1;
$print_rowmax = $printAreaRect[1][1] - 1;
$print_colmin = PHPExcel_Cell::columnIndexFromString($printAreaRect[0][0]) - 1;
$print_colmax = PHPExcel_Cell::columnIndexFromString($printAreaRect[1][0]) - 1;
// construct formula data manually because parser does not recognize absolute 3d cell references
$formulaData .= pack('Cvvvvv', 0x3B, $i, $print_rowmin, $print_rowmax, $print_colmin, $print_colmax);
if ($j > 0) {
$formulaData .= pack('C', 0x10); // list operator token ','
}
}
// store the DEFINEDNAME record
$chunk .= $this->writeData($this->_writeDefinedNameBiff8(pack('C', 0x06), $formulaData, $i + 1, true));
}
}
return $chunk;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeAllFonts ( )
private

Store the Excel FONT records.

Definition at line 521 of file Workbook.php.

References PHPExcel_Writer_Excel5_BIFFwriter\_append().

Referenced by writeWorkbook().

{
foreach ($this->_fontWriters as $fontWriter) {
$this->_append($fontWriter->writeFont());
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeAllNumFormats ( )
private

Store user defined numerical formats i.e.

FORMAT records

Definition at line 531 of file Workbook.php.

References _writeNumFormat().

Referenced by writeWorkbook().

{
foreach ($this->_numberFormats as $numberFormatIndex => $numberFormat) {
$this->_writeNumFormat($numberFormat->getFormatCode(), $numberFormatIndex);
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeAllStyles ( )
private

Write all STYLE records.

Definition at line 551 of file Workbook.php.

References _writeStyle().

Referenced by writeWorkbook().

{
$this->_writeStyle();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeAllXfs ( )
private

Write all XF records.

Definition at line 541 of file Workbook.php.

References PHPExcel_Writer_Excel5_BIFFwriter\_append().

Referenced by writeWorkbook().

{
foreach ($this->_xfWriters as $xfWriter) {
$this->_append($xfWriter->writeXf());
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeBoundsheet (   $sheet,
  $offset 
)
private

Writes Excel BIFF BOUNDSHEET record.

Parameters
PHPExcel_Worksheet$sheetWorksheet name
integer$offsetLocation of worksheet BOF

Definition at line 893 of file Workbook.php.

Referenced by writeWorkbook().

{
$sheetname = $sheet->getTitle();
$record = 0x0085; // Record identifier
// sheet state
switch ($sheet->getSheetState()) {
case PHPExcel_Worksheet::SHEETSTATE_VISIBLE: $ss = 0x00; break;
case PHPExcel_Worksheet::SHEETSTATE_HIDDEN: $ss = 0x01; break;
default: $ss = 0x00; break;
}
// sheet type
$st = 0x00;
$grbit = 0x0000; // Visibility and sheet type
if ($this->_BIFF_version == 0x0600) {
$data = pack("VCC", $offset, $ss, $st);
} else {
$cch = strlen($sheetname); // Length of sheet name
$data = pack("VCCC", $offset, $ss, $st, $cch);
$data .= $sheetname;
}
$length = strlen($data);
$header = pack("vv", $record, $length);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeCodepage ( )
private

Stores the CODEPAGE biff record.

Definition at line 843 of file Workbook.php.

Referenced by writeWorkbook().

{
$record = 0x0042; // Record identifier
$length = 0x0002; // Number of bytes to follow
$cv = $this->_codepage; // The code page
$header = pack('vv', $record, $length);
$data = pack('v', $cv);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeCountry ( )
private

Stores the COUNTRY record for localization.

Returns
string

Definition at line 1219 of file Workbook.php.

Referenced by writeWorkbook().

{
$record = 0x008C; // Record identifier
$length = 4; // Number of bytes to follow
$header = pack('vv', $record, $length);
/* using the same country code always for simplicity */
$data = pack('vv', $this->_country_code, $this->_country_code);
//$this->_append($header . $data);
return $this->writeData($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeDatemode ( )
private

Write DATEMODE record to indicate the date system in use (1904 or 1900).

Definition at line 1008 of file Workbook.php.

Referenced by writeWorkbook().

{
$record = 0x0022; // Record identifier
$length = 0x0002; // Bytes to follow
1 : 0; // Flag for 1904 date system
$header = pack("vv", $record, $length);
$data = pack("v", $f1904);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeDefinedNameBiff8 (   $name,
  $formulaData,
  $sheetIndex = 0,
  $isBuiltIn = false 
)
private

Write a DEFINEDNAME record for BIFF8 using explicit binary formula data.

Parameters
string$nameThe name in UTF-8
string$formulaDataThe binary formula data
string$sheetIndex1-based sheet index the defined name applies to. 0 = global
boolean$isBuiltInBuilt-in name?
Returns
string Complete binary record data

Definition at line 814 of file Workbook.php.

{
$record = 0x0018;
// option flags
$options = $isBuiltIn ? 0x20 : 0x00;
// length of the name, character count
// name with stripped length field
// size of the formula (in bytes)
$sz = strlen($formulaData);
// combine the parts
$data = pack('vCCvvvCCCC', $options, 0, $nlen, $sz, 0, $sheetIndex, 0, 0, 0, 0)
. $name . $formulaData;
$length = strlen($data);
$header = pack('vv', $record, $length);
return $header . $data;
}
PHPExcel_Writer_Excel5_Workbook::_writeExterncount (   $cxals)
private

Write BIFF record EXTERNCOUNT to indicate the number of external sheet references in the workbook.

Excel only stores references to external sheets that are used in NAME. The workbook NAME record is required to define the print area and the repeat rows and columns.

A similar method is used in Worksheet.php for a slightly different purpose.

Parameters
integer$cxalsNumber of external references

Definition at line 1034 of file Workbook.php.

Referenced by _writeExterns().

{
$record = 0x0016; // Record identifier
$length = 0x0002; // Number of bytes to follow
$header = pack("vv", $record, $length);
$data = pack("v", $cxals);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeExterns ( )
private

Write the EXTERNCOUNT and EXTERNSHEET records.

These are used as indexes for the NAME records.

Definition at line 560 of file Workbook.php.

References _writeExterncount(), and _writeExternsheet().

Referenced by writeWorkbook().

{
$countSheets = $this->_phpExcel->getSheetCount();
// Create EXTERNCOUNT with number of worksheets
$this->_writeExterncount($countSheets);
// Create EXTERNSHEET for each worksheet
for ($i = 0; $i < $countSheets; ++$i) {
$this->_writeExternsheet($phpExcel->getSheet($i)->getTitle());
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeExternsheet (   $sheetname)
private

Writes the Excel BIFF EXTERNSHEET record.

These references are used by formulas. NAME record is required to define the print area and the repeat rows and columns.

A similar method is used in Worksheet.php for a slightly different purpose.

Parameters
string$sheetnameWorksheet name

Definition at line 1054 of file Workbook.php.

Referenced by _writeExterns().

{
$record = 0x0017; // Record identifier
$length = 0x02 + strlen($sheetname); // Number of bytes to follow
$cch = strlen($sheetname); // Length of sheet name
$rgch = 0x03; // Filename encoding
$header = pack("vv", $record, $length);
$data = pack("CC", $cch, $rgch);
$this->_append($header . $data . $sheetname);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeExternsheetBiff8 ( )
private

Writes the Excel BIFF EXTERNSHEET record.

These references are used by formulas.

Definition at line 943 of file Workbook.php.

Referenced by writeWorkbook().

{
$total_references = count($this->_parser->_references);
$record = 0x0017; // Record identifier
$length = 2 + 6 * $total_references; // Number of bytes to follow
$supbook_index = 0; // FIXME: only using internal SUPBOOK record
$header = pack("vv", $record, $length);
$data = pack('v', $total_references);
for ($i = 0; $i < $total_references; ++$i) {
$data .= $this->_parser->_references[$i];
}
return $this->writeData($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeMsoDrawingGroup ( )
private

Writes the MSODRAWINGGROUP record if needed.

Possibly split using CONTINUE records.

Definition at line 1408 of file Workbook.php.

Referenced by writeWorkbook().

{
// write the Escher stream if necessary
if (isset($this->_escher)) {
$writer = new PHPExcel_Writer_Excel5_Escher($this->_escher);
$data = $writer->close();
$record = 0x00EB;
$length = strlen($data);
$header = pack("vv", $record, $length);
return $this->writeData($header . $data);
} else {
return '';
}
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeNameLong (   $index,
  $type,
  $rowmin,
  $rowmax,
  $colmin,
  $colmax 
)
private

Store the NAME record in the long format that is used for storing the repeat rows and columns when both are specified.

This shares a lot of code with _writeNameShort() but we use a separate method to keep the code clean. Code abstraction for reuse can be carried too far, and I should know. ;-)

Parameters
integer$indexSheet index
integer$typeBuilt-in name type
integer$rowminStart row
integer$rowmaxEnd row
integer$colminStart colum
integer$colmaxEnd column

Definition at line 1144 of file Workbook.php.

Referenced by _writeNames().

{
$record = 0x0018; // Record identifier
$length = 0x003d; // Number of bytes to follow
$grbit = 0x0020; // Option flags
$chKey = 0x00; // Keyboard shortcut
$cch = 0x01; // Length of text name
$cce = 0x002e; // Length of text definition
$ixals = $index + 1; // Sheet index
$itab = $ixals; // Equal to ixals
$cchCustMenu = 0x00; // Length of cust menu text
$cchDescription = 0x00; // Length of description text
$cchHelptopic = 0x00; // Length of help topic text
$cchStatustext = 0x00; // Length of status bar text
$rgch = $type; // Built-in name type
$unknown01 = 0x29;
$unknown02 = 0x002b;
$unknown03 = 0x3b;
$unknown04 = 0xffff-$index;
$unknown05 = 0x0000;
$unknown06 = 0x0000;
$unknown07 = 0x1087;
$unknown08 = 0x8008;
$header = pack("vv", $record, $length);
$data = pack("v", $grbit);
$data .= pack("C", $chKey);
$data .= pack("C", $cch);
$data .= pack("v", $cce);
$data .= pack("v", $ixals);
$data .= pack("v", $itab);
$data .= pack("C", $cchCustMenu);
$data .= pack("C", $cchDescription);
$data .= pack("C", $cchHelptopic);
$data .= pack("C", $cchStatustext);
$data .= pack("C", $rgch);
$data .= pack("C", $unknown01);
$data .= pack("v", $unknown02);
// Column definition
$data .= pack("C", $unknown03);
$data .= pack("v", $unknown04);
$data .= pack("v", $unknown05);
$data .= pack("v", $unknown06);
$data .= pack("v", $unknown07);
$data .= pack("v", $unknown08);
$data .= pack("v", $index);
$data .= pack("v", $index);
$data .= pack("v", 0x0000);
$data .= pack("v", 0x3fff);
$data .= pack("C", $colmin);
$data .= pack("C", $colmax);
// Row definition
$data .= pack("C", $unknown03);
$data .= pack("v", $unknown04);
$data .= pack("v", $unknown05);
$data .= pack("v", $unknown06);
$data .= pack("v", $unknown07);
$data .= pack("v", $unknown08);
$data .= pack("v", $index);
$data .= pack("v", $index);
$data .= pack("v", $rowmin);
$data .= pack("v", $rowmax);
$data .= pack("C", 0x00);
$data .= pack("C", 0xff);
// End of data
$data .= pack("C", 0x10);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeNames ( )
private

Write the NAME record to define the print area and the repeat rows and cols.

Definition at line 575 of file Workbook.php.

References _writeNameLong(), _writeNameShort(), PHPExcel_Cell\columnIndexFromString(), PHPExcel_Cell\coordinateFromString(), and PHPExcel_Cell\splitRange().

Referenced by writeWorkbook().

{
// total number of sheets
$total_worksheets = $this->_phpExcel->getSheetCount();
// Create the print area NAME records
for ($i = 0; $i < $total_worksheets; ++$i) {
$sheetSetup = $this->_phpExcel->getSheet($i)->getPageSetup();
// Write a Name record if the print area has been defined
if ($sheetSetup->isPrintAreaSet()) {
// Print area
$printArea = PHPExcel_Cell::splitRange($sheetSetup->getPrintArea());
$printArea = $printArea[0];
$printArea[0] = PHPExcel_Cell::coordinateFromString($printArea[0]);
$printArea[1] = PHPExcel_Cell::coordinateFromString($printArea[1]);
$print_rowmin = $printArea[0][1] - 1;
$print_rowmax = $printArea[1][1] - 1;
$print_colmin = PHPExcel_Cell::columnIndexFromString($printArea[0][0]) - 1;
$print_colmax = PHPExcel_Cell::columnIndexFromString($printArea[1][0]) - 1;
$i, // sheet index
0x06, // NAME type
$print_rowmin,
$print_rowmax,
$print_colmin,
$print_colmax
);
}
}
// Create the print title NAME records
for ($i = 0; $i < $total_worksheets; ++$i) {
$sheetSetup = $this->_phpExcel->getSheet($i)->getPageSetup();
// simultaneous repeatColumns repeatRows
if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) {
$repeat = $sheetSetup->getColumnsToRepeatAtLeft();
$colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1;
$colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1;
$repeat = $sheetSetup->getRowsToRepeatAtTop();
$rowmin = $repeat[0] - 1;
$rowmax = $repeat[1] - 1;
$i, // sheet index
0x07, // NAME type
$rowmin,
$rowmax,
$colmin,
$colmax
);
// (exclusive) either repeatColumns or repeatRows
} else if ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) {
// Columns to repeat
if ($sheetSetup->isColumnsToRepeatAtLeftSet()) {
$repeat = $sheetSetup->getColumnsToRepeatAtLeft();
$colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1;
$colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1;
} else {
$colmin = 0;
$colmax = 255;
}
// Rows to repeat
if ($sheetSetup->isRowsToRepeatAtTopSet()) {
$repeat = $sheetSetup->getRowsToRepeatAtTop();
$rowmin = $repeat[0] - 1;
$rowmax = $repeat[1] - 1;
} else {
$rowmin = 0;
$rowmax = 16383;
}
$i, // sheet index
0x07, // NAME type
$rowmin,
$rowmax,
$colmin,
$colmax
);
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeNameShort (   $index,
  $type,
  $rowmin,
  $rowmax,
  $colmin,
  $colmax 
)
private

Store the NAME record in the short format that is used for storing the print area, repeat rows only and repeat columns only.

Parameters
integer$indexSheet index
integer$typeBuilt-in name type
integer$rowminStart row
integer$rowmaxEnd row
integer$colminStart colum
integer$colmaxEnd column

Definition at line 1079 of file Workbook.php.

Referenced by _writeNames().

{
$record = 0x0018; // Record identifier
$length = 0x0024; // Number of bytes to follow
$grbit = 0x0020; // Option flags
$chKey = 0x00; // Keyboard shortcut
$cch = 0x01; // Length of text name
$cce = 0x0015; // Length of text definition
$ixals = $index + 1; // Sheet index
$itab = $ixals; // Equal to ixals
$cchCustMenu = 0x00; // Length of cust menu text
$cchDescription = 0x00; // Length of description text
$cchHelptopic = 0x00; // Length of help topic text
$cchStatustext = 0x00; // Length of status bar text
$rgch = $type; // Built-in name type
$unknown03 = 0x3b;
$unknown04 = 0xffff-$index;
$unknown05 = 0x0000;
$unknown06 = 0x0000;
$unknown07 = 0x1087;
$unknown08 = 0x8005;
$header = pack("vv", $record, $length);
$data = pack("v", $grbit);
$data .= pack("C", $chKey);
$data .= pack("C", $cch);
$data .= pack("v", $cce);
$data .= pack("v", $ixals);
$data .= pack("v", $itab);
$data .= pack("C", $cchCustMenu);
$data .= pack("C", $cchDescription);
$data .= pack("C", $cchHelptopic);
$data .= pack("C", $cchStatustext);
$data .= pack("C", $rgch);
$data .= pack("C", $unknown03);
$data .= pack("v", $unknown04);
$data .= pack("v", $unknown05);
$data .= pack("v", $unknown06);
$data .= pack("v", $unknown07);
$data .= pack("v", $unknown08);
$data .= pack("v", $index);
$data .= pack("v", $index);
$data .= pack("v", $rowmin);
$data .= pack("v", $rowmax);
$data .= pack("C", $colmin);
$data .= pack("C", $colmax);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeNumFormat (   $format,
  $ifmt 
)
private

Writes Excel FORMAT record for non "built-in" numerical formats.

Parameters
string$formatCustom format string
integer$ifmtFormat index code

Definition at line 982 of file Workbook.php.

Referenced by _writeAllNumFormats().

{
$record = 0x041E; // Record identifier
if ($this->_BIFF_version == 0x0600) {
$numberFormatString = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($format);
$length = 2 + strlen($numberFormatString); // Number of bytes to follow
} elseif ($this->_BIFF_version == 0x0500) {
$length = 3 + strlen($format); // Number of bytes to follow
}
$header = pack("vv", $record, $length);
if ($this->_BIFF_version == 0x0600) {
$data = pack("v", $ifmt) . $numberFormatString;
$this->_append($header . $data);
} elseif ($this->_BIFF_version == 0x0500) {
$cch = strlen($format); // Length of format string
$data = pack("vC", $ifmt, $cch);
$this->_append($header . $data . $format);
}
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writePalette ( )
private

Stores the PALETTE biff record.

Definition at line 1252 of file Workbook.php.

Referenced by writeWorkbook().

{
$aref = $this->_palette;
$record = 0x0092; // Record identifier
$length = 2 + 4 * count($aref); // Number of bytes to follow
$ccv = count($aref); // Number of RGB values to follow
$data = ''; // The RGB data
// Pack the RGB data
foreach ($aref as $color) {
foreach ($color as $byte) {
$data .= pack("C",$byte);
}
}
$header = pack("vvv", $record, $length, $ccv);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeRecalcId ( )
private

Write the RECALCID record.

Returns
string

Definition at line 1236 of file Workbook.php.

Referenced by writeWorkbook().

{
$record = 0x01C1; // Record identifier
$length = 8; // Number of bytes to follow
$header = pack('vv', $record, $length);
// by inspection of real Excel files, MS Office Excel 2007 writes this
$data = pack('VV', 0x000001C1, 0x00001E667);
return $this->writeData($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeSharedStringsTable ( )
private

Handling of the SST continue blocks is complicated by the need to include an additional continuation byte depending on whether the string is split between blocks or whether it starts at the beginning of the block.

(There are also additional complications that will arise later when/if Rich Strings are supported).

The Excel documentation says that the SST record should be followed by an EXTSST record. The EXTSST record is a hash table that is used to optimise access to SST. However, despite the documentation it doesn't seem to be required so we will ignore it.

Returns
string Binary data

Definition at line 1286 of file Workbook.php.

Referenced by writeWorkbook().

{
// maximum size of record data (excluding record header)
$continue_limit = 8224;
// initialize array of record data blocks
$recordDatas = array();
// start SST record data block with total number of strings, total number of unique strings
$recordData = pack("VV", $this->_str_total, $this->_str_unique);
// loop through all (unique) strings in shared strings table
foreach (array_keys($this->_str_table) as $string) {
// here $string is a BIFF8 encoded string
// length = character count
$headerinfo = unpack("vlength/Cencoding", $string);
// currently, this is always 1 = uncompressed
$encoding = $headerinfo["encoding"];
// initialize finished writing current $string
$finished = false;
while ($finished === false) {
// normally, there will be only one cycle, but if string cannot immediately be written as is
// there will be need for more than one cylcle, if string longer than one record data block, there
// may be need for even more cycles
if (strlen($recordData) + strlen($string) < $continue_limit) {
// then we can write the string (or remainder of string) without any problems
$recordData .= $string;
// we are finished writing this string
$finished = true;
} else if (strlen($recordData) + strlen($string) == $continue_limit) {
// then we can also write the string (or remainder of string)
$recordData .= $string;
// but we close the record data block, and initialize a new one
$recordDatas[] = $recordData;
$recordData = '';
// we are finished writing this string
$finished = true;
} else {
// special treatment writing the string (or remainder of the string)
// If the string is very long it may need to be written in more than one CONTINUE record.
// check how many bytes more there is room for in the current record
$space_remaining = $continue_limit - strlen($recordData);
// minimum space needed
// uncompressed: 2 byte string length length field + 1 byte option flags + 2 byte character
// compressed: 2 byte string length length field + 1 byte option flags + 1 byte character
$min_space_needed = ($encoding == 1) ? 5 : 4;
// We have two cases
// 1. space remaining is less than minimum space needed
// here we must waste the space remaining and move to next record data block
// 2. space remaining is greater than or equal to minimum space needed
// here we write as much as we can in the current block, then move to next record data block
// 1. space remaining is less than minimum space needed
if ($space_remaining < $min_space_needed) {
// we close the block, store the block data
$recordDatas[] = $recordData;
// and start new record data block where we start writing the string
$recordData = '';
// 2. space remaining is greater than or equal to minimum space needed
} else {
// initialize effective remaining space, for Unicode strings this may need to be reduced by 1, see below
$effective_space_remaining = $space_remaining;
// for uncompressed strings, sometimes effective space remaining is reduced by 1
if ( $encoding == 1 && (strlen($string) - $space_remaining) % 2 == 1 ) {
--$effective_space_remaining;
}
// one block fininshed, store the block data
$recordData .= substr($string, 0, $effective_space_remaining);
$string = substr($string, $effective_space_remaining); // for next cycle in while loop
$recordDatas[] = $recordData;
// start new record data block with the repeated option flags
$recordData = pack('C', $encoding);
}
}
}
}
// Store the last record data block unless it is empty
// if there was no need for any continue records, this will be the for SST record data block itself
if (strlen($recordData) > 0) {
$recordDatas[] = $recordData;
}
// combine into one chunk with all the blocks SST, CONTINUE,...
$chunk = '';
foreach ($recordDatas as $i => $recordData) {
// first block should have the SST record header, remaing should have CONTINUE header
$record = ($i == 0) ? 0x00FC : 0x003C;
$header = pack("vv", $record, strlen($recordData));
$data = $header . $recordData;
$chunk .= $this->writeData($data);
}
return $chunk;
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeStyle ( )
private

Write Excel BIFF STYLE records.

Definition at line 961 of file Workbook.php.

Referenced by _writeAllStyles().

{
$record = 0x0293; // Record identifier
$length = 0x0004; // Bytes to follow
$ixfe = 0x8000; // Index to cell style XF
$BuiltIn = 0x00; // Built-in style
$iLevel = 0xff; // Outline style level
$header = pack("vv", $record, $length);
$data = pack("vCC", $ixfe, $BuiltIn, $iLevel);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeSupbookInternal ( )
private

Write Internal SUPBOOK record.

Definition at line 928 of file Workbook.php.

Referenced by writeWorkbook().

{
$record = 0x01AE; // Record identifier
$length = 0x0004; // Bytes to follow
$header = pack("vv", $record, $length);
$data = pack("vv", $this->_phpExcel->getSheetCount(), 0x0401);
return $this->writeData($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::_writeWindow1 ( )
private

Write Excel BIFF WINDOW1 record.

Definition at line 858 of file Workbook.php.

Referenced by writeWorkbook().

{
$record = 0x003D; // Record identifier
$length = 0x0012; // Number of bytes to follow
$xWn = 0x0000; // Horizontal position of window
$yWn = 0x0000; // Vertical position of window
$dxWn = 0x25BC; // Width of window
$dyWn = 0x1572; // Height of window
$grbit = 0x0038; // Option flags
// not supported by PHPExcel, so there is only one selected sheet, the active
$ctabsel = 1; // Number of workbook tabs selected
$wTabRatio = 0x0258; // Tab to scrollbar ratio
// not supported by PHPExcel, set to 0
$itabFirst = 0; // 1st displayed worksheet
$itabCur = $this->_phpExcel->getActiveSheetIndex(); // Active worksheet
$header = pack("vv", $record, $length);
$data = pack("vvvvvvvvv", $xWn, $yWn, $dxWn, $dyWn,
$grbit,
$itabCur, $itabFirst,
$ctabsel, $wTabRatio);
$this->_append($header . $data);
}

+ Here is the caller graph for this function:

PHPExcel_Writer_Excel5_Workbook::addXfWriter (   $style,
  $isStyleXf = false 
)

Add a new XF writer.

Parameters
PHPExcel_Style
booleanIs it a style XF?
Returns
int Index to XF record

Definition at line 260 of file Workbook.php.

References _addColor(), and PHPExcel_Writer_Excel5_Font\setBIFFVersion().

{
$xfWriter = new PHPExcel_Writer_Excel5_Xf($style);
$xfWriter->setBIFFVersion($this->_BIFF_version);
$xfWriter->setIsStyleXf($isStyleXf);
// Add the font if not already added
$fontHashCode = $style->getFont()->getHashCode();
if (isset($this->_addedFonts[$fontHashCode])) {
$fontIndex = $this->_addedFonts[$fontHashCode];
} else {
$countFonts = count($this->_fontWriters);
$fontIndex = ($countFonts < 4) ? $countFonts : $countFonts + 1;
$fontWriter = new PHPExcel_Writer_Excel5_Font($style->getFont());
$fontWriter->setBIFFVersion($this->_BIFF_version);
$fontWriter->setColorIndex($this->_addColor($style->getFont()->getColor()->getRGB()));
$this->_fontWriters[] = $fontWriter;
$this->_addedFonts[$fontHashCode] = $fontIndex;
}
// Assign the font index to the xf record
$xfWriter->setFontIndex($fontIndex);
// Background colors, best to treat these after the font so black will come after white in custom palette
$xfWriter->setFgColor($this->_addColor($style->getFill()->getStartColor()->getRGB()));
$xfWriter->setBgColor($this->_addColor($style->getFill()->getEndColor()->getRGB()));
$xfWriter->setBottomColor($this->_addColor($style->getBorders()->getBottom()->getColor()->getRGB()));
$xfWriter->setTopColor($this->_addColor($style->getBorders()->getTop()->getColor()->getRGB()));
$xfWriter->setRightColor($this->_addColor($style->getBorders()->getRight()->getColor()->getRGB()));
$xfWriter->setLeftColor($this->_addColor($style->getBorders()->getLeft()->getColor()->getRGB()));
$xfWriter->setDiagColor($this->_addColor($style->getBorders()->getDiagonal()->getColor()->getRGB()));
// Add the number format if it is not a built-in one and not already added
if ($style->getNumberFormat()->getBuiltInFormatCode() === false) {
$numberFormatHashCode = $style->getNumberFormat()->getHashCode();
if (isset($this->_addedNumberFormats[$numberFormatHashCode])) {
$numberFormatIndex = $this->_addedNumberFormats[$numberFormatHashCode];
} else {
$numberFormatIndex = 164 + count($this->_numberFormats);
$this->_numberFormats[$numberFormatIndex] = $style->getNumberFormat();
$this->_addedNumberFormats[$numberFormatHashCode] = $numberFormatIndex;
}
}
else {
$numberFormatIndex = (int) $style->getNumberFormat()->getBuiltInFormatCode();
}
// Assign the number format index to xf record
$xfWriter->setNumberFormatIndex($numberFormatIndex);
$this->_xfWriters[] = $xfWriter;
$xfIndex = count($this->_xfWriters) - 1;
return $xfIndex;
}

+ Here is the call graph for this function:

PHPExcel_Writer_Excel5_Workbook::getEscher ( )

Get Escher object.

Returns
PHPExcel_Shared_Escher

Definition at line 1431 of file Workbook.php.

{
}
PHPExcel_Writer_Excel5_Workbook::setEscher ( PHPExcel_Shared_Escher  $pValue = null)

Set Escher object.

Parameters
PHPExcel_Shared_Escher$pValue

Definition at line 1441 of file Workbook.php.

{
$this->_escher = $pValue;
}
PHPExcel_Writer_Excel5_Workbook::writeWorkbook (   $pWorksheetSizes = null)

Assemble worksheets into a workbook and send the BIFF data to an OLE storage.

Parameters
array$worksheetSizesThe sizes in bytes of the binary worksheet streams
Returns
string Binary data for workbook stream

Definition at line 425 of file Workbook.php.

References PHPExcel_Writer_Excel5_BIFFwriter\$_data, _calcSheetOffsets(), PHPExcel_Writer_Excel5_BIFFwriter\_storeBof(), _writeAllDefinedNamesBiff8(), _writeAllFonts(), _writeAllNumFormats(), _writeAllStyles(), _writeAllXfs(), _writeBoundsheet(), _writeCodepage(), _writeCountry(), _writeDatemode(), _writeExterns(), _writeExternsheetBiff8(), _writeMsoDrawingGroup(), _writeNames(), _writePalette(), _writeRecalcId(), _writeSharedStringsTable(), _writeSupbookInternal(), _writeWindow1(), and PHPExcel_Writer_Excel5_BIFFwriter\writeEof().

{
$this->_worksheetSizes = $pWorksheetSizes;
// Calculate the number of selected worksheet tabs and call the finalization
// methods for each worksheet
$total_worksheets = $this->_phpExcel->getSheetCount();
// Add part 1 of the Workbook globals, what goes before the SHEET records
$this->_storeBof(0x0005);
$this->_writeCodepage();
if ($this->_BIFF_version == 0x0600) {
$this->_writeWindow1();
}
if ($this->_BIFF_version == 0x0500) {
$this->_writeExterns(); // For print area and repeat rows
$this->_writeNames(); // For print area and repeat rows
}
if ($this->_BIFF_version == 0x0500) {
$this->_writeWindow1();
}
$this->_writeDatemode();
$this->_writeAllFonts();
$this->_writeAllXfs();
$this->_writeAllStyles();
$this->_writePalette();
// Prepare part 3 of the workbook global stream, what goes after the SHEET records
$part3 = '';
if ($this->_country_code != -1) {
$part3 .= $this->_writeCountry();
}
$part3 .= $this->_writeRecalcId();
if ($this->_BIFF_version == 0x0600) {
$part3 .= $this->_writeSupbookInternal();
/* TODO: store external SUPBOOK records and XCT and CRN records
in case of external references for BIFF8 */
$part3 .= $this->_writeExternsheetBiff8();
$part3 .= $this->_writeAllDefinedNamesBiff8();
$part3 .= $this->_writeMsoDrawingGroup();
$part3 .= $this->_writeSharedStringsTable();
}
$part3 .= $this->writeEof();
// Add part 2 of the Workbook globals, the SHEET records
for ($i = 0; $i < $total_worksheets; ++$i) {
$this->_writeBoundsheet($this->_phpExcel->getSheet($i), $this->_worksheetOffsets[$i]);
}
// Add part 3 of the Workbook globals
$this->_data .= $part3;
return $this->_data;
}

+ Here is the call graph for this function:

Field Documentation

PHPExcel_Writer_Excel5_Workbook::$_addedFonts = array()
private

Definition at line 129 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_addedNumberFormats = array()
private

Definition at line 143 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_biffsize

Definition at line 85 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_codepage

Definition at line 103 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_colors
private

Color cache.

Definition at line 183 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_country_code

Definition at line 109 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_escher
private

Definition at line 190 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_fontWriters = array()
private

Definition at line 122 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_numberFormats = array()
private

Definition at line 136 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_palette

Definition at line 97 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_parser
private

Definition at line 78 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_phpExcel
private

Definition at line 115 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_str_table
private

Definition at line 178 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_str_total
private

Definition at line 164 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_str_unique
private

Definition at line 171 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_worksheetOffsets = array()
private

Definition at line 157 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_worksheetSizes = array()
private

Definition at line 150 of file Workbook.php.

PHPExcel_Writer_Excel5_Workbook::$_xfWriters = array()
private

Definition at line 91 of file Workbook.php.


The documentation for this class was generated from the following file: