ILIAS  Release_3_10_x_branch Revision 61812
 All Data Structures Namespaces Files Functions Variables Groups Pages
Spreadsheet_Excel_Writer_BIFFwriter Class Reference
+ Inheritance diagram for Spreadsheet_Excel_Writer_BIFFwriter:
+ Collaboration diagram for Spreadsheet_Excel_Writer_BIFFwriter:

Public Member Functions

 Spreadsheet_Excel_Writer_BIFFwriter ()
 Constructor.
 _setByteOrder ()
 Determine the byte order and store it as class data to avoid recalculating it for each call to new().
 _prepend ($data)
 General storage function.
 _append ($data)
 General storage function.
 _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.
 _addContinue ($data)
 Excel limits the size of BIFF records.

Data Fields

 $_BIFF_version = 0x0500
 $_byte_order
 $_data
 $_datasize
 $_limit

Detailed Description

Definition at line 54 of file BIFFwriter.php.

Member Function Documentation

Spreadsheet_Excel_Writer_BIFFwriter::_addContinue (   $data)

Excel limits the size of BIFF records.

In Excel 5 the limit is 2084 bytes. In Excel 97 the limit is 8228 bytes. Records that are longer than these limits must be split up into CONTINUE blocks.

This function takes a long BIFF record and inserts CONTINUE records as necessary.

Parameters
string$dataThe original binary data to be written
Returns
string A very convenient string of continue blocks private

Definition at line 215 of file BIFFwriter.php.

References $_limit, and $data.

Referenced by _append(), Spreadsheet_Excel_Writer_Worksheet\_append(), and _prepend().

{
$limit = $this->_limit;
$record = 0x003C; // Record identifier
// The first 2080/8224 bytes remain intact. However, we have to change
// the length field of the record.
$tmp = substr($data, 0, 2).pack("v", $limit-4).substr($data, 4, $limit - 4);
$header = pack("vv", $record, $limit); // Headers for continue records
// Retrieve chunks of 2080/8224 bytes +4 for the header.
for($i = $limit; $i < strlen($data) - $limit; $i += $limit)
{
$tmp .= $header;
$tmp .= substr($data, $i, $limit);
}
// Retrieve the last chunk of data
$header = pack("vv", $record, strlen($data) - $i);
$tmp .= $header;
$tmp .= substr($data,$i,strlen($data) - $i);
return $tmp;
}

+ Here is the caller graph for this function:

Spreadsheet_Excel_Writer_BIFFwriter::_prepend (   $data)

General storage function.

Parameters
string$databinary data to prepend private

Definition at line 133 of file BIFFwriter.php.

References $data, and _addContinue().

Referenced by _storeBof().

{
if (strlen($data) > $this->_limit) {
}
$this->_data = $data.$this->_data;
$this->_datasize += strlen($data);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Spreadsheet_Excel_Writer_BIFFwriter::_setByteOrder ( )

Determine the byte order and store it as class data to avoid recalculating it for each call to new().

private

Definition at line 108 of file BIFFwriter.php.

Referenced by Spreadsheet_Excel_Writer_BIFFwriter().

{
// 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.
return $this->raiseError("Required floating point format ".
"not supported on this platform.");
}
$this->_byte_order = $byte_order;
}

+ Here is the caller graph for this function:

Spreadsheet_Excel_Writer_BIFFwriter::_storeBof (   $type)

Writes Excel BOF record to indicate the beginning of a stream or sub-stream in the BIFF file.

Parameters
integer$typeType of BIFF file to write: 0x0005 Workbook, 0x0010 Worksheet. private

Definition at line 165 of file BIFFwriter.php.

References $_BIFF_version, $data, and _prepend().

Referenced by Spreadsheet_Excel_Writer_Workbook\_storeWorkbook(), and Spreadsheet_Excel_Writer_Worksheet\close().

{
$record = 0x0809; // Record identifier
// According to the SDK $build and $year should be set to zero.
// However, this throws a warning in Excel 5. So, use magic numbers.
if ($this->_BIFF_version == 0x0500) {
$length = 0x0008;
$unknown = '';
$build = 0x096C;
$year = 0x07C9;
}
elseif ($this->_BIFF_version == 0x0600) {
$length = 0x0010;
$unknown = pack("VV", 0x00000041, 0x00000006); //unknown last 8 bytes for BIFF8
$build = 0x0DBB;
$year = 0x07CC;
}
$header = pack("vv", $record, $length);
$data = pack("vvvv", $version, $type, $build, $year);
$this->_prepend($header.$data.$unknown);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Spreadsheet_Excel_Writer_BIFFwriter::_storeEof ( )

Writes Excel EOF record to indicate the end of a BIFF stream.

private

Definition at line 195 of file BIFFwriter.php.

References _append().

Referenced by Spreadsheet_Excel_Writer_Workbook\_storeWorkbook(), and Spreadsheet_Excel_Writer_Worksheet\close().

{
$record = 0x000A; // Record identifier
$length = 0x0000; // Number of bytes to follow
$header = pack("vv", $record, $length);
$this->_append($header);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Spreadsheet_Excel_Writer_BIFFwriter::Spreadsheet_Excel_Writer_BIFFwriter ( )

Constructor.

public

Definition at line 92 of file BIFFwriter.php.

References _setByteOrder().

Referenced by Spreadsheet_Excel_Writer_Workbook\Spreadsheet_Excel_Writer_Workbook(), and Spreadsheet_Excel_Writer_Worksheet\Spreadsheet_Excel_Writer_Worksheet().

{
$this->_byte_order = '';
$this->_data = '';
$this->_datasize = 0;
$this->_limit = 2080;
// Set the byte order
$this->_setByteOrder();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Field Documentation

Spreadsheet_Excel_Writer_BIFFwriter::$_BIFF_version = 0x0500

Definition at line 60 of file BIFFwriter.php.

Referenced by _storeBof().

Spreadsheet_Excel_Writer_BIFFwriter::$_byte_order

Definition at line 66 of file BIFFwriter.php.

Spreadsheet_Excel_Writer_BIFFwriter::$_data

Definition at line 72 of file BIFFwriter.php.

Referenced by Spreadsheet_Excel_Writer_Worksheet\getData().

Spreadsheet_Excel_Writer_BIFFwriter::$_datasize

Definition at line 78 of file BIFFwriter.php.

Referenced by Spreadsheet_Excel_Writer_Workbook\_calcSheetOffsets().

Spreadsheet_Excel_Writer_BIFFwriter::$_limit

Definition at line 85 of file BIFFwriter.php.

Referenced by _addContinue().


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