Cosmetics and small speed up changes.
git-svn-id: https://svn.php.net/repository/pear/packages/Spreadsheet_Excel_Writer/trunk@197043 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
parent
593af9f3bb
commit
af802845ac
|
|
@ -98,7 +98,7 @@ class Spreadsheet_Excel_Writer extends Spreadsheet_Excel_Writer_Workbook
|
||||||
$chr2 = chr(ord('A') + $frac);
|
$chr2 = chr(ord('A') + $frac);
|
||||||
$row++;
|
$row++;
|
||||||
|
|
||||||
return $chr1.$chr2.$row;
|
return $chr1 . $chr2 . $row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,7 @@ class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vvvv", $version, $type, $build, $year);
|
$data = pack("vvvv", $version, $type, $build, $year);
|
||||||
$this->_prepend($header.$data.$unknown);
|
$this->_prepend($header . $data . $unknown);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -221,7 +221,8 @@ class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR
|
||||||
$header = pack("vv", $record, $limit); // Headers for continue records
|
$header = pack("vv", $record, $limit); // Headers for continue records
|
||||||
|
|
||||||
// Retrieve chunks of 2080/8224 bytes +4 for the header.
|
// Retrieve chunks of 2080/8224 bytes +4 for the header.
|
||||||
for ($i = $limit; $i < strlen($data) - $limit; $i += $limit) {
|
$data_length = strlen($data);
|
||||||
|
for ($i = $limit; $i < ($data_length - $limit); $i += $limit) {
|
||||||
$tmp .= $header;
|
$tmp .= $header;
|
||||||
$tmp .= substr($data, $i, $limit);
|
$tmp .= substr($data, $i, $limit);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -315,7 +315,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
function getXf($style)
|
function getXf($style)
|
||||||
{
|
{
|
||||||
// Set the type of the XF record and some of the attributes.
|
// Set the type of the XF record and some of the attributes.
|
||||||
if ($style == "style") {
|
if ($style == 'style') {
|
||||||
$style = 0xFFF5;
|
$style = 0xFFF5;
|
||||||
} else {
|
} else {
|
||||||
$style = $this->_locked;
|
$style = $this->_locked;
|
||||||
|
|
@ -436,7 +436,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
$data .= pack("VVv", $border1, $border2, $icv);
|
$data .= pack("VVv", $border1, $border2, $icv);
|
||||||
}
|
}
|
||||||
|
|
||||||
return($header.$data);
|
return($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -487,7 +487,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
$sss, $uls, $bFamily,
|
$sss, $uls, $bFamily,
|
||||||
$bCharSet, $reserved, $cch, $encoding);
|
$bCharSet, $reserved, $cch, $encoding);
|
||||||
}
|
}
|
||||||
return($header . $data. $this->_font_name);
|
return($header . $data . $this->_font_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -507,7 +507,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
$key .= "$this->_font_strikeout$this->_bold$this->_font_outline";
|
$key .= "$this->_font_strikeout$this->_bold$this->_font_outline";
|
||||||
$key .= "$this->_font_family$this->_font_charset";
|
$key .= "$this->_font_family$this->_font_charset";
|
||||||
$key .= "$this->_font_shadow$this->_color$this->_italic";
|
$key .= "$this->_font_shadow$this->_color$this->_italic";
|
||||||
$key = str_replace(" ","_",$key);
|
$key = str_replace(' ', '_', $key);
|
||||||
return ($key);
|
return ($key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,8 +107,8 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
function Spreadsheet_Excel_Writer_OLEwriter($OLEfilename)
|
function Spreadsheet_Excel_Writer_OLEwriter($OLEfilename)
|
||||||
{
|
{
|
||||||
$this->_OLEfilename = $OLEfilename;
|
$this->_OLEfilename = $OLEfilename;
|
||||||
$this->_filehandle = "";
|
$this->_filehandle = '';
|
||||||
$this->_tmp_filename = "";
|
$this->_tmp_filename = '';
|
||||||
$this->_fileclosed = 0;
|
$this->_fileclosed = 0;
|
||||||
$this->_biff_only = 0;
|
$this->_biff_only = 0;
|
||||||
//$this->_size_allowed = 0;
|
//$this->_size_allowed = 0;
|
||||||
|
|
@ -299,15 +299,17 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
$end_of_chain = pack("V", -2);
|
$end_of_chain = pack("V", -2);
|
||||||
$unused = pack("V", -1);
|
$unused = pack("V", -1);
|
||||||
|
|
||||||
for ($i=1; $i < $num_blocks; $i++) {
|
for ($i = 1; $i < $num_blocks; $i++) {
|
||||||
fwrite($this->_filehandle, pack("V",$i));
|
fwrite($this->_filehandle, pack("V",$i));
|
||||||
}
|
}
|
||||||
|
|
||||||
fwrite($this->_filehandle, $end_of_chain);
|
fwrite($this->_filehandle, $end_of_chain);
|
||||||
fwrite($this->_filehandle, $end_of_chain);
|
fwrite($this->_filehandle, $end_of_chain);
|
||||||
for ($i=0; $i < $num_lists; $i++) {
|
for ($i = 0; $i < $num_lists; $i++) {
|
||||||
fwrite($this->_filehandle, $marker);
|
fwrite($this->_filehandle, $marker);
|
||||||
}
|
}
|
||||||
for ($i=$used_blocks; $i <= $total_blocks; $i++) {
|
|
||||||
|
for ($i = $used_blocks; $i <= $total_blocks; $i++) {
|
||||||
fwrite($this->_filehandle, $unused);
|
fwrite($this->_filehandle, $unused);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -344,7 +346,8 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
|
|
||||||
if ($name != '') {
|
if ($name != '') {
|
||||||
$name = $name . "\0";
|
$name = $name . "\0";
|
||||||
for ($i = 0; $i < strlen($name); $i++) {
|
$name_length = strlen($name);
|
||||||
|
for ($i = 0; $i < $name_length; $i++) {
|
||||||
// Simulate a Unicode string
|
// Simulate a Unicode string
|
||||||
$rawname .= pack("H*",dechex(ord($name{$i}))).pack("C",0);
|
$rawname .= pack("H*",dechex(ord($name{$i}))).pack("C",0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$this->_current_char = 0;
|
$this->_current_char = 0;
|
||||||
$this->_BIFF_version = $biff_version;
|
$this->_BIFF_version = $biff_version;
|
||||||
$this->_current_token = ''; // The token we are working on.
|
$this->_current_token = ''; // The token we are working on.
|
||||||
$this->_formula = ""; // The formula to parse.
|
$this->_formula = ''; // The formula to parse.
|
||||||
$this->_lookahead = ''; // The character ahead of the current char.
|
$this->_lookahead = ''; // The character ahead of the current char.
|
||||||
$this->_parse_tree = ''; // The parse tree to be generated.
|
$this->_parse_tree = ''; // The parse tree to be generated.
|
||||||
$this->_initializeHashes(); // Initialize the hashes: ptg's and function's ptg's
|
$this->_initializeHashes(); // Initialize the hashes: ptg's and function's ptg's
|
||||||
|
|
@ -542,25 +542,25 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
return $this->_convertString($token);
|
return $this->_convertString($token);
|
||||||
} elseif (is_numeric($token)) {
|
} elseif (is_numeric($token)) {
|
||||||
return $this->_convertNumber($token);
|
return $this->_convertNumber($token);
|
||||||
} elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/',$token)) {
|
} elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/', $token)) {
|
||||||
// match references like A1 or $A$1
|
// match references like A1 or $A$1
|
||||||
return $this->_convertRef2d($token);
|
return $this->_convertRef2d($token);
|
||||||
} elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z](\d+)$/",$token)) {
|
} elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z](\d+)$/", $token)) {
|
||||||
// match external references like Sheet1!A1 or Sheet1:Sheet2!A1
|
// match external references like Sheet1!A1 or Sheet1:Sheet2!A1
|
||||||
return $this->_convertRef3d($token);
|
return $this->_convertRef3d($token);
|
||||||
} elseif (preg_match("/^'\w+(\:\w+)?'\![A-Ia-i]?[A-Za-z](\d+)$/",$token)) {
|
} elseif (preg_match("/^'\w+(\:\w+)?'\![A-Ia-i]?[A-Za-z](\d+)$/", $token)) {
|
||||||
// match external references like Sheet1!A1 or Sheet1:Sheet2!A1
|
// match external references like Sheet1!A1 or Sheet1:Sheet2!A1
|
||||||
return $this->_convertRef3d($token);
|
return $this->_convertRef3d($token);
|
||||||
} elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) {
|
} elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/", $token)) {
|
||||||
// match ranges like A1:B2
|
// match ranges like A1:B2
|
||||||
return $this->_convertRange2d($token);
|
return $this->_convertRange2d($token);
|
||||||
} elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) {
|
} elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/", $token)) {
|
||||||
// match ranges like A1..B2
|
// match ranges like A1..B2
|
||||||
return $this->_convertRange2d($token);
|
return $this->_convertRange2d($token);
|
||||||
} elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/",$token)) {
|
} elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/", $token)) {
|
||||||
// match external ranges like Sheet1!A1 or Sheet1:Sheet2!A1:B2
|
// match external ranges like Sheet1!A1 or Sheet1:Sheet2!A1:B2
|
||||||
return $this->_convertRange3d($token);
|
return $this->_convertRange3d($token);
|
||||||
} elseif (preg_match("/^'\w+(\:\w+)?'\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/",$token)) {
|
} elseif (preg_match("/^'\w+(\:\w+)?'\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/", $token)) {
|
||||||
// match external ranges like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2
|
// match external ranges like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2
|
||||||
return $this->_convertRange3d($token);
|
return $this->_convertRange3d($token);
|
||||||
} elseif (isset($this->ptg[$token])) {
|
} elseif (isset($this->ptg[$token])) {
|
||||||
|
|
@ -586,7 +586,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
function _convertNumber($num)
|
function _convertNumber($num)
|
||||||
{
|
{
|
||||||
// Integer in the range 0..2**16-1
|
// Integer in the range 0..2**16-1
|
||||||
if ((preg_match("/^\d+$/",$num)) and ($num <= 65535)) {
|
if ((preg_match("/^\d+$/", $num)) and ($num <= 65535)) {
|
||||||
return pack("Cv", $this->ptg['ptgInt'], $num);
|
return pack("Cv", $this->ptg['ptgInt'], $num);
|
||||||
} else { // A float
|
} else { // A float
|
||||||
if ($this->_byte_order) { // if it's Big Endian
|
if ($this->_byte_order) { // if it's Big Endian
|
||||||
|
|
@ -611,6 +611,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
if (strlen($string) > 255) {
|
if (strlen($string) > 255) {
|
||||||
return $this->raiseError("String is too long");
|
return $this->raiseError("String is too long");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->_BIFF_version == 0x0500) {
|
if ($this->_BIFF_version == 0x0500) {
|
||||||
return pack("CC", $this->ptg['ptgStr'], strlen($string)).$string;
|
return pack("CC", $this->ptg['ptgStr'], strlen($string)).$string;
|
||||||
} elseif ($this->_BIFF_version == 0x0600) {
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
|
|
@ -654,9 +655,9 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$class = 2; // as far as I know, this is magick.
|
$class = 2; // as far as I know, this is magick.
|
||||||
|
|
||||||
// Split the range into 2 cell refs
|
// Split the range into 2 cell refs
|
||||||
if (preg_match("/^([A-Ia-i]?[A-Za-z])(\d+)\:([A-Ia-i]?[A-Za-z])(\d+)$/",$range)) {
|
if (preg_match("/^([A-Ia-i]?[A-Za-z])(\d+)\:([A-Ia-i]?[A-Za-z])(\d+)$/", $range)) {
|
||||||
list($cell1, $cell2) = split(':', $range);
|
list($cell1, $cell2) = split(':', $range);
|
||||||
} elseif (preg_match("/^([A-Ia-i]?[A-Za-z])(\d+)\.\.([A-Ia-i]?[A-Za-z])(\d+)$/",$range)) {
|
} elseif (preg_match("/^([A-Ia-i]?[A-Za-z])(\d+)\.\.([A-Ia-i]?[A-Za-z])(\d+)$/", $range)) {
|
||||||
list($cell1, $cell2) = split('\.\.', $range);
|
list($cell1, $cell2) = split('\.\.', $range);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1069,7 +1070,8 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
// Convert base26 column string to a number.
|
// Convert base26 column string to a number.
|
||||||
$expn = strlen($col_ref) - 1;
|
$expn = strlen($col_ref) - 1;
|
||||||
$col = 0;
|
$col = 0;
|
||||||
for ($i = 0; $i < strlen($col_ref); $i++) {
|
$col_ref_length = strlen($col_ref);
|
||||||
|
for ($i = 0; $i < $col_ref_length; $i++) {
|
||||||
$col += (ord($col_ref{$i}) - ord('A') + 1) * pow(26, $expn);
|
$col += (ord($col_ref{$i}) - ord('A') + 1) * pow(26, $expn);
|
||||||
$expn--;
|
$expn--;
|
||||||
}
|
}
|
||||||
|
|
@ -1089,23 +1091,27 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
function _advance()
|
function _advance()
|
||||||
{
|
{
|
||||||
$i = $this->_current_char;
|
$i = $this->_current_char;
|
||||||
|
$formula_length = strlen($this->_formula);
|
||||||
// eat up white spaces
|
// eat up white spaces
|
||||||
if ($i < strlen($this->_formula)) {
|
if ($i < $formula_length) {
|
||||||
while ($this->_formula{$i} == " ") {
|
while ($this->_formula{$i} == " ") {
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
if ($i < strlen($this->_formula) - 1) {
|
|
||||||
|
if ($i < ($formula_length - 1)) {
|
||||||
$this->_lookahead = $this->_formula{$i+1};
|
$this->_lookahead = $this->_formula{$i+1};
|
||||||
}
|
}
|
||||||
$token = "";
|
$token = '';
|
||||||
}
|
}
|
||||||
while ($i < strlen($this->_formula)) {
|
|
||||||
|
while ($i < $formula_length) {
|
||||||
$token .= $this->_formula{$i};
|
$token .= $this->_formula{$i};
|
||||||
if ($i < strlen($this->_formula) - 1) {
|
if ($i < ($formula_length - 1)) {
|
||||||
$this->_lookahead = $this->_formula{$i+1};
|
$this->_lookahead = $this->_formula{$i+1};
|
||||||
} else {
|
} else {
|
||||||
$this->_lookahead = '';
|
$this->_lookahead = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->_match($token) != '') {
|
if ($this->_match($token) != '') {
|
||||||
//if ($i < strlen($this->_formula) - 1) {
|
//if ($i < strlen($this->_formula) - 1) {
|
||||||
// $this->_lookahead = $this->_formula{$i+1};
|
// $this->_lookahead = $this->_formula{$i+1};
|
||||||
|
|
@ -1114,7 +1120,8 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$this->_current_token = $token;
|
$this->_current_token = $token;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ($i < strlen($this->_formula) - 2) {
|
|
||||||
|
if ($i < ($formula_length - 2)) {
|
||||||
$this->_lookahead = $this->_formula{$i+2};
|
$this->_lookahead = $this->_formula{$i+2};
|
||||||
} else { // if we run out of characters _lookahead becomes empty
|
} else { // if we run out of characters _lookahead becomes empty
|
||||||
$this->_lookahead = '';
|
$this->_lookahead = '';
|
||||||
|
|
|
||||||
|
|
@ -82,8 +82,8 @@ class Spreadsheet_Excel_Writer_Validator
|
||||||
$this->_title_error = "\x00";
|
$this->_title_error = "\x00";
|
||||||
$this->_descr_error = "\x00";
|
$this->_descr_error = "\x00";
|
||||||
$this->_operator = 0x00; // default is equal
|
$this->_operator = 0x00; // default is equal
|
||||||
$this->_formula1 = "";
|
$this->_formula1 = '';
|
||||||
$this->_formula2 = "";
|
$this->_formula2 = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPrompt($promptTitle = "\x00", $promptDescription = "\x00", $showPrompt = true)
|
function setPrompt($promptTitle = "\x00", $promptDescription = "\x00", $showPrompt = true)
|
||||||
|
|
|
||||||
|
|
@ -191,7 +191,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$this->_xf_index = 16; // 15 style XF's and 1 cell XF.
|
$this->_xf_index = 16; // 15 style XF's and 1 cell XF.
|
||||||
$this->_fileclosed = 0;
|
$this->_fileclosed = 0;
|
||||||
$this->_biffsize = 0;
|
$this->_biffsize = 0;
|
||||||
$this->_sheetname = "Sheet";
|
$this->_sheetname = 'Sheet';
|
||||||
$this->_tmp_format =& new Spreadsheet_Excel_Writer_Format($this->_BIFF_version);
|
$this->_tmp_format =& new Spreadsheet_Excel_Writer_Format($this->_BIFF_version);
|
||||||
$this->_worksheets = array();
|
$this->_worksheets = array();
|
||||||
$this->_sheetnames = array();
|
$this->_sheetnames = array();
|
||||||
|
|
@ -276,11 +276,13 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$this->_tmp_format->_BIFF_version = $version;
|
$this->_tmp_format->_BIFF_version = $version;
|
||||||
$this->_url_format->_BIFF_version = $version;
|
$this->_url_format->_BIFF_version = $version;
|
||||||
$this->_parser->_BIFF_version = $version;
|
$this->_parser->_BIFF_version = $version;
|
||||||
|
|
||||||
$total_worksheets = count($this->_worksheets);
|
$total_worksheets = count($this->_worksheets);
|
||||||
// change version for all worksheets too
|
// change version for all worksheets too
|
||||||
for ($i = 0; $i < $total_worksheets; $i++) {
|
for ($i = 0; $i < $total_worksheets; $i++) {
|
||||||
$this->_worksheets[$i]->_BIFF_version = $version;
|
$this->_worksheets[$i]->_BIFF_version = $version;
|
||||||
}
|
}
|
||||||
|
|
||||||
$total_formats = count($this->_formats);
|
$total_formats = count($this->_formats);
|
||||||
// change version for all formats too
|
// change version for all formats too
|
||||||
for ($i = 0; $i < $total_formats; $i++) {
|
for ($i = 0; $i < $total_formats; $i++) {
|
||||||
|
|
@ -328,7 +330,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// Check that the worksheet name doesn't already exist: a fatal Excel error.
|
// Check that the worksheet name doesn't already exist: a fatal Excel error.
|
||||||
$total_worksheets = count($this->_worksheets);
|
$total_worksheets = count($this->_worksheets);
|
||||||
for ($i = 0; $i < $total_worksheets; $i++) {
|
for ($i = 0; $i < $total_worksheets; $i++) {
|
||||||
if ($name == $this->_worksheets[$i]->getName()) {
|
if ($this->_worksheets[$i]->getName() == $name) {
|
||||||
return $this->raiseError("Worksheet '$name' already exists");
|
return $this->raiseError("Worksheet '$name' already exists");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -587,16 +589,19 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
return $this->raiseError("OLE Error: ".$res->getMessage());
|
return $this->raiseError("OLE Error: ".$res->getMessage());
|
||||||
}
|
}
|
||||||
$OLE->append($this->_data);
|
$OLE->append($this->_data);
|
||||||
|
|
||||||
$total_worksheets = count($this->_worksheets);
|
$total_worksheets = count($this->_worksheets);
|
||||||
for ($i = 0; $i < $total_worksheets; $i++) {
|
for ($i = 0; $i < $total_worksheets; $i++) {
|
||||||
while ($tmp = $this->_worksheets[$i]->getData()) {
|
while ($tmp = $this->_worksheets[$i]->getData()) {
|
||||||
$OLE->append($tmp);
|
$OLE->append($tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$root = new OLE_PPS_Root(time(), time(), array($OLE));
|
$root = new OLE_PPS_Root(time(), time(), array($OLE));
|
||||||
if ($this->_tmp_dir != '') {
|
if ($this->_tmp_dir != '') {
|
||||||
$root->setTempDir($this->_tmp_dir);
|
$root->setTempDir($this->_tmp_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = $root->save($this->_filename);
|
$res = $root->save($this->_filename);
|
||||||
if ($this->isError($res)) {
|
if ($this->isError($res)) {
|
||||||
return $this->raiseError("OLE Error: ".$res->getMessage());
|
return $this->raiseError("OLE Error: ".$res->getMessage());
|
||||||
|
|
@ -883,7 +888,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$header = pack('vv', $record, $length);
|
$header = pack('vv', $record, $length);
|
||||||
$data = pack('v', $cv);
|
$data = pack('v', $cv);
|
||||||
|
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -913,7 +918,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$grbit,
|
$grbit,
|
||||||
$itabCur, $itabFirst,
|
$itabCur, $itabFirst,
|
||||||
$ctabsel, $wTabRatio);
|
$ctabsel, $wTabRatio);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -957,7 +962,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vv", count($this->_worksheets), 0x0104);
|
$data = pack("vv", count($this->_worksheets), 0x0104);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -979,7 +984,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
for ($i = 0; $i < $total_references; $i++) {
|
for ($i = 0; $i < $total_references; $i++) {
|
||||||
$data .= $this->_parser->_references[$i];
|
$data .= $this->_parser->_references[$i];
|
||||||
}
|
}
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -998,7 +1003,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vCC", $ixfe, $BuiltIn, $iLevel);
|
$data = pack("vCC", $ixfe, $BuiltIn, $iLevel);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1009,7 +1014,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
* @param integer $ifmt Format index code
|
* @param integer $ifmt Format index code
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _storeNumFormat($format,$ifmt)
|
function _storeNumFormat($format, $ifmt)
|
||||||
{
|
{
|
||||||
$record = 0x041E; // Record identifier
|
$record = 0x041E; // Record identifier
|
||||||
|
|
||||||
|
|
@ -1028,7 +1033,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
} elseif ($this->_BIFF_version == 0x0500) {
|
} elseif ($this->_BIFF_version == 0x0500) {
|
||||||
$data = pack("vC", $ifmt, $cch);
|
$data = pack("vC", $ifmt, $cch);
|
||||||
}
|
}
|
||||||
$this->_append($header.$data.$format);
|
$this->_append($header . $data . $format);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1045,7 +1050,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $f1904);
|
$data = pack("v", $f1904);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1069,7 +1074,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $cxals);
|
$data = pack("v", $cxals);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1093,7 +1098,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("CC", $cch, $rgch);
|
$data = pack("CC", $cch, $rgch);
|
||||||
$this->_append($header.$data.$sheetname);
|
$this->_append($header . $data . $sheetname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1109,7 +1114,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
* @param integer $colmax End column
|
* @param integer $colmax End column
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _storeNameShort($index,$type,$rowmin,$rowmax,$colmin,$colmax)
|
function _storeNameShort($index, $type, $rowmin, $rowmax, $colmin, $colmax)
|
||||||
{
|
{
|
||||||
$record = 0x0018; // Record identifier
|
$record = 0x0018; // Record identifier
|
||||||
$length = 0x0024; // Number of bytes to follow
|
$length = 0x0024; // Number of bytes to follow
|
||||||
|
|
@ -1157,7 +1162,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$data .= pack("v", $rowmax);
|
$data .= pack("v", $rowmax);
|
||||||
$data .= pack("C", $colmin);
|
$data .= pack("C", $colmin);
|
||||||
$data .= pack("C", $colmax);
|
$data .= pack("C", $colmax);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1175,7 +1180,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
* @param integer $colmax End column
|
* @param integer $colmax End column
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _storeNameLong($index,$type,$rowmin,$rowmax,$colmin,$colmax)
|
function _storeNameLong($index, $type, $rowmin, $rowmax, $colmin, $colmax)
|
||||||
{
|
{
|
||||||
$record = 0x0018; // Record identifier
|
$record = 0x0018; // Record identifier
|
||||||
$length = 0x003d; // Number of bytes to follow
|
$length = 0x003d; // Number of bytes to follow
|
||||||
|
|
@ -1242,7 +1247,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$data .= pack("C", 0xff);
|
$data .= pack("C", 0xff);
|
||||||
// End of data
|
// End of data
|
||||||
$data .= pack("C", 0x10);
|
$data .= pack("C", 0x10);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1258,7 +1263,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$header = pack('vv', $record, $length);
|
$header = pack('vv', $record, $length);
|
||||||
/* using the same country code always for simplicity */
|
/* using the same country code always for simplicity */
|
||||||
$data = pack('vv', $this->_country_code, $this->_country_code);
|
$data = pack('vv', $this->_country_code, $this->_country_code);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1276,14 +1281,14 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$data = ''; // The RGB data
|
$data = ''; // The RGB data
|
||||||
|
|
||||||
// Pack the RGB data
|
// Pack the RGB data
|
||||||
foreach($aref as $color) {
|
foreach ($aref as $color) {
|
||||||
foreach($color as $byte) {
|
foreach ($color as $byte) {
|
||||||
$data .= pack("C",$byte);
|
$data .= pack("C",$byte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = pack("vvv", $record, $length, $ccv);
|
$header = pack("vvv", $record, $length, $ccv);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1420,7 +1425,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// Write the SST block header information
|
// Write the SST block header information
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("VV", $this->_str_total, $this->_str_unique);
|
$data = pack("VV", $this->_str_total, $this->_str_unique);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
|
|
||||||
|
|
||||||
// Iterate through the strings to calculate the CONTINUE block sizes
|
// Iterate through the strings to calculate the CONTINUE block sizes
|
||||||
|
|
|
||||||
|
|
@ -383,7 +383,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$this->_parser = &$parser;
|
$this->_parser = &$parser;
|
||||||
|
|
||||||
//$this->ext_sheets = array();
|
//$this->ext_sheets = array();
|
||||||
$this->_filehandle = "";
|
$this->_filehandle = '';
|
||||||
$this->_using_tmpfile = true;
|
$this->_using_tmpfile = true;
|
||||||
//$this->fileclosed = 0;
|
//$this->fileclosed = 0;
|
||||||
//$this->offset = 0;
|
//$this->offset = 0;
|
||||||
|
|
@ -414,14 +414,14 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$this->_margin_top = 1.00;
|
$this->_margin_top = 1.00;
|
||||||
$this->_margin_bottom = 1.00;
|
$this->_margin_bottom = 1.00;
|
||||||
|
|
||||||
$this->title_rowmin = NULL;
|
$this->title_rowmin = null;
|
||||||
$this->title_rowmax = NULL;
|
$this->title_rowmax = null;
|
||||||
$this->title_colmin = NULL;
|
$this->title_colmin = null;
|
||||||
$this->title_colmax = NULL;
|
$this->title_colmax = null;
|
||||||
$this->print_rowmin = NULL;
|
$this->print_rowmin = null;
|
||||||
$this->print_rowmax = NULL;
|
$this->print_rowmax = null;
|
||||||
$this->print_colmin = NULL;
|
$this->print_colmin = null;
|
||||||
$this->print_colmax = NULL;
|
$this->print_colmax = null;
|
||||||
|
|
||||||
$this->_print_gridlines = 1;
|
$this->_print_gridlines = 1;
|
||||||
$this->_screen_gridlines = 1;
|
$this->_screen_gridlines = 1;
|
||||||
|
|
@ -435,7 +435,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$this->_vbreaks = array();
|
$this->_vbreaks = array();
|
||||||
|
|
||||||
$this->_protect = 0;
|
$this->_protect = 0;
|
||||||
$this->_password = NULL;
|
$this->_password = null;
|
||||||
|
|
||||||
$this->col_sizes = array();
|
$this->col_sizes = array();
|
||||||
$this->_row_sizes = array();
|
$this->_row_sizes = array();
|
||||||
|
|
@ -467,7 +467,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
{
|
{
|
||||||
// Open tmp file for storing Worksheet data
|
// Open tmp file for storing Worksheet data
|
||||||
$fh = tmpfile();
|
$fh = tmpfile();
|
||||||
if ( $fh) {
|
if ($fh) {
|
||||||
// Store filehandle
|
// Store filehandle
|
||||||
$this->_filehandle = $fh;
|
$this->_filehandle = $fh;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -568,7 +568,8 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
// Prepend the COLINFO records if they exist
|
// Prepend the COLINFO records if they exist
|
||||||
if (!empty($this->_colinfo)) {
|
if (!empty($this->_colinfo)) {
|
||||||
for ($i = 0; $i < count($this->_colinfo); $i++) {
|
$colcount = count($this->_colinfo);
|
||||||
|
for ($i = 0; $i < $colcount; $i++) {
|
||||||
$this->_storeColinfo($this->_colinfo[$i]);
|
$this->_storeColinfo($this->_colinfo[$i]);
|
||||||
}
|
}
|
||||||
$this->_storeDefcol();
|
$this->_storeDefcol();
|
||||||
|
|
@ -956,7 +957,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
* @param integer $first_row First row to repeat
|
* @param integer $first_row First row to repeat
|
||||||
* @param integer $last_row Last row to repeat. Optional.
|
* @param integer $last_row Last row to repeat. Optional.
|
||||||
*/
|
*/
|
||||||
function repeatRows($first_row, $last_row = NULL)
|
function repeatRows($first_row, $last_row = null)
|
||||||
{
|
{
|
||||||
$this->title_rowmin = $first_row;
|
$this->title_rowmin = $first_row;
|
||||||
if (isset($last_row)) { //Second row is optional
|
if (isset($last_row)) { //Second row is optional
|
||||||
|
|
@ -973,7 +974,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
* @param integer $first_col First column to repeat
|
* @param integer $first_col First column to repeat
|
||||||
* @param integer $last_col Last column to repeat. Optional.
|
* @param integer $last_col Last column to repeat. Optional.
|
||||||
*/
|
*/
|
||||||
function repeatColumns($first_col, $last_col = NULL)
|
function repeatColumns($first_col, $last_col = null)
|
||||||
{
|
{
|
||||||
$this->title_colmin = $first_col;
|
$this->title_colmin = $first_col;
|
||||||
if (isset($last_col)) { // Second col is optional
|
if (isset($last_col)) { // Second col is optional
|
||||||
|
|
@ -1057,8 +1058,8 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
*/
|
*/
|
||||||
function setHPagebreaks($breaks)
|
function setHPagebreaks($breaks)
|
||||||
{
|
{
|
||||||
foreach($breaks as $break) {
|
foreach ($breaks as $break) {
|
||||||
array_push($this->_hbreaks,$break);
|
array_push($this->_hbreaks, $break);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1071,8 +1072,8 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
*/
|
*/
|
||||||
function setVPagebreaks($breaks)
|
function setVPagebreaks($breaks)
|
||||||
{
|
{
|
||||||
foreach($breaks as $break) {
|
foreach ($breaks as $break) {
|
||||||
array_push($this->_vbreaks,$break);
|
array_push($this->_vbreaks, $break);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1131,30 +1132,30 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
@_ = $this->_substituteCellref(@_);
|
@_ = $this->_substituteCellref(@_);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (preg_match("/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/",$token)) {
|
if (preg_match("/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/", $token)) {
|
||||||
// Match number
|
// Match number
|
||||||
return $this->writeNumber($row,$col,$token,$format);
|
return $this->writeNumber($row, $col, $token, $format);
|
||||||
} elseif (preg_match("/^[fh]tt?p:\/\//",$token)) {
|
} elseif (preg_match("/^[fh]tt?p:\/\//", $token)) {
|
||||||
// Match http or ftp URL
|
// Match http or ftp URL
|
||||||
return $this->writeUrl($row, $col, $token, '', $format);
|
return $this->writeUrl($row, $col, $token, '', $format);
|
||||||
} elseif (preg_match("/^mailto:/",$token)) {
|
} elseif (preg_match("/^mailto:/", $token)) {
|
||||||
// Match mailto:
|
// Match mailto:
|
||||||
return $this->writeUrl($row, $col, $token, '', $format);
|
return $this->writeUrl($row, $col, $token, '', $format);
|
||||||
} elseif (preg_match("/^(?:in|ex)ternal:/",$token)) {
|
} elseif (preg_match("/^(?:in|ex)ternal:/", $token)) {
|
||||||
// Match internal or external sheet link
|
// Match internal or external sheet link
|
||||||
return $this->writeUrl($row, $col, $token, '', $format);
|
return $this->writeUrl($row, $col, $token, '', $format);
|
||||||
} elseif (preg_match("/^=/",$token)) {
|
} elseif (preg_match("/^=/", $token)) {
|
||||||
// Match formula
|
// Match formula
|
||||||
return $this->writeFormula($row, $col, $token, $format);
|
return $this->writeFormula($row, $col, $token, $format);
|
||||||
} elseif (preg_match("/^@/",$token)) {
|
} elseif (preg_match("/^@/", $token)) {
|
||||||
// Match formula
|
// Match formula
|
||||||
return $this->writeFormula($row, $col, $token, $format);
|
return $this->writeFormula($row, $col, $token, $format);
|
||||||
} elseif ($token == '') {
|
} elseif ($token == '') {
|
||||||
// Match blank
|
// Match blank
|
||||||
return $this->writeBlank($row,$col,$format);
|
return $this->writeBlank($row, $col, $format);
|
||||||
} else {
|
} else {
|
||||||
// Default: match string
|
// Default: match string
|
||||||
return $this->writeString($row,$col,$token,$format);
|
return $this->writeString($row, $col, $token, $format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1169,11 +1170,11 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
* @return mixed PEAR_Error on failure
|
* @return mixed PEAR_Error on failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function writeRow($row, $col, $val, $format=0)
|
function writeRow($row, $col, $val, $format = 0)
|
||||||
{
|
{
|
||||||
$retval = '';
|
$retval = '';
|
||||||
if (is_array($val)) {
|
if (is_array($val)) {
|
||||||
foreach($val as $v) {
|
foreach ($val as $v) {
|
||||||
if (is_array($v)) {
|
if (is_array($v)) {
|
||||||
$this->writeCol($row, $col, $v, $format);
|
$this->writeCol($row, $col, $v, $format);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1202,7 +1203,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
{
|
{
|
||||||
$retval = '';
|
$retval = '';
|
||||||
if (is_array($val)) {
|
if (is_array($val)) {
|
||||||
foreach($val as $v) {
|
foreach ($val as $v) {
|
||||||
$this->write($row, $col, $v, $format);
|
$this->write($row, $col, $v, $format);
|
||||||
$row++;
|
$row++;
|
||||||
}
|
}
|
||||||
|
|
@ -1341,7 +1342,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
// split the plain text password in its component characters
|
// split the plain text password in its component characters
|
||||||
$chars = preg_split('//', $plaintext, -1, PREG_SPLIT_NO_EMPTY);
|
$chars = preg_split('//', $plaintext, -1, PREG_SPLIT_NO_EMPTY);
|
||||||
foreach($chars as $char) {
|
foreach ($chars as $char) {
|
||||||
$value = ord($char) << $i; // shifted ASCII value
|
$value = ord($char) << $i; // shifted ASCII value
|
||||||
$rotated_bits = $value >> 15; // rotated bits beyond bit 15
|
$rotated_bits = $value >> 15; // rotated bits beyond bit 15
|
||||||
$value &= 0x7fff; // first 15 bits
|
$value &= 0x7fff; // first 15 bits
|
||||||
|
|
@ -1493,7 +1494,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vvvv", $row, $col, $xf, $strlen);
|
$data = pack("vvvv", $row, $col, $xf, $strlen);
|
||||||
$this->_append($header.$data.$str);
|
$this->_append($header . $data . $str);
|
||||||
return($str_error);
|
return($str_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1599,9 +1600,9 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$length = 0x0006 + min($note_length, 2048);
|
$length = 0x0006 + min($note_length, 2048);
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vvv", $row, $col, $note_length);
|
$data = pack("vvv", $row, $col, $note_length);
|
||||||
$this->_append($header.$data.substr($note, 0, 2048));
|
$this->_append($header . $data . substr($note, 0, 2048));
|
||||||
|
|
||||||
for($i = $max_length; $i < $note_length; $i += $max_length) {
|
for ($i = $max_length; $i < $note_length; $i += $max_length) {
|
||||||
$chunk = substr($note, $i, $max_length);
|
$chunk = substr($note, $i, $max_length);
|
||||||
$length = 0x0006 + strlen($chunk);
|
$length = 0x0006 + strlen($chunk);
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
|
|
@ -1661,7 +1662,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vvv", $row, $col, $xf);
|
$data = pack("vvv", $row, $col, $xf);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1702,10 +1703,10 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
}
|
}
|
||||||
|
|
||||||
// Strip the '=' or '@' sign at the beginning of the formula string
|
// Strip the '=' or '@' sign at the beginning of the formula string
|
||||||
if (preg_match("/^=/",$formula)) {
|
if (preg_match("/^=/", $formula)) {
|
||||||
$formula = preg_replace("/(^=)/","",$formula);
|
$formula = preg_replace("/(^=)/", "", $formula);
|
||||||
} elseif (preg_match("/^@/",$formula)) {
|
} elseif (preg_match("/^@/", $formula)) {
|
||||||
$formula = preg_replace("/(^@)/","",$formula);
|
$formula = preg_replace("/(^@)/", "", $formula);
|
||||||
} else {
|
} else {
|
||||||
// Error handling
|
// Error handling
|
||||||
$this->writeString($row, $col, 'Unrecognised character for formula');
|
$this->writeString($row, $col, 'Unrecognised character for formula');
|
||||||
|
|
@ -1732,7 +1733,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = pack("vvvdvVv", $row, $col, $xf, $num,
|
$data = pack("vvvdvVv", $row, $col, $xf, $num,
|
||||||
$grbit, $unknown, $formlen);
|
$grbit, $unknown, $formlen);
|
||||||
|
|
||||||
$this->_append($header.$data.$formula);
|
$this->_append($header . $data . $formula);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1853,9 +1854,9 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = pack("vvvv", $row1, $row2, $col1, $col2);
|
$data = pack("vvvv", $row1, $row2, $col1, $col2);
|
||||||
|
|
||||||
// Write the packed data
|
// Write the packed data
|
||||||
$this->_append( $header. $data.
|
$this->_append($header . $data .
|
||||||
$unknown1. $options.
|
$unknown1 . $options .
|
||||||
$unknown2. $url_len. $url);
|
$unknown2 . $url_len . $url);
|
||||||
return($str_error);
|
return($str_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1915,9 +1916,9 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = pack("vvvv", $row1, $row2, $col1, $col2);
|
$data = pack("vvvv", $row1, $row2, $col1, $col2);
|
||||||
|
|
||||||
// Write the packed data
|
// Write the packed data
|
||||||
$this->_append($header. $data.
|
$this->_append($header . $data .
|
||||||
$unknown1. $options.
|
$unknown1 . $options .
|
||||||
$url_len. $url);
|
$url_len . $url);
|
||||||
return($str_error);
|
return($str_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1992,8 +1993,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$sheet_len = pack("V", strlen($sheet) + 0x01);
|
$sheet_len = pack("V", strlen($sheet) + 0x01);
|
||||||
$sheet = join("\0", split('', $sheet));
|
$sheet = join("\0", split('', $sheet));
|
||||||
$sheet .= "\0\0\0";
|
$sheet .= "\0\0\0";
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$sheet_len = '';
|
$sheet_len = '';
|
||||||
$sheet = '';
|
$sheet = '';
|
||||||
}
|
}
|
||||||
|
|
@ -2055,7 +2055,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
* @access public
|
* @access public
|
||||||
* @param integer $row The row to set
|
* @param integer $row The row to set
|
||||||
* @param integer $height Height we are giving to the row.
|
* @param integer $height Height we are giving to the row.
|
||||||
* Use NULL to set XF without setting height
|
* Use null to set XF without setting height
|
||||||
* @param mixed $format XF format we are giving to the row
|
* @param mixed $format XF format we are giving to the row
|
||||||
* @param bool $hidden The optional hidden attribute
|
* @param bool $hidden The optional hidden attribute
|
||||||
* @param integer $level The optional outline level for row, in range [0,7]
|
* @param integer $level The optional outline level for row, in range [0,7]
|
||||||
|
|
@ -2075,8 +2075,8 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
// set _row_sizes so _sizeRow() can use it
|
// set _row_sizes so _sizeRow() can use it
|
||||||
$this->_row_sizes[$row] = $height;
|
$this->_row_sizes[$row] = $height;
|
||||||
|
|
||||||
// Use setRow($row, NULL, $XF) to set XF format without setting height
|
// Use setRow($row, null, $XF) to set XF format without setting height
|
||||||
if ($height != NULL) {
|
if ($height != null) {
|
||||||
$miyRw = $height * 20; // row height
|
$miyRw = $height * 20; // row height
|
||||||
} else {
|
} else {
|
||||||
$miyRw = 0xff; // default row height is 256
|
$miyRw = 0xff; // default row height is 256
|
||||||
|
|
@ -2207,7 +2207,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $colwidth);
|
$data = pack("v", $colwidth);
|
||||||
$this->_prepend($header.$data);
|
$this->_prepend($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2311,7 +2311,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$irefAct, $cref,
|
$irefAct, $cref,
|
||||||
$rwFirst, $rwLast,
|
$rwFirst, $rwLast,
|
||||||
$colFirst, $colLast);
|
$colFirst, $colLast);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2333,7 +2333,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
foreach ($this->_merged_ranges as $range) {
|
foreach ($this->_merged_ranges as $range) {
|
||||||
$data .= pack('vvvv', $range[0], $range[2], $range[1], $range[3]);
|
$data .= pack('vvvv', $range[0], $range[2], $range[1], $range[3]);
|
||||||
}
|
}
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2356,7 +2356,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $count);
|
$data = pack("v", $count);
|
||||||
$this->_prepend($header.$data);
|
$this->_prepend($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2388,7 +2388,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("CC", $cch, $rgch);
|
$data = pack("CC", $cch, $rgch);
|
||||||
$this->_prepend($header.$data.$sheetname);
|
$this->_prepend($header . $data . $sheetname);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2414,7 +2414,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if (count($panes) > 4) { // if Active pane was received
|
if (count($panes) > 4) { // if Active pane was received
|
||||||
$pnnAct = $panes[4];
|
$pnnAct = $panes[4];
|
||||||
} else {
|
} else {
|
||||||
$pnnAct = NULL;
|
$pnnAct = null;
|
||||||
}
|
}
|
||||||
$record = 0x0041; // Record identifier
|
$record = 0x0041; // Record identifier
|
||||||
$length = 0x000A; // Number of bytes to follow
|
$length = 0x000A; // Number of bytes to follow
|
||||||
|
|
@ -2469,7 +2469,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vvvvv", $x, $y, $rwTop, $colLeft, $pnnAct);
|
$data = pack("vvvvv", $x, $y, $rwTop, $colLeft, $pnnAct);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2530,7 +2530,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$iVRes);
|
$iVRes);
|
||||||
$data2 = $numHdr.$numFtr;
|
$data2 = $numHdr.$numFtr;
|
||||||
$data3 = pack("v", $iCopies);
|
$data3 = pack("v", $iCopies);
|
||||||
$this->_prepend($header.$data1.$data2.$data3);
|
$this->_prepend($header . $data1 . $data2 . $data3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2550,6 +2550,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
} else {
|
} else {
|
||||||
$length = 1 + $cch; // Bytes to follow
|
$length = 1 + $cch; // Bytes to follow
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$data = pack("vC", $cch, $encoding);
|
$data = pack("vC", $cch, $encoding);
|
||||||
|
|
@ -2577,6 +2578,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
} else {
|
} else {
|
||||||
$length = 1 + $cch;
|
$length = 1 + $cch;
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$data = pack("vC", $cch, $encoding);
|
$data = pack("vC", $cch, $encoding);
|
||||||
|
|
@ -2584,7 +2586,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = pack("C", $cch);
|
$data = pack("C", $cch);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_append($header.$data.$str);
|
$this->_append($header . $data . $str);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2619,7 +2621,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $fVCenter);
|
$data = pack("v", $fVCenter);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2640,7 +2642,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = strrev($data);
|
$data = strrev($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2661,7 +2663,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = strrev($data);
|
$data = strrev($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2682,7 +2684,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = strrev($data);
|
$data = strrev($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2703,7 +2705,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = strrev($data);
|
$data = strrev($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2753,7 +2755,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $fPrintRwCol);
|
$data = pack("v", $fPrintRwCol);
|
||||||
$this->_prepend($header.$data);
|
$this->_prepend($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2771,7 +2773,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $fPrintGrid);
|
$data = pack("v", $fPrintGrid);
|
||||||
$this->_prepend($header.$data);
|
$this->_prepend($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2789,7 +2791,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $fGridSet);
|
$data = pack("v", $fGridSet);
|
||||||
$this->_prepend($header.$data);
|
$this->_prepend($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2813,7 +2815,8 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
// Calculate the maximum column outline level. The equivalent calculation
|
// Calculate the maximum column outline level. The equivalent calculation
|
||||||
// for the row outline level is carried out in setRow().
|
// for the row outline level is carried out in setRow().
|
||||||
for ($i = 0; $i < count($this->_colinfo); $i++) {
|
$colcount = count($this->_colinfo);
|
||||||
|
for ($i = 0; $i < $colcount; $i++) {
|
||||||
// Skip cols without outline level info.
|
// Skip cols without outline level info.
|
||||||
if (count($col_level) >= 6) {
|
if (count($col_level) >= 6) {
|
||||||
$col_level = max($this->_colinfo[$i][5], $col_level);
|
$col_level = max($this->_colinfo[$i][5], $col_level);
|
||||||
|
|
@ -2878,7 +2881,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $grbit);
|
$data = pack("v", $grbit);
|
||||||
$this->_prepend($header.$data);
|
$this->_prepend($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2912,7 +2915,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data = pack("v", $cbrk);
|
$data = pack("v", $cbrk);
|
||||||
|
|
||||||
// Append each page break
|
// Append each page break
|
||||||
foreach($breaks as $break) {
|
foreach ($breaks as $break) {
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$data .= pack("vvv", $break, 0x0000, 0x00ff);
|
$data .= pack("vvv", $break, 0x0000, 0x00ff);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -2966,7 +2969,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_prepend($header.$data);
|
$this->_prepend($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -3012,7 +3015,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("v", $wPassword);
|
$data = pack("v", $wPassword);
|
||||||
|
|
||||||
$this->_prepend($header.$data);
|
$this->_prepend($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -3157,11 +3160,10 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$x2 = $width / $this->_sizeCol($col_end) * 1024; // Distance to right side of object
|
$x2 = $width / $this->_sizeCol($col_end) * 1024; // Distance to right side of object
|
||||||
$y2 = $height / $this->_sizeRow($row_end) * 256; // Distance to bottom of object
|
$y2 = $height / $this->_sizeRow($row_end) * 256; // Distance to bottom of object
|
||||||
|
|
||||||
$this->_storeObjPicture( $col_start, $x1,
|
$this->_storeObjPicture($col_start, $x1,
|
||||||
$row_start, $y1,
|
$row_start, $y1,
|
||||||
$col_end, $x2,
|
$col_end, $x2,
|
||||||
$row_end, $y2
|
$row_end, $y2);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -3288,7 +3290,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$data .= pack("v", $grbit2);
|
$data .= pack("v", $grbit2);
|
||||||
$data .= pack("V", $Reserved5);
|
$data .= pack("V", $Reserved5);
|
||||||
|
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -3396,7 +3398,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vv", $this->_zoom, 100);
|
$data = pack("vv", $this->_zoom, 100);
|
||||||
$this->_append($header.$data);
|
$this->_append($header . $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -3429,10 +3431,10 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$this->_append($header.$data);
|
$this->_append($header.$data);
|
||||||
|
|
||||||
$record = 0x01be; // Record identifier
|
$record = 0x01be; // Record identifier
|
||||||
foreach($this->_dv as $dv) {
|
foreach ($this->_dv as $dv) {
|
||||||
$length = strlen($dv); // Bytes to follow
|
$length = strlen($dv); // Bytes to follow
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$this->_append($header.$dv);
|
$this->_append($header . $dv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue