CS fixes (bug #2582, patch by helgi)
CVS: ---------------------------------------------------------------------- CVS: Enter Log. Lines beginning with `CVS:' are removed automatically CVS: CVS: Committing in . CVS: CVS: Modified Files: CVS: Writer.php Writer/BIFFwriter.php Writer/Format.php CVS: Writer/OLEwriter.php Writer/Parser.php Writer/Validator.php CVS: Writer/Workbook.php Writer/Worksheet.php CVS: ---------------------------------------------------------------------- git-svn-id: https://svn.php.net/repository/pear/packages/Spreadsheet_Excel_Writer/trunk@181149 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
parent
57d191ae4e
commit
e4b8fe22f3
|
|
@ -31,8 +31,8 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once('PEAR.php');
|
require_once 'PEAR.php';
|
||||||
require_once('Spreadsheet/Excel/Writer/Workbook.php');
|
require_once 'Spreadsheet/Excel/Writer/Workbook.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for writing Excel Spreadsheets. This class should change COMPLETELY.
|
* Class for writing Excel Spreadsheets. This class should change COMPLETELY.
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once('PEAR.php');
|
require_once 'PEAR.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for writing Excel BIFF records.
|
* Class for writing Excel BIFF records.
|
||||||
|
|
@ -112,11 +112,9 @@ class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR
|
||||||
$number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F);
|
$number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F);
|
||||||
if ($number == $teststr) {
|
if ($number == $teststr) {
|
||||||
$byte_order = 0; // Little Endian
|
$byte_order = 0; // Little Endian
|
||||||
}
|
} elseif ($number == strrev($teststr)){
|
||||||
elseif ($number == strrev($teststr)){
|
|
||||||
$byte_order = 1; // Big Endian
|
$byte_order = 1; // Big Endian
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Give up. I'll fix this in a later version.
|
// Give up. I'll fix this in a later version.
|
||||||
return $this->raiseError("Required floating point format ".
|
return $this->raiseError("Required floating point format ".
|
||||||
"not supported on this platform.");
|
"not supported on this platform.");
|
||||||
|
|
@ -173,8 +171,7 @@ class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR
|
||||||
$unknown = '';
|
$unknown = '';
|
||||||
$build = 0x096C;
|
$build = 0x096C;
|
||||||
$year = 0x07C9;
|
$year = 0x07C9;
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$length = 0x0010;
|
$length = 0x0010;
|
||||||
$unknown = pack("VV", 0x00000041, 0x00000006); //unknown last 8 bytes for BIFF8
|
$unknown = pack("VV", 0x00000041, 0x00000006); //unknown last 8 bytes for BIFF8
|
||||||
$build = 0x0DBB;
|
$build = 0x0DBB;
|
||||||
|
|
@ -224,8 +221,7 @@ 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)
|
for ($i = $limit; $i < strlen($data) - $limit; $i += $limit) {
|
||||||
{
|
|
||||||
$tmp .= $header;
|
$tmp .= $header;
|
||||||
$tmp .= substr($data, $i, $limit);
|
$tmp .= substr($data, $i, $limit);
|
||||||
}
|
}
|
||||||
|
|
@ -233,7 +229,7 @@ class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR
|
||||||
// Retrieve the last chunk of data
|
// Retrieve the last chunk of data
|
||||||
$header = pack("vv", $record, strlen($data) - $i);
|
$header = pack("vv", $record, strlen($data) - $i);
|
||||||
$tmp .= $header;
|
$tmp .= $header;
|
||||||
$tmp .= substr($data,$i,strlen($data) - $i);
|
$tmp .= substr($data, $i, strlen($data) - $i);
|
||||||
|
|
||||||
return $tmp;
|
return $tmp;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once('PEAR.php');
|
require_once 'PEAR.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for generating Excel XF records (formats)
|
* Class for generating Excel XF records (formats)
|
||||||
|
|
@ -296,10 +296,9 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
$this->_diag_color = 0x40;
|
$this->_diag_color = 0x40;
|
||||||
|
|
||||||
// Set properties passed to Spreadsheet_Excel_Writer_Workbook::addFormat()
|
// Set properties passed to Spreadsheet_Excel_Writer_Workbook::addFormat()
|
||||||
foreach($properties as $property => $value)
|
foreach ($properties as $property => $value)
|
||||||
{
|
{
|
||||||
if(method_exists($this,'set'.ucwords($property)))
|
if (method_exists($this, 'set'.ucwords($property))) {
|
||||||
{
|
|
||||||
$method_name = 'set'.ucwords($property);
|
$method_name = 'set'.ucwords($property);
|
||||||
$this->$method_name($value);
|
$this->$method_name($value);
|
||||||
}
|
}
|
||||||
|
|
@ -318,8 +317,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
// 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;
|
||||||
$style |= $this->_hidden << 1;
|
$style |= $this->_hidden << 1;
|
||||||
}
|
}
|
||||||
|
|
@ -364,8 +362,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
|
|
||||||
$ifnt = $this->font_index; // Index to FONT record
|
$ifnt = $this->font_index; // Index to FONT record
|
||||||
$ifmt = $this->_num_format; // Index to FORMAT record
|
$ifmt = $this->_num_format; // Index to FORMAT record
|
||||||
if ($this->_BIFF_version == 0x0500)
|
if ($this->_BIFF_version == 0x0500) {
|
||||||
{
|
|
||||||
$align = $this->_text_h_align; // Alignment
|
$align = $this->_text_h_align; // Alignment
|
||||||
$align |= $this->_text_wrap << 3;
|
$align |= $this->_text_wrap << 3;
|
||||||
$align |= $this->_text_v_align << 4;
|
$align |= $this->_text_v_align << 4;
|
||||||
|
|
@ -397,9 +394,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
$data = pack("vvvvvvvv", $ifnt, $ifmt, $style, $align,
|
$data = pack("vvvvvvvv", $ifnt, $ifmt, $style, $align,
|
||||||
$icv, $fill,
|
$icv, $fill,
|
||||||
$border1, $border2);
|
$border1, $border2);
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600)
|
|
||||||
{
|
|
||||||
$align = $this->_text_h_align; // Alignment
|
$align = $this->_text_h_align; // Alignment
|
||||||
$align |= $this->_text_wrap << 3;
|
$align |= $this->_text_wrap << 3;
|
||||||
$align |= $this->_text_v_align << 4;
|
$align |= $this->_text_v_align << 4;
|
||||||
|
|
@ -464,8 +459,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
$record = 0x31; // Record identifier
|
$record = 0x31; // Record identifier
|
||||||
if ($this->_BIFF_version == 0x0500) {
|
if ($this->_BIFF_version == 0x0500) {
|
||||||
$length = 0x0F + $cch; // Record length
|
$length = 0x0F + $cch; // Record length
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$length = 0x10 + $cch;
|
$length = 0x10 + $cch;
|
||||||
}
|
}
|
||||||
$reserved = 0x00; // Reserved
|
$reserved = 0x00; // Reserved
|
||||||
|
|
@ -488,8 +482,7 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
$data = pack("vvvvvCCCCC", $dyHeight, $grbit, $icv, $bls,
|
$data = pack("vvvvvCCCCC", $dyHeight, $grbit, $icv, $bls,
|
||||||
$sss, $uls, $bFamily,
|
$sss, $uls, $bFamily,
|
||||||
$bCharSet, $reserved, $cch);
|
$bCharSet, $reserved, $cch);
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$data = pack("vvvvvCCCCCC", $dyHeight, $grbit, $icv, $bls,
|
$data = pack("vvvvvCCCCCC", $dyHeight, $grbit, $icv, $bls,
|
||||||
$sss, $uls, $bFamily,
|
$sss, $uls, $bFamily,
|
||||||
$bCharSet, $reserved, $cch, $encoding);
|
$bCharSet, $reserved, $cch, $encoding);
|
||||||
|
|
@ -561,27 +554,27 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
);
|
);
|
||||||
|
|
||||||
// Return the default color, 0x7FFF, if undef,
|
// Return the default color, 0x7FFF, if undef,
|
||||||
if($name_color == '') {
|
if ($name_color == '') {
|
||||||
return(0x7FFF);
|
return(0x7FFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
// or the color string converted to an integer,
|
// or the color string converted to an integer,
|
||||||
if(isset($colors[$name_color])) {
|
if (isset($colors[$name_color])) {
|
||||||
return($colors[$name_color]);
|
return($colors[$name_color]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// or the default color if string is unrecognised,
|
// or the default color if string is unrecognised,
|
||||||
if(preg_match("/\D/",$name_color)) {
|
if (preg_match("/\D/",$name_color)) {
|
||||||
return(0x7FFF);
|
return(0x7FFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
// or an index < 8 mapped into the correct range,
|
// or an index < 8 mapped into the correct range,
|
||||||
if($name_color < 8) {
|
if ($name_color < 8) {
|
||||||
return($name_color + 8);
|
return($name_color + 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
// or the default color if arg is outside range,
|
// or the default color if arg is outside range,
|
||||||
if($name_color > 63) {
|
if ($name_color > 63) {
|
||||||
return(0x7FFF);
|
return(0x7FFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -669,16 +662,16 @@ class Spreadsheet_Excel_Writer_Format extends PEAR
|
||||||
*/
|
*/
|
||||||
function setBold($weight = 1)
|
function setBold($weight = 1)
|
||||||
{
|
{
|
||||||
if($weight == 1) {
|
if ($weight == 1) {
|
||||||
$weight = 0x2BC; // Bold text
|
$weight = 0x2BC; // Bold text
|
||||||
}
|
}
|
||||||
if($weight == 0) {
|
if ($weight == 0) {
|
||||||
$weight = 0x190; // Normal text
|
$weight = 0x190; // Normal text
|
||||||
}
|
}
|
||||||
if($weight < 0x064) {
|
if ($weight < 0x064) {
|
||||||
$weight = 0x190; // Lower bound
|
$weight = 0x190; // Lower bound
|
||||||
}
|
}
|
||||||
if($weight > 0x3E8) {
|
if ($weight > 0x3E8) {
|
||||||
$weight = 0x190; // Upper bound
|
$weight = 0x190; // Upper bound
|
||||||
}
|
}
|
||||||
$this->_bold = $weight;
|
$this->_bold = $weight;
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once('PEAR.php');
|
require_once 'PEAR.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for creating OLE streams for Excel Spreadsheets
|
* Class for creating OLE streams for Excel Spreadsheets
|
||||||
|
|
@ -131,18 +131,15 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
{
|
{
|
||||||
$OLEfile = $this->_OLEfilename;
|
$OLEfile = $this->_OLEfilename;
|
||||||
|
|
||||||
if(($OLEfile == '-') or ($OLEfile == ''))
|
if (($OLEfile == '-') or ($OLEfile == '')) {
|
||||||
{
|
|
||||||
$this->_tmp_filename = tempnam("/tmp", "OLEwriter");
|
$this->_tmp_filename = tempnam("/tmp", "OLEwriter");
|
||||||
$fh = fopen($this->_tmp_filename,"wb");
|
$fh = fopen($this->_tmp_filename, "wb");
|
||||||
if ($fh == false) {
|
if ($fh == false) {
|
||||||
$this->raiseError("Can't create temporary file.");
|
$this->raiseError("Can't create temporary file.");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
// Create a new file, open for writing (in binmode)
|
// Create a new file, open for writing (in binmode)
|
||||||
$fh = fopen($OLEfile,"wb");
|
$fh = fopen($OLEfile, "wb");
|
||||||
if ($fh == false) {
|
if ($fh == false) {
|
||||||
$this->raiseError("Can't open $OLEfile. It may be in use or protected.");
|
$this->raiseError("Can't open $OLEfile. It may be in use or protected.");
|
||||||
}
|
}
|
||||||
|
|
@ -177,8 +174,7 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
// Set the min file size to 4k to avoid having to use small blocks
|
// Set the min file size to 4k to avoid having to use small blocks
|
||||||
if ($biffsize > 4096) {
|
if ($biffsize > 4096) {
|
||||||
$this->_booksize = $biffsize;
|
$this->_booksize = $biffsize;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$this->_booksize = 4096;
|
$this->_booksize = 4096;
|
||||||
}
|
}
|
||||||
//$this->_size_allowed = 1;
|
//$this->_size_allowed = 1;
|
||||||
|
|
@ -196,8 +192,7 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
$datasize = $this->_booksize;
|
$datasize = $this->_booksize;
|
||||||
if ($datasize % 512 == 0) {
|
if ($datasize % 512 == 0) {
|
||||||
$this->_big_blocks = $datasize/512;
|
$this->_big_blocks = $datasize/512;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$this->_big_blocks = floor($datasize/512) + 1;
|
$this->_big_blocks = floor($datasize/512) + 1;
|
||||||
}
|
}
|
||||||
// There are 127 list blocks and 1 marker blocks for each big block
|
// There are 127 list blocks and 1 marker blocks for each big block
|
||||||
|
|
@ -222,8 +217,7 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
$this->_writeBigBlockDepot();
|
$this->_writeBigBlockDepot();
|
||||||
// Close the filehandle
|
// Close the filehandle
|
||||||
fclose($this->_filehandle);
|
fclose($this->_filehandle);
|
||||||
if(($this->_OLEfilename == '-') or ($this->_OLEfilename == ''))
|
if (($this->_OLEfilename == '-') or ($this->_OLEfilename == '')) {
|
||||||
{
|
|
||||||
$fh = fopen($this->_tmp_filename, "rb");
|
$fh = fopen($this->_tmp_filename, "rb");
|
||||||
if ($fh == false) {
|
if ($fh == false) {
|
||||||
$this->raiseError("Can't read temporary file.");
|
$this->raiseError("Can't read temporary file.");
|
||||||
|
|
@ -242,7 +236,7 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
*/
|
*/
|
||||||
function write($data)
|
function write($data)
|
||||||
{
|
{
|
||||||
fwrite($this->_filehandle,$data,strlen($data));
|
fwrite($this->_filehandle, $data, strlen($data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -267,26 +261,24 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
$unknown7 = pack("VVV", 0x00, -2 ,0x00);
|
$unknown7 = pack("VVV", 0x00, -2 ,0x00);
|
||||||
$unused = pack("V", -1);
|
$unused = pack("V", -1);
|
||||||
|
|
||||||
fwrite($this->_filehandle,$id);
|
fwrite($this->_filehandle, $id);
|
||||||
fwrite($this->_filehandle,$unknown1);
|
fwrite($this->_filehandle, $unknown1);
|
||||||
fwrite($this->_filehandle,$unknown2);
|
fwrite($this->_filehandle, $unknown2);
|
||||||
fwrite($this->_filehandle,$unknown3);
|
fwrite($this->_filehandle, $unknown3);
|
||||||
fwrite($this->_filehandle,$unknown4);
|
fwrite($this->_filehandle, $unknown4);
|
||||||
fwrite($this->_filehandle,$unknown5);
|
fwrite($this->_filehandle, $unknown5);
|
||||||
fwrite($this->_filehandle,$num_bbd_blocks);
|
fwrite($this->_filehandle, $num_bbd_blocks);
|
||||||
fwrite($this->_filehandle,$root_startblock);
|
fwrite($this->_filehandle, $root_startblock);
|
||||||
fwrite($this->_filehandle,$unknown6);
|
fwrite($this->_filehandle, $unknown6);
|
||||||
fwrite($this->_filehandle,$sbd_startblock);
|
fwrite($this->_filehandle, $sbd_startblock);
|
||||||
fwrite($this->_filehandle,$unknown7);
|
fwrite($this->_filehandle, $unknown7);
|
||||||
|
|
||||||
for($i=1; $i <= $num_lists; $i++)
|
for ($i=1; $i <= $num_lists; $i++) {
|
||||||
{
|
|
||||||
$root_start++;
|
$root_start++;
|
||||||
fwrite($this->_filehandle,pack("V",$root_start));
|
fwrite($this->_filehandle, pack("V",$root_start));
|
||||||
}
|
}
|
||||||
for($i = $num_lists; $i <=108; $i++)
|
for ($i = $num_lists; $i <=108; $i++) {
|
||||||
{
|
fwrite($this->_filehandle, $unused);
|
||||||
fwrite($this->_filehandle,$unused);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -307,19 +299,16 @@ 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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -348,16 +337,14 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
* @param integer $size size of the property storage.
|
* @param integer $size size of the property storage.
|
||||||
* @access private
|
* @access private
|
||||||
*/
|
*/
|
||||||
function _writePps($name,$type,$dir,$start,$size)
|
function _writePps($name, $type, $dir, $start, $size)
|
||||||
{
|
{
|
||||||
$length = 0;
|
$length = 0;
|
||||||
$rawname = '';
|
$rawname = '';
|
||||||
|
|
||||||
if ($name != '')
|
if ($name != '') {
|
||||||
{
|
|
||||||
$name = $name . "\0";
|
$name = $name . "\0";
|
||||||
for($i=0;$i<strlen($name);$i++)
|
for ($i = 0; $i < strlen($name); $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);
|
||||||
}
|
}
|
||||||
|
|
@ -381,25 +368,25 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
$pps_size = pack("V", $size); // 0x78
|
$pps_size = pack("V", $size); // 0x78
|
||||||
|
|
||||||
|
|
||||||
fwrite($this->_filehandle,$rawname);
|
fwrite($this->_filehandle, $rawname);
|
||||||
for($i=0; $i < (64 -$length); $i++) {
|
for ($i = 0; $i < (64 -$length); $i++) {
|
||||||
fwrite($this->_filehandle,$zero);
|
fwrite($this->_filehandle, $zero);
|
||||||
}
|
}
|
||||||
fwrite($this->_filehandle,$pps_sizeofname);
|
fwrite($this->_filehandle, $pps_sizeofname);
|
||||||
fwrite($this->_filehandle,$pps_type);
|
fwrite($this->_filehandle, $pps_type);
|
||||||
fwrite($this->_filehandle,$pps_prev);
|
fwrite($this->_filehandle, $pps_prev);
|
||||||
fwrite($this->_filehandle,$pps_next);
|
fwrite($this->_filehandle, $pps_next);
|
||||||
fwrite($this->_filehandle,$pps_dir);
|
fwrite($this->_filehandle, $pps_dir);
|
||||||
for($i=0; $i < 5; $i++) {
|
for ($i = 0; $i < 5; $i++) {
|
||||||
fwrite($this->_filehandle,$unknown1);
|
fwrite($this->_filehandle, $unknown1);
|
||||||
}
|
}
|
||||||
fwrite($this->_filehandle,$pps_ts1s);
|
fwrite($this->_filehandle, $pps_ts1s);
|
||||||
fwrite($this->_filehandle,$pps_ts1d);
|
fwrite($this->_filehandle, $pps_ts1d);
|
||||||
fwrite($this->_filehandle,$pps_ts2d);
|
fwrite($this->_filehandle, $pps_ts2d);
|
||||||
fwrite($this->_filehandle,$pps_ts2d);
|
fwrite($this->_filehandle, $pps_ts2d);
|
||||||
fwrite($this->_filehandle,$pps_sb);
|
fwrite($this->_filehandle, $pps_sb);
|
||||||
fwrite($this->_filehandle,$pps_size);
|
fwrite($this->_filehandle, $pps_size);
|
||||||
fwrite($this->_filehandle,$unknown1);
|
fwrite($this->_filehandle, $unknown1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -411,16 +398,14 @@ class Spreadsheet_Excel_Writer_OLEwriter extends PEAR
|
||||||
{
|
{
|
||||||
$biffsize = $this->_biffsize;
|
$biffsize = $this->_biffsize;
|
||||||
if ($biffsize < 4096) {
|
if ($biffsize < 4096) {
|
||||||
$min_size = 4096;
|
$min_size = 4096;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$min_size = 512;
|
$min_size = 512;
|
||||||
}
|
}
|
||||||
if ($biffsize % $min_size != 0)
|
if ($biffsize % $min_size != 0) {
|
||||||
{
|
|
||||||
$padding = $min_size - ($biffsize % $min_size);
|
$padding = $min_size - ($biffsize % $min_size);
|
||||||
for($i=0; $i < $padding; $i++) {
|
for ($i = 0; $i < $padding; $i++) {
|
||||||
fwrite($this->_filehandle,"\0");
|
fwrite($this->_filehandle, "\0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,75 +25,75 @@
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_ADD token identifier for character "+"
|
* @const SPREADSHEET_EXCEL_WRITER_ADD token identifier for character "+"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_ADD',"+");
|
define('SPREADSHEET_EXCEL_WRITER_ADD', "+");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_SUB token identifier for character "-"
|
* @const SPREADSHEET_EXCEL_WRITER_SUB token identifier for character "-"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_SUB',"-");
|
define('SPREADSHEET_EXCEL_WRITER_SUB', "-");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_MUL token identifier for character "*"
|
* @const SPREADSHEET_EXCEL_WRITER_MUL token identifier for character "*"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_MUL',"*");
|
define('SPREADSHEET_EXCEL_WRITER_MUL', "*");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_DIV token identifier for character "/"
|
* @const SPREADSHEET_EXCEL_WRITER_DIV token identifier for character "/"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_DIV',"/");
|
define('SPREADSHEET_EXCEL_WRITER_DIV', "/");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_OPEN token identifier for character "("
|
* @const SPREADSHEET_EXCEL_WRITER_OPEN token identifier for character "("
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_OPEN',"(");
|
define('SPREADSHEET_EXCEL_WRITER_OPEN', "(");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_CLOSE token identifier for character ")"
|
* @const SPREADSHEET_EXCEL_WRITER_CLOSE token identifier for character ")"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_CLOSE',")");
|
define('SPREADSHEET_EXCEL_WRITER_CLOSE', ")");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_COMA token identifier for character ","
|
* @const SPREADSHEET_EXCEL_WRITER_COMA token identifier for character ","
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_COMA',",");
|
define('SPREADSHEET_EXCEL_WRITER_COMA', ",");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_SEMICOLON token identifier for character ";"
|
* @const SPREADSHEET_EXCEL_WRITER_SEMICOLON token identifier for character ";"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_SEMICOLON',";");
|
define('SPREADSHEET_EXCEL_WRITER_SEMICOLON', ";");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_GT token identifier for character ">"
|
* @const SPREADSHEET_EXCEL_WRITER_GT token identifier for character ">"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_GT',">");
|
define('SPREADSHEET_EXCEL_WRITER_GT', ">");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_LT token identifier for character "<"
|
* @const SPREADSHEET_EXCEL_WRITER_LT token identifier for character "<"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_LT',"<");
|
define('SPREADSHEET_EXCEL_WRITER_LT', "<");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_LE token identifier for character "<="
|
* @const SPREADSHEET_EXCEL_WRITER_LE token identifier for character "<="
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_LE',"<=");
|
define('SPREADSHEET_EXCEL_WRITER_LE', "<=");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_GE token identifier for character ">="
|
* @const SPREADSHEET_EXCEL_WRITER_GE token identifier for character ">="
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_GE',">=");
|
define('SPREADSHEET_EXCEL_WRITER_GE', ">=");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_EQ token identifier for character "="
|
* @const SPREADSHEET_EXCEL_WRITER_EQ token identifier for character "="
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_EQ',"=");
|
define('SPREADSHEET_EXCEL_WRITER_EQ', "=");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const SPREADSHEET_EXCEL_WRITER_NE token identifier for character "<>"
|
* @const SPREADSHEET_EXCEL_WRITER_NE token identifier for character "<>"
|
||||||
*/
|
*/
|
||||||
define('SPREADSHEET_EXCEL_WRITER_NE',"<>");
|
define('SPREADSHEET_EXCEL_WRITER_NE', "<>");
|
||||||
|
|
||||||
|
|
||||||
require_once('PEAR.php');
|
require_once 'PEAR.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for parsing Excel formulas
|
* Class for parsing Excel formulas
|
||||||
|
|
@ -538,61 +538,39 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
*/
|
*/
|
||||||
function _convert($token)
|
function _convert($token)
|
||||||
{
|
{
|
||||||
if (preg_match("/^\"[^\"]{0,255}\"$/", $token))
|
if (preg_match("/^\"[^\"]{0,255}\"$/", $token)) {
|
||||||
{
|
|
||||||
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)) {
|
||||||
// match references like A1 or $A$1
|
// match references like A1 or $A$1
|
||||||
elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/',$token))
|
|
||||||
{
|
|
||||||
return $this->_convertRef2d($token);
|
return $this->_convertRef2d($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
|
||||||
elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z](\d+)$/",$token))
|
|
||||||
{
|
|
||||||
return $this->_convertRef3d($token);
|
return $this->_convertRef3d($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
|
||||||
elseif (preg_match("/^'\w+(\:\w+)?'\![A-Ia-i]?[A-Za-z](\d+)$/",$token))
|
|
||||||
{
|
|
||||||
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)) {
|
||||||
// match ranges like A1:B2
|
// match ranges like A1:B2
|
||||||
elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token))
|
|
||||||
{
|
|
||||||
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)) {
|
||||||
// match ranges like A1..B2
|
// match ranges like A1..B2
|
||||||
elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token))
|
|
||||||
{
|
|
||||||
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)) {
|
||||||
// match external ranges like Sheet1!A1 or Sheet1:Sheet2!A1:B2
|
// match external ranges like Sheet1!A1 or Sheet1:Sheet2!A1:B2
|
||||||
elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/",$token))
|
|
||||||
{
|
|
||||||
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)) {
|
||||||
// match external ranges like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2
|
// match external ranges like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2
|
||||||
elseif (preg_match("/^'\w+(\:\w+)?'\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/",$token))
|
|
||||||
{
|
|
||||||
return $this->_convertRange3d($token);
|
return $this->_convertRange3d($token);
|
||||||
}
|
} elseif (isset($this->ptg[$token])) {
|
||||||
elseif (isset($this->ptg[$token])) // operators (including parentheses)
|
// operators (including parentheses)
|
||||||
{
|
|
||||||
return pack("C", $this->ptg[$token]);
|
return pack("C", $this->ptg[$token]);
|
||||||
}
|
/*} elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/",$token)) {
|
||||||
// commented so argument number can be processed correctly. See toReversePolish().
|
// commented so argument number can be processed correctly. See toReversePolish().
|
||||||
/*elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/",$token))
|
return($this->_convertFunction($token,$this->_func_args));*/
|
||||||
{
|
} elseif ($token == 'arg') {
|
||||||
return($this->_convertFunction($token,$this->_func_args));
|
// if it's an argument, ignore the token (the argument remains)
|
||||||
}*/
|
|
||||||
// if it's an argument, ignore the token (the argument remains)
|
|
||||||
elseif ($token == 'arg')
|
|
||||||
{
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
// TODO: use real error codes
|
// TODO: use real error codes
|
||||||
|
|
@ -610,9 +588,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
// 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
|
||||||
$num = strrev($num);
|
$num = strrev($num);
|
||||||
}
|
}
|
||||||
|
|
@ -637,8 +613,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
}
|
}
|
||||||
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) {
|
|
||||||
$encoding = 0; // TODO: Unicode support
|
$encoding = 0; // TODO: Unicode support
|
||||||
return pack("CCC", $this->ptg['ptgStr'], strlen($string), $encoding).$string;
|
return pack("CCC", $this->ptg['ptgStr'], strlen($string), $encoding).$string;
|
||||||
}
|
}
|
||||||
|
|
@ -681,12 +656,10 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
// 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 {
|
|
||||||
// TODO: use real error codes
|
// TODO: use real error codes
|
||||||
return $this->raiseError("Unknown range separator", 0, PEAR_ERROR_DIE);
|
return $this->raiseError("Unknown range separator", 0, PEAR_ERROR_DIE);
|
||||||
}
|
}
|
||||||
|
|
@ -706,14 +679,11 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
// The ptg value depends on the class of the ptg.
|
// The ptg value depends on the class of the ptg.
|
||||||
if ($class == 0) {
|
if ($class == 0) {
|
||||||
$ptgArea = pack("C", $this->ptg['ptgArea']);
|
$ptgArea = pack("C", $this->ptg['ptgArea']);
|
||||||
}
|
} elseif ($class == 1) {
|
||||||
elseif ($class == 1) {
|
|
||||||
$ptgArea = pack("C", $this->ptg['ptgAreaV']);
|
$ptgArea = pack("C", $this->ptg['ptgAreaV']);
|
||||||
}
|
} elseif ($class == 2) {
|
||||||
elseif ($class == 2) {
|
|
||||||
$ptgArea = pack("C", $this->ptg['ptgAreaA']);
|
$ptgArea = pack("C", $this->ptg['ptgAreaA']);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// TODO: use real error codes
|
// TODO: use real error codes
|
||||||
return $this->raiseError("Unknown class $class", 0, PEAR_ERROR_DIE);
|
return $this->raiseError("Unknown class $class", 0, PEAR_ERROR_DIE);
|
||||||
}
|
}
|
||||||
|
|
@ -741,8 +711,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
if (PEAR::isError($ext_ref)) {
|
if (PEAR::isError($ext_ref)) {
|
||||||
return $ext_ref;
|
return $ext_ref;
|
||||||
}
|
}
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$ext_ref = $this->_getRefIndex($ext_ref);
|
$ext_ref = $this->_getRefIndex($ext_ref);
|
||||||
if (PEAR::isError($ext_ref)) {
|
if (PEAR::isError($ext_ref)) {
|
||||||
return $ext_ref;
|
return $ext_ref;
|
||||||
|
|
@ -753,8 +722,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
list($cell1, $cell2) = split(':', $range);
|
list($cell1, $cell2) = split(':', $range);
|
||||||
|
|
||||||
// Convert the cell references
|
// Convert the cell references
|
||||||
if (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/", $cell1))
|
if (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/", $cell1)) {
|
||||||
{
|
|
||||||
$cell_array1 = $this->_cellToPackedRowcol($cell1);
|
$cell_array1 = $this->_cellToPackedRowcol($cell1);
|
||||||
if (PEAR::isError($cell_array1)) {
|
if (PEAR::isError($cell_array1)) {
|
||||||
return $cell_array1;
|
return $cell_array1;
|
||||||
|
|
@ -765,8 +733,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
return $cell_array2;
|
return $cell_array2;
|
||||||
}
|
}
|
||||||
list($row2, $col2) = $cell_array2;
|
list($row2, $col2) = $cell_array2;
|
||||||
}
|
} else { // It's a rows range (like 26:27)
|
||||||
else { // It's a rows range (like 26:27)
|
|
||||||
$cells_array = $this->_rangeToPackedRange($cell1.':'.$cell2);
|
$cells_array = $this->_rangeToPackedRange($cell1.':'.$cell2);
|
||||||
if (PEAR::isError($cells_array)) {
|
if (PEAR::isError($cells_array)) {
|
||||||
return $cells_array;
|
return $cells_array;
|
||||||
|
|
@ -777,14 +744,11 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
// The ptg value depends on the class of the ptg.
|
// The ptg value depends on the class of the ptg.
|
||||||
if ($class == 0) {
|
if ($class == 0) {
|
||||||
$ptgArea = pack("C", $this->ptg['ptgArea3d']);
|
$ptgArea = pack("C", $this->ptg['ptgArea3d']);
|
||||||
}
|
} elseif ($class == 1) {
|
||||||
elseif ($class == 1) {
|
|
||||||
$ptgArea = pack("C", $this->ptg['ptgArea3dV']);
|
$ptgArea = pack("C", $this->ptg['ptgArea3dV']);
|
||||||
}
|
} elseif ($class == 2) {
|
||||||
elseif ($class == 2) {
|
|
||||||
$ptgArea = pack("C", $this->ptg['ptgArea3dA']);
|
$ptgArea = pack("C", $this->ptg['ptgArea3dA']);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return $this->raiseError("Unknown class $class", 0, PEAR_ERROR_DIE);
|
return $this->raiseError("Unknown class $class", 0, PEAR_ERROR_DIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -812,14 +776,11 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
// The ptg value depends on the class of the ptg.
|
// The ptg value depends on the class of the ptg.
|
||||||
if ($class == 0) {
|
if ($class == 0) {
|
||||||
$ptgRef = pack("C", $this->ptg['ptgRef']);
|
$ptgRef = pack("C", $this->ptg['ptgRef']);
|
||||||
}
|
} elseif ($class == 1) {
|
||||||
elseif ($class == 1) {
|
|
||||||
$ptgRef = pack("C", $this->ptg['ptgRefV']);
|
$ptgRef = pack("C", $this->ptg['ptgRefV']);
|
||||||
}
|
} elseif ($class == 2) {
|
||||||
elseif ($class == 2) {
|
|
||||||
$ptgRef = pack("C", $this->ptg['ptgRefA']);
|
$ptgRef = pack("C", $this->ptg['ptgRefA']);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// TODO: use real error codes
|
// TODO: use real error codes
|
||||||
return $this->raiseError("Unknown class $class");
|
return $this->raiseError("Unknown class $class");
|
||||||
}
|
}
|
||||||
|
|
@ -847,8 +808,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
if (PEAR::isError($ext_ref)) {
|
if (PEAR::isError($ext_ref)) {
|
||||||
return $ext_ref;
|
return $ext_ref;
|
||||||
}
|
}
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$ext_ref = $this->_getRefIndex($ext_ref);
|
$ext_ref = $this->_getRefIndex($ext_ref);
|
||||||
if (PEAR::isError($ext_ref)) {
|
if (PEAR::isError($ext_ref)) {
|
||||||
return $ext_ref;
|
return $ext_ref;
|
||||||
|
|
@ -861,14 +821,11 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
// The ptg value depends on the class of the ptg.
|
// The ptg value depends on the class of the ptg.
|
||||||
if ($class == 0) {
|
if ($class == 0) {
|
||||||
$ptgRef = pack("C", $this->ptg['ptgRef3d']);
|
$ptgRef = pack("C", $this->ptg['ptgRef3d']);
|
||||||
}
|
} elseif ($class == 1) {
|
||||||
elseif ($class == 1) {
|
|
||||||
$ptgRef = pack("C", $this->ptg['ptgRef3dV']);
|
$ptgRef = pack("C", $this->ptg['ptgRef3dV']);
|
||||||
}
|
} elseif ($class == 2) {
|
||||||
elseif ($class == 2) {
|
|
||||||
$ptgRef = pack("C", $this->ptg['ptgRef3dA']);
|
$ptgRef = pack("C", $this->ptg['ptgRef3dA']);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return $this->raiseError("Unknown class $class", 0, PEAR_ERROR_DIE);
|
return $this->raiseError("Unknown class $class", 0, PEAR_ERROR_DIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -889,8 +846,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any.
|
$ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any.
|
||||||
|
|
||||||
// Check if there is a sheet range eg., Sheet1:Sheet2.
|
// Check if there is a sheet range eg., Sheet1:Sheet2.
|
||||||
if (preg_match("/:/", $ext_ref))
|
if (preg_match("/:/", $ext_ref)) {
|
||||||
{
|
|
||||||
list($sheet_name1, $sheet_name2) = split(':', $ext_ref);
|
list($sheet_name1, $sheet_name2) = split(':', $ext_ref);
|
||||||
|
|
||||||
$sheet1 = $this->_getSheetIndex($sheet_name1);
|
$sheet1 = $this->_getSheetIndex($sheet_name1);
|
||||||
|
|
@ -906,9 +862,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
if ($sheet1 > $sheet2) {
|
if ($sheet1 > $sheet2) {
|
||||||
list($sheet1, $sheet2) = array($sheet2, $sheet1);
|
list($sheet1, $sheet2) = array($sheet2, $sheet1);
|
||||||
}
|
}
|
||||||
}
|
} else { // Single sheet name only.
|
||||||
else // Single sheet name only.
|
|
||||||
{
|
|
||||||
$sheet1 = $this->_getSheetIndex($ext_ref);
|
$sheet1 = $this->_getSheetIndex($ext_ref);
|
||||||
if ($sheet1 == -1) {
|
if ($sheet1 == -1) {
|
||||||
return $this->raiseError("Unknown sheet name $ext_ref in formula");
|
return $this->raiseError("Unknown sheet name $ext_ref in formula");
|
||||||
|
|
@ -938,8 +892,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any.
|
$ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any.
|
||||||
|
|
||||||
// Check if there is a sheet range eg., Sheet1:Sheet2.
|
// Check if there is a sheet range eg., Sheet1:Sheet2.
|
||||||
if (preg_match("/:/", $ext_ref))
|
if (preg_match("/:/", $ext_ref)) {
|
||||||
{
|
|
||||||
list($sheet_name1, $sheet_name2) = split(':', $ext_ref);
|
list($sheet_name1, $sheet_name2) = split(':', $ext_ref);
|
||||||
|
|
||||||
$sheet1 = $this->_getSheetIndex($sheet_name1);
|
$sheet1 = $this->_getSheetIndex($sheet_name1);
|
||||||
|
|
@ -955,9 +908,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
if ($sheet1 > $sheet2) {
|
if ($sheet1 > $sheet2) {
|
||||||
list($sheet1, $sheet2) = array($sheet2, $sheet1);
|
list($sheet1, $sheet2) = array($sheet2, $sheet1);
|
||||||
}
|
}
|
||||||
}
|
} else { // Single sheet name only.
|
||||||
else // Single sheet name only.
|
|
||||||
{
|
|
||||||
$sheet1 = $this->_getSheetIndex($ext_ref);
|
$sheet1 = $this->_getSheetIndex($ext_ref);
|
||||||
if ($sheet1 == -1) {
|
if ($sheet1 == -1) {
|
||||||
return $this->raiseError("Unknown sheet name $ext_ref in formula");
|
return $this->raiseError("Unknown sheet name $ext_ref in formula");
|
||||||
|
|
@ -970,16 +921,14 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$ref = pack('vvv', $supbook_index, $sheet1, $sheet2);
|
$ref = pack('vvv', $supbook_index, $sheet1, $sheet2);
|
||||||
$total_references = count($this->_references);
|
$total_references = count($this->_references);
|
||||||
$index = -1;
|
$index = -1;
|
||||||
for ($i = 0; $i < $total_references; $i++)
|
for ($i = 0; $i < $total_references; $i++) {
|
||||||
{
|
|
||||||
if ($ref == $this->_references[$i]) {
|
if ($ref == $this->_references[$i]) {
|
||||||
$index = $i;
|
$index = $i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if REF was not found add it to references array
|
// if REF was not found add it to references array
|
||||||
if ($index == -1)
|
if ($index == -1) {
|
||||||
{
|
|
||||||
$this->_references[$total_references] = $ref;
|
$this->_references[$total_references] = $ref;
|
||||||
$index = $total_references;
|
$index = $total_references;
|
||||||
}
|
}
|
||||||
|
|
@ -999,8 +948,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
{
|
{
|
||||||
if (!isset($this->_ext_sheets[$sheet_name])) {
|
if (!isset($this->_ext_sheets[$sheet_name])) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return $this->_ext_sheets[$sheet_name];
|
return $this->_ext_sheets[$sheet_name];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1044,8 +992,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$row |= $col_rel << 14;
|
$row |= $col_rel << 14;
|
||||||
$row |= $row_rel << 15;
|
$row |= $row_rel << 15;
|
||||||
$col = pack('C', $col);
|
$col = pack('C', $col);
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$col |= $col_rel << 14;
|
$col |= $col_rel << 14;
|
||||||
$col |= $row_rel << 15;
|
$col |= $row_rel << 15;
|
||||||
$col = pack('v', $col);
|
$col = pack('v', $col);
|
||||||
|
|
@ -1089,8 +1036,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$row2 |= $row2_rel << 15;
|
$row2 |= $row2_rel << 15;
|
||||||
$col1 = pack('C', $col1);
|
$col1 = pack('C', $col1);
|
||||||
$col2 = pack('C', $col2);
|
$col2 = pack('C', $col2);
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$col1 |= $row1_rel << 15;
|
$col1 |= $row1_rel << 15;
|
||||||
$col2 |= $row2_rel << 15;
|
$col2 |= $row2_rel << 15;
|
||||||
$col1 = pack('v', $col1);
|
$col1 = pack('v', $col1);
|
||||||
|
|
@ -1123,8 +1069,7 @@ 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++)
|
for ($i = 0; $i < strlen($col_ref); $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--;
|
||||||
}
|
}
|
||||||
|
|
@ -1145,8 +1090,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
{
|
{
|
||||||
$i = $this->_current_char;
|
$i = $this->_current_char;
|
||||||
// eat up white spaces
|
// eat up white spaces
|
||||||
if ($i < strlen($this->_formula))
|
if ($i < strlen($this->_formula)) {
|
||||||
{
|
|
||||||
while ($this->_formula{$i} == " ") {
|
while ($this->_formula{$i} == " ") {
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
@ -1155,17 +1099,14 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
}
|
}
|
||||||
$token = "";
|
$token = "";
|
||||||
}
|
}
|
||||||
while ($i < strlen($this->_formula))
|
while ($i < strlen($this->_formula)) {
|
||||||
{
|
|
||||||
$token .= $this->_formula{$i};
|
$token .= $this->_formula{$i};
|
||||||
if ($i < strlen($this->_formula) - 1) {
|
if ($i < strlen($this->_formula) - 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};
|
||||||
//}
|
//}
|
||||||
|
|
@ -1175,9 +1116,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
}
|
}
|
||||||
if ($i < strlen($this->_formula) - 2) {
|
if ($i < strlen($this->_formula) - 2) {
|
||||||
$this->_lookahead = $this->_formula{$i+2};
|
$this->_lookahead = $this->_formula{$i+2};
|
||||||
}
|
} else { // if we run out of characters _lookahead becomes empty
|
||||||
// if we run out of characters _lookahead becomes empty
|
|
||||||
else {
|
|
||||||
$this->_lookahead = '';
|
$this->_lookahead = '';
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
|
|
@ -1194,8 +1133,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
*/
|
*/
|
||||||
function _match($token)
|
function _match($token)
|
||||||
{
|
{
|
||||||
switch($token)
|
switch($token) {
|
||||||
{
|
|
||||||
case SPREADSHEET_EXCEL_WRITER_ADD:
|
case SPREADSHEET_EXCEL_WRITER_ADD:
|
||||||
return $token;
|
return $token;
|
||||||
break;
|
break;
|
||||||
|
|
@ -1247,66 +1185,56 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// if it's a reference
|
// if it's a reference
|
||||||
if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/',$token) and
|
if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/', $token) &&
|
||||||
!ereg("[0-9]",$this->_lookahead) and
|
!ereg("[0-9]", $this->_lookahead) &&
|
||||||
($this->_lookahead != ':') and ($this->_lookahead != '.') and
|
($this->_lookahead != ':') && ($this->_lookahead != '.') &&
|
||||||
($this->_lookahead != '!'))
|
($this->_lookahead != '!'))
|
||||||
{
|
{
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z][0-9]+$/", $token) &&
|
||||||
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
!ereg("[0-9]", $this->_lookahead) &&
|
||||||
elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z][0-9]+$/",$token) and
|
($this->_lookahead != ':') && ($this->_lookahead != '.'))
|
||||||
!ereg("[0-9]",$this->_lookahead) and
|
|
||||||
($this->_lookahead != ':') and ($this->_lookahead != '.'))
|
|
||||||
{
|
{
|
||||||
|
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (preg_match("/^'\w+(\:\w+)?'\![A-Ia-i]?[A-Za-z][0-9]+$/", $token) &&
|
||||||
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
!ereg("[0-9]", $this->_lookahead) &&
|
||||||
elseif (preg_match("/^'\w+(\:\w+)?'\![A-Ia-i]?[A-Za-z][0-9]+$/",$token) and
|
($this->_lookahead != ':') && ($this->_lookahead != '.'))
|
||||||
!ereg("[0-9]",$this->_lookahead) and
|
|
||||||
($this->_lookahead != ':') and ($this->_lookahead != '.'))
|
|
||||||
{
|
{
|
||||||
|
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/", $token) &&
|
||||||
// if it's a range (A1:A2)
|
!ereg("[0-9]", $this->_lookahead))
|
||||||
elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/",$token) and
|
|
||||||
!ereg("[0-9]",$this->_lookahead))
|
|
||||||
{
|
{
|
||||||
|
// if it's a range (A1:A2)
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/", $token) &&
|
||||||
// if it's a range (A1..A2)
|
!ereg("[0-9]", $this->_lookahead))
|
||||||
elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/",$token) and
|
|
||||||
!ereg("[0-9]",$this->_lookahead))
|
|
||||||
{
|
{
|
||||||
|
// if it's a range (A1..A2)
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/", $token) &&
|
||||||
// If it's an external range like Sheet1!A1 or Sheet1:Sheet2!A1:B2
|
!ereg("[0-9]", $this->_lookahead))
|
||||||
elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$token) and
|
|
||||||
!ereg("[0-9]",$this->_lookahead))
|
|
||||||
{
|
{
|
||||||
|
// If it's an external range like Sheet1!A1 or Sheet1:Sheet2!A1:B2
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (preg_match("/^'\w+(\:\w+)?'\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/", $token) &&
|
||||||
// If it's an external range like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2
|
!ereg("[0-9]", $this->_lookahead))
|
||||||
elseif (preg_match("/^'\w+(\:\w+)?'\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$token) and
|
|
||||||
!ereg("[0-9]",$this->_lookahead))
|
|
||||||
{
|
{
|
||||||
|
// If it's an external range like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (is_numeric($token) &&
|
||||||
// If it's a number (check that it's not a sheet name or range)
|
(!is_numeric($token.$this->_lookahead) || ($this->_lookahead == '')) &&
|
||||||
elseif (is_numeric($token) and
|
($this->_lookahead != '!') && ($this->_lookahead != ':'))
|
||||||
(!is_numeric($token.$this->_lookahead) or ($this->_lookahead == '')) and
|
|
||||||
($this->_lookahead != '!') and ($this->_lookahead != ':'))
|
|
||||||
{
|
{
|
||||||
|
// If it's a number (check that it's not a sheet name or range)
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (ereg("^\"[^\"]{0,255}\"$", $token)) {
|
||||||
// If it's a string (of maximum 255 characters)
|
// If it's a string (of maximum 255 characters)
|
||||||
elseif (ereg("^\"[^\"]{0,255}\"$",$token))
|
|
||||||
{
|
|
||||||
return $token;
|
return $token;
|
||||||
}
|
} elseif (eregi("^[A-Z0-9\xc0-\xdc\.]+$", $token) && ($this->_lookahead == "("))
|
||||||
// if it's a function call
|
|
||||||
elseif (eregi("^[A-Z0-9\xc0-\xdc\.]+$",$token) and ($this->_lookahead == "("))
|
|
||||||
{
|
{
|
||||||
|
// if it's a function call
|
||||||
return $token;
|
return $token;
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
|
|
@ -1347,53 +1275,42 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
if (PEAR::isError($result)) {
|
if (PEAR::isError($result)) {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_LT)
|
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_LT) {
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_expression();
|
$result2 = $this->_expression();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
return $result2;
|
return $result2;
|
||||||
}
|
}
|
||||||
$result = $this->_createTree('ptgLT', $result, $result2);
|
$result = $this->_createTree('ptgLT', $result, $result2);
|
||||||
}
|
} elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_GT) {
|
||||||
elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_GT)
|
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_expression();
|
$result2 = $this->_expression();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
return $result2;
|
return $result2;
|
||||||
}
|
}
|
||||||
$result = $this->_createTree('ptgGT', $result, $result2);
|
$result = $this->_createTree('ptgGT', $result, $result2);
|
||||||
}
|
} elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_LE) {
|
||||||
elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_LE)
|
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_expression();
|
$result2 = $this->_expression();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
return $result2;
|
return $result2;
|
||||||
}
|
}
|
||||||
$result = $this->_createTree('ptgLE', $result, $result2);
|
$result = $this->_createTree('ptgLE', $result, $result2);
|
||||||
}
|
} elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_GE) {
|
||||||
elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_GE)
|
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_expression();
|
$result2 = $this->_expression();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
return $result2;
|
return $result2;
|
||||||
}
|
}
|
||||||
$result = $this->_createTree('ptgGE', $result, $result2);
|
$result = $this->_createTree('ptgGE', $result, $result2);
|
||||||
}
|
} elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_EQ) {
|
||||||
elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_EQ)
|
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_expression();
|
$result2 = $this->_expression();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
return $result2;
|
return $result2;
|
||||||
}
|
}
|
||||||
$result = $this->_createTree('ptgEQ', $result, $result2);
|
$result = $this->_createTree('ptgEQ', $result, $result2);
|
||||||
}
|
} elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_NE) {
|
||||||
elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_NE)
|
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_expression();
|
$result2 = $this->_expression();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
|
|
@ -1420,9 +1337,8 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$result = $this->_createTree($this->_current_token, '', '');
|
$result = $this->_createTree($this->_current_token, '', '');
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
} elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_SUB) {
|
||||||
// catch "-" Term
|
// catch "-" Term
|
||||||
elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_SUB) {
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_expression();
|
$result2 = $this->_expression();
|
||||||
$result = $this->_createTree('ptgUminus', $result2, '');
|
$result = $this->_createTree('ptgUminus', $result2, '');
|
||||||
|
|
@ -1432,20 +1348,17 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
if (PEAR::isError($result)) {
|
if (PEAR::isError($result)) {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
while (($this->_current_token == SPREADSHEET_EXCEL_WRITER_ADD) or
|
while (($this->_current_token == SPREADSHEET_EXCEL_WRITER_ADD) ||
|
||||||
($this->_current_token == SPREADSHEET_EXCEL_WRITER_SUB))
|
($this->_current_token == SPREADSHEET_EXCEL_WRITER_SUB))
|
||||||
{
|
{
|
||||||
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_ADD)
|
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_ADD) {
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_term();
|
$result2 = $this->_term();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
return $result2;
|
return $result2;
|
||||||
}
|
}
|
||||||
$result = $this->_createTree('ptgAdd', $result, $result2);
|
$result = $this->_createTree('ptgAdd', $result, $result2);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_term();
|
$result2 = $this->_term();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
|
|
@ -1484,7 +1397,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
if (PEAR::isError($result)) {
|
if (PEAR::isError($result)) {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
while (($this->_current_token == SPREADSHEET_EXCEL_WRITER_MUL) or
|
while (($this->_current_token == SPREADSHEET_EXCEL_WRITER_MUL) ||
|
||||||
($this->_current_token == SPREADSHEET_EXCEL_WRITER_DIV))
|
($this->_current_token == SPREADSHEET_EXCEL_WRITER_DIV))
|
||||||
{
|
{
|
||||||
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_MUL)
|
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_MUL)
|
||||||
|
|
@ -1495,9 +1408,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
return $result2;
|
return $result2;
|
||||||
}
|
}
|
||||||
$result = $this->_createTree('ptgMul', $result, $result2);
|
$result = $this->_createTree('ptgMul', $result, $result2);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$result2 = $this->_fact();
|
$result2 = $this->_fact();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
|
|
@ -1522,8 +1433,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
*/
|
*/
|
||||||
function _fact()
|
function _fact()
|
||||||
{
|
{
|
||||||
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_OPEN)
|
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_OPEN) {
|
||||||
{
|
|
||||||
$this->_advance(); // eat the "("
|
$this->_advance(); // eat the "("
|
||||||
$result = $this->_parenthesizedExpression();
|
$result = $this->_parenthesizedExpression();
|
||||||
if ($this->_current_token != SPREADSHEET_EXCEL_WRITER_CLOSE) {
|
if ($this->_current_token != SPREADSHEET_EXCEL_WRITER_CLOSE) {
|
||||||
|
|
@ -1533,57 +1443,43 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
// if it's a reference
|
// if it's a reference
|
||||||
if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/',$this->_current_token))
|
if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/', $this->_current_token)) {
|
||||||
{
|
|
||||||
$result = $this->_createTree($this->_current_token, '', '');
|
$result = $this->_createTree($this->_current_token, '', '');
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
} elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z][0-9]+$/", $this->_current_token)) {
|
||||||
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
||||||
elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z][0-9]+$/",$this->_current_token))
|
|
||||||
{
|
|
||||||
$result = $this->_createTree($this->_current_token, '', '');
|
$result = $this->_createTree($this->_current_token, '', '');
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
} elseif (preg_match("/^'\w+(\:\w+)?'\![A-Ia-i]?[A-Za-z][0-9]+$/", $this->_current_token)) {
|
||||||
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
||||||
elseif (preg_match("/^'\w+(\:\w+)?'\![A-Ia-i]?[A-Za-z][0-9]+$/",$this->_current_token))
|
|
||||||
{
|
|
||||||
$result = $this->_createTree($this->_current_token, '', '');
|
$result = $this->_createTree($this->_current_token, '', '');
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
} elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/", $this->_current_token) ||
|
||||||
// if it's a range
|
preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/", $this->_current_token))
|
||||||
elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/",$this->_current_token) or
|
|
||||||
preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/",$this->_current_token))
|
|
||||||
{
|
{
|
||||||
|
// if it's a range
|
||||||
$result = $this->_current_token;
|
$result = $this->_current_token;
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
} elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/", $this->_current_token)) {
|
||||||
// If it's an external range (Sheet1!A1 or Sheet1!A1:B2)
|
// If it's an external range (Sheet1!A1 or Sheet1!A1:B2)
|
||||||
elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$this->_current_token))
|
|
||||||
{
|
|
||||||
$result = $this->_current_token;
|
$result = $this->_current_token;
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
} elseif (preg_match("/^'\w+(\:\w+)?'\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$this->_current_token)) {
|
||||||
// If it's an external range ('Sheet1'!A1 or 'Sheet1'!A1:B2)
|
// If it's an external range ('Sheet1'!A1 or 'Sheet1'!A1:B2)
|
||||||
elseif (preg_match("/^'\w+(\:\w+)?'\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$this->_current_token))
|
|
||||||
{
|
|
||||||
$result = $this->_current_token;
|
$result = $this->_current_token;
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
} elseif (is_numeric($this->_current_token)) {
|
||||||
elseif (is_numeric($this->_current_token))
|
|
||||||
{
|
|
||||||
$result = $this->_createTree($this->_current_token, '', '');
|
$result = $this->_createTree($this->_current_token, '', '');
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
} elseif (eregi("^[A-Z0-9\xc0-\xdc\.]+$",$this->_current_token)) {
|
||||||
// if it's a function call
|
// if it's a function call
|
||||||
elseif (eregi("^[A-Z0-9\xc0-\xdc\.]+$",$this->_current_token))
|
|
||||||
{
|
|
||||||
$result = $this->_func();
|
$result = $this->_func();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
@ -1605,16 +1501,13 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$function = $this->_current_token;
|
$function = $this->_current_token;
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
$this->_advance(); // eat the "("
|
$this->_advance(); // eat the "("
|
||||||
while ($this->_current_token != ')')
|
while ($this->_current_token != ')') {
|
||||||
{
|
if ($num_args > 0) {
|
||||||
if ($num_args > 0)
|
|
||||||
{
|
|
||||||
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_COMA ||
|
if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_COMA ||
|
||||||
$this->_current_token == SPREADSHEET_EXCEL_WRITER_SEMICOLON)
|
$this->_current_token == SPREADSHEET_EXCEL_WRITER_SEMICOLON)
|
||||||
{
|
{
|
||||||
$this->_advance(); // eat the "," or ";"
|
$this->_advance(); // eat the "," or ";"
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return $this->raiseError("Syntax error: comma expected in ".
|
return $this->raiseError("Syntax error: comma expected in ".
|
||||||
"function $function, arg #{$num_args}");
|
"function $function, arg #{$num_args}");
|
||||||
}
|
}
|
||||||
|
|
@ -1623,9 +1516,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
return $result2;
|
return $result2;
|
||||||
}
|
}
|
||||||
$result = $this->_createTree('arg', $result, $result2);
|
$result = $this->_createTree('arg', $result, $result2);
|
||||||
}
|
} else { // first argument
|
||||||
else // first argument
|
|
||||||
{
|
|
||||||
$result2 = $this->_condition();
|
$result2 = $this->_condition();
|
||||||
if (PEAR::isError($result2)) {
|
if (PEAR::isError($result2)) {
|
||||||
return $result2;
|
return $result2;
|
||||||
|
|
@ -1690,36 +1581,29 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
function toReversePolish($tree = array())
|
function toReversePolish($tree = array())
|
||||||
{
|
{
|
||||||
$polish = ""; // the string we are going to return
|
$polish = ""; // the string we are going to return
|
||||||
if (empty($tree)) // If it's the first call use _parse_tree
|
if (empty($tree)) { // If it's the first call use _parse_tree
|
||||||
{
|
|
||||||
$tree = $this->_parse_tree;
|
$tree = $this->_parse_tree;
|
||||||
}
|
}
|
||||||
if (is_array($tree['left']))
|
if (is_array($tree['left'])) {
|
||||||
{
|
|
||||||
$converted_tree = $this->toReversePolish($tree['left']);
|
$converted_tree = $this->toReversePolish($tree['left']);
|
||||||
if (PEAR::isError($converted_tree)) {
|
if (PEAR::isError($converted_tree)) {
|
||||||
return $converted_tree;
|
return $converted_tree;
|
||||||
}
|
}
|
||||||
$polish .= $converted_tree;
|
$polish .= $converted_tree;
|
||||||
}
|
} elseif ($tree['left'] != '') { // It's a final node
|
||||||
elseif ($tree['left'] != '') // It's a final node
|
|
||||||
{
|
|
||||||
$converted_tree = $this->_convert($tree['left']);
|
$converted_tree = $this->_convert($tree['left']);
|
||||||
if (PEAR::isError($converted_tree)) {
|
if (PEAR::isError($converted_tree)) {
|
||||||
return $converted_tree;
|
return $converted_tree;
|
||||||
}
|
}
|
||||||
$polish .= $converted_tree;
|
$polish .= $converted_tree;
|
||||||
}
|
}
|
||||||
if (is_array($tree['right']))
|
if (is_array($tree['right'])) {
|
||||||
{
|
|
||||||
$converted_tree = $this->toReversePolish($tree['right']);
|
$converted_tree = $this->toReversePolish($tree['right']);
|
||||||
if (PEAR::isError($converted_tree)) {
|
if (PEAR::isError($converted_tree)) {
|
||||||
return $converted_tree;
|
return $converted_tree;
|
||||||
}
|
}
|
||||||
$polish .= $converted_tree;
|
$polish .= $converted_tree;
|
||||||
}
|
} elseif ($tree['right'] != '') { // It's a final node
|
||||||
elseif ($tree['right'] != '') // It's a final node
|
|
||||||
{
|
|
||||||
$converted_tree = $this->_convert($tree['right']);
|
$converted_tree = $this->_convert($tree['right']);
|
||||||
if (PEAR::isError($converted_tree)) {
|
if (PEAR::isError($converted_tree)) {
|
||||||
return $converted_tree;
|
return $converted_tree;
|
||||||
|
|
@ -1727,17 +1611,16 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$polish .= $converted_tree;
|
$polish .= $converted_tree;
|
||||||
}
|
}
|
||||||
// if it's a function convert it here (so we can set it's arguments)
|
// if it's a function convert it here (so we can set it's arguments)
|
||||||
if (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/",$tree['value']) and
|
if (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/",$tree['value']) &&
|
||||||
!preg_match('/^([A-Ia-i]?[A-Za-z])(\d+)$/',$tree['value']) and
|
!preg_match('/^([A-Ia-i]?[A-Za-z])(\d+)$/',$tree['value']) &&
|
||||||
!preg_match("/^[A-Ia-i]?[A-Za-z](\d+)\.\.[A-Ia-i]?[A-Za-z](\d+)$/",$tree['value']) and
|
!preg_match("/^[A-Ia-i]?[A-Za-z](\d+)\.\.[A-Ia-i]?[A-Za-z](\d+)$/",$tree['value']) &&
|
||||||
!is_numeric($tree['value']) and
|
!is_numeric($tree['value']) &&
|
||||||
!isset($this->ptg[$tree['value']]))
|
!isset($this->ptg[$tree['value']]))
|
||||||
{
|
{
|
||||||
// left subtree for a function is always an array.
|
// left subtree for a function is always an array.
|
||||||
if ($tree['left'] != '') {
|
if ($tree['left'] != '') {
|
||||||
$left_tree = $this->toReversePolish($tree['left']);
|
$left_tree = $this->toReversePolish($tree['left']);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$left_tree = '';
|
$left_tree = '';
|
||||||
}
|
}
|
||||||
if (PEAR::isError($left_tree)) {
|
if (PEAR::isError($left_tree)) {
|
||||||
|
|
@ -1745,9 +1628,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
}
|
}
|
||||||
// add it's left subtree and return.
|
// add it's left subtree and return.
|
||||||
return $left_tree.$this->_convertFunction($tree['value'], $tree['right']);
|
return $left_tree.$this->_convertFunction($tree['value'], $tree['right']);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
$converted_tree = $this->_convert($tree['value']);
|
$converted_tree = $this->_convert($tree['value']);
|
||||||
if (PEAR::isError($converted_tree)) {
|
if (PEAR::isError($converted_tree)) {
|
||||||
return $converted_tree;
|
return $converted_tree;
|
||||||
|
|
|
||||||
|
|
@ -150,20 +150,25 @@ class Spreadsheet_Excel_Writer_Validator
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getOptions()
|
function _getOptions()
|
||||||
{
|
{
|
||||||
$options = $this->_type;
|
$options = $this->_type;
|
||||||
$options |= $this->_style << 3;
|
$options |= $this->_style << 3;
|
||||||
if($this->_fixedList)
|
if ($this->_fixedList) {
|
||||||
$options |= 0x80;
|
$options |= 0x80;
|
||||||
if($this->_blank)
|
}
|
||||||
$options |= 0x100;
|
if ($this->_blank) {
|
||||||
if(!$this->_incell)
|
$options |= 0x100;
|
||||||
$options |= 0x200;
|
}
|
||||||
if($this->_showprompt)
|
if (!$this->_incell) {
|
||||||
$options |= 0x40000;
|
$options |= 0x200;
|
||||||
if($this->_showerror)
|
}
|
||||||
$options |= 0x80000;
|
if ($this->_showprompt) {
|
||||||
|
$options |= 0x40000;
|
||||||
|
}
|
||||||
|
if ($this->_showerror) {
|
||||||
|
$options |= 0x80000;
|
||||||
|
}
|
||||||
$options |= $this->_operator << 20;
|
$options |= $this->_operator << 20;
|
||||||
|
|
||||||
return $options;
|
return $options;
|
||||||
|
|
|
||||||
|
|
@ -32,12 +32,12 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once('Spreadsheet/Excel/Writer/Format.php');
|
require_once 'Spreadsheet/Excel/Writer/Format.php';
|
||||||
require_once('Spreadsheet/Excel/Writer/BIFFwriter.php');
|
require_once 'Spreadsheet/Excel/Writer/BIFFwriter.php';
|
||||||
require_once('Spreadsheet/Excel/Writer/Worksheet.php');
|
require_once 'Spreadsheet/Excel/Writer/Worksheet.php';
|
||||||
require_once('Spreadsheet/Excel/Writer/Parser.php');
|
require_once 'Spreadsheet/Excel/Writer/Parser.php';
|
||||||
require_once('OLE/PPS/Root.php');
|
require_once 'OLE/PPS/Root.php';
|
||||||
require_once('OLE/PPS/File.php');
|
require_once 'OLE/PPS/File.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for generating Excel Spreadsheets
|
* Class for generating Excel Spreadsheets
|
||||||
|
|
@ -327,8 +327,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 ($name == $this->_worksheets[$i]->getName()) {
|
||||||
return $this->raiseError("Worksheet '$name' already exists");
|
return $this->raiseError("Worksheet '$name' already exists");
|
||||||
}
|
}
|
||||||
|
|
@ -357,7 +356,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
*/
|
*/
|
||||||
function &addFormat($properties = array())
|
function &addFormat($properties = array())
|
||||||
{
|
{
|
||||||
$format = new Spreadsheet_Excel_Writer_Format($this->_BIFF_version, $this->_xf_index,$properties);
|
$format = new Spreadsheet_Excel_Writer_Format($this->_BIFF_version, $this->_xf_index, $properties);
|
||||||
$this->_xf_index += 1;
|
$this->_xf_index += 1;
|
||||||
$this->_formats[] = &$format;
|
$this->_formats[] = &$format;
|
||||||
return $format;
|
return $format;
|
||||||
|
|
@ -371,7 +370,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
*/
|
*/
|
||||||
function &addValidator()
|
function &addValidator()
|
||||||
{
|
{
|
||||||
include_once('Spreadsheet/Excel/Writer/Validator.php');
|
include_once 'Spreadsheet/Excel/Writer/Validator.php';
|
||||||
/* FIXME: check for successful inclusion*/
|
/* FIXME: check for successful inclusion*/
|
||||||
$valid = new Spreadsheet_Excel_Writer_Validator($this->_parser);
|
$valid = new Spreadsheet_Excel_Writer_Validator($this->_parser);
|
||||||
return $valid;
|
return $valid;
|
||||||
|
|
@ -387,7 +386,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
* @param integer $blue blue RGB value [0-255]
|
* @param integer $blue blue RGB value [0-255]
|
||||||
* @return integer The palette index for the custom color
|
* @return integer The palette index for the custom color
|
||||||
*/
|
*/
|
||||||
function setCustomColor($index,$red,$green,$blue)
|
function setCustomColor($index, $red, $green, $blue)
|
||||||
{
|
{
|
||||||
// Match a HTML #xxyyzz style parameter
|
// Match a HTML #xxyyzz style parameter
|
||||||
/*if (defined $_[1] and $_[1] =~ /^#(\w\w)(\w\w)(\w\w)/ ) {
|
/*if (defined $_[1] and $_[1] =~ /^#(\w\w)(\w\w)(\w\w)/ ) {
|
||||||
|
|
@ -401,9 +400,9 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that the colour components are in the right range
|
// Check that the colour components are in the right range
|
||||||
if ( ($red < 0 or $red > 255) or
|
if (($red < 0 or $red > 255) ||
|
||||||
($green < 0 or $green > 255) or
|
($green < 0 or $green > 255) ||
|
||||||
($blue < 0 or $blue > 255) )
|
($blue < 0 or $blue > 255))
|
||||||
{
|
{
|
||||||
return $this->raiseError("Color component outside range: 0 <= color <= 255");
|
return $this->raiseError("Color component outside range: 0 <= color <= 255");
|
||||||
}
|
}
|
||||||
|
|
@ -499,7 +498,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// Calculate the number of selected worksheet tabs and call the finalization
|
// Calculate the number of selected worksheet tabs and call the finalization
|
||||||
// methods for each worksheet
|
// methods for each worksheet
|
||||||
$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 ($this->_worksheets[$i]->selected) {
|
if ($this->_worksheets[$i]->selected) {
|
||||||
$this->_selected++;
|
$this->_selected++;
|
||||||
}
|
}
|
||||||
|
|
@ -528,7 +527,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$this->_calcSheetOffsets();
|
$this->_calcSheetOffsets();
|
||||||
|
|
||||||
// Add BOUNDSHEET records
|
// Add BOUNDSHEET records
|
||||||
for ($i=0; $i < $total_worksheets; $i++) {
|
for ($i = 0; $i < $total_worksheets; $i++) {
|
||||||
$this->_storeBoundsheet($this->_worksheets[$i]->name,$this->_worksheets[$i]->offset);
|
$this->_storeBoundsheet($this->_worksheets[$i]->name,$this->_worksheets[$i]->offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -589,8 +588,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
}
|
}
|
||||||
$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);
|
||||||
}
|
}
|
||||||
|
|
@ -615,8 +613,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
{
|
{
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$boundsheet_length = 12; // fixed length for a BOUNDSHEET record
|
$boundsheet_length = 12; // fixed length for a BOUNDSHEET record
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$boundsheet_length = 11;
|
$boundsheet_length = 11;
|
||||||
}
|
}
|
||||||
$EOF = 4;
|
$EOF = 4;
|
||||||
|
|
@ -634,12 +631,12 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
}
|
}
|
||||||
$total_worksheets = count($this->_worksheets);
|
$total_worksheets = count($this->_worksheets);
|
||||||
// add the length of the BOUNDSHEET records
|
// add the length of the BOUNDSHEET records
|
||||||
for ($i=0; $i < $total_worksheets; $i++) {
|
for ($i = 0; $i < $total_worksheets; $i++) {
|
||||||
$offset += $boundsheet_length + strlen($this->_worksheets[$i]->name);
|
$offset += $boundsheet_length + strlen($this->_worksheets[$i]->name);
|
||||||
}
|
}
|
||||||
$offset += $EOF;
|
$offset += $EOF;
|
||||||
|
|
||||||
for ($i=0; $i < $total_worksheets; $i++) {
|
for ($i = 0; $i < $total_worksheets; $i++) {
|
||||||
$this->_worksheets[$i]->offset = $offset;
|
$this->_worksheets[$i]->offset = $offset;
|
||||||
$offset += $this->_worksheets[$i]->_datasize;
|
$offset += $this->_worksheets[$i]->_datasize;
|
||||||
}
|
}
|
||||||
|
|
@ -660,7 +657,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// Note: Fonts are 0-indexed. According to the SDK there is no index 4,
|
// Note: Fonts are 0-indexed. According to the SDK there is no index 4,
|
||||||
// so the following fonts are 0, 1, 2, 3, 5
|
// so the following fonts are 0, 1, 2, 3, 5
|
||||||
//
|
//
|
||||||
for ($i=1; $i <= 5; $i++){
|
for ($i = 1; $i <= 5; $i++){
|
||||||
$this->_append($font);
|
$this->_append($font);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -674,14 +671,12 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$fonts[$key] = 0; // Index of the default font
|
$fonts[$key] = 0; // Index of the default font
|
||||||
|
|
||||||
$total_formats = count($this->_formats);
|
$total_formats = count($this->_formats);
|
||||||
for ($i=0; $i < $total_formats; $i++)
|
for ($i = 0; $i < $total_formats; $i++) {
|
||||||
{
|
|
||||||
$key = $this->_formats[$i]->getFontKey();
|
$key = $this->_formats[$i]->getFontKey();
|
||||||
if (isset($fonts[$key])) {
|
if (isset($fonts[$key])) {
|
||||||
// FONT has already been used
|
// FONT has already been used
|
||||||
$this->_formats[$i]->font_index = $fonts[$key];
|
$this->_formats[$i]->font_index = $fonts[$key];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Add a new FONT record
|
// Add a new FONT record
|
||||||
$fonts[$key] = $index;
|
$fonts[$key] = $index;
|
||||||
$this->_formats[$i]->font_index = $index;
|
$this->_formats[$i]->font_index = $index;
|
||||||
|
|
@ -707,17 +702,15 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// Iterate through the XF objects and write a FORMAT record if it isn't a
|
// Iterate through the XF objects and write a FORMAT record if it isn't a
|
||||||
// built-in format type and if the FORMAT string hasn't already been used.
|
// built-in format type and if the FORMAT string hasn't already been used.
|
||||||
$total_formats = count($this->_formats);
|
$total_formats = count($this->_formats);
|
||||||
for ($i=0; $i < $total_formats; $i++)
|
for ($i = 0; $i < $total_formats; $i++) {
|
||||||
{
|
|
||||||
$num_format = $this->_formats[$i]->_num_format;
|
$num_format = $this->_formats[$i]->_num_format;
|
||||||
|
|
||||||
// Check if $num_format is an index to a built-in format.
|
// Check if $num_format is an index to a built-in format.
|
||||||
// Also check for a string of zeros, which is a valid format string
|
// Also check for a string of zeros, which is a valid format string
|
||||||
// but would evaluate to zero.
|
// but would evaluate to zero.
|
||||||
//
|
//
|
||||||
if (!preg_match("/^0+\d/",$num_format))
|
if (!preg_match("/^0+\d/", $num_format)) {
|
||||||
{
|
if (preg_match("/^\d+$/", $num_format)) { // built-in format
|
||||||
if (preg_match("/^\d+$/",$num_format)) { // built-in format
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -725,8 +718,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
if (isset($hash_num_formats[$num_format])) {
|
if (isset($hash_num_formats[$num_format])) {
|
||||||
// FORMAT has already been used
|
// FORMAT has already been used
|
||||||
$this->_formats[$i]->_num_format = $hash_num_formats[$num_format];
|
$this->_formats[$i]->_num_format = $hash_num_formats[$num_format];
|
||||||
}
|
} else{
|
||||||
else{
|
|
||||||
// Add a new FORMAT
|
// Add a new FORMAT
|
||||||
$hash_num_formats[$num_format] = $index;
|
$hash_num_formats[$num_format] = $index;
|
||||||
$this->_formats[$i]->_num_format = $index;
|
$this->_formats[$i]->_num_format = $index;
|
||||||
|
|
@ -754,7 +746,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// The default font index is 0
|
// The default font index is 0
|
||||||
//
|
//
|
||||||
$format = $this->_tmp_format;
|
$format = $this->_tmp_format;
|
||||||
for ($i=0; $i <= 14; $i++) {
|
for ($i = 0; $i <= 14; $i++) {
|
||||||
$xf = $format->getXf('style'); // Style XF
|
$xf = $format->getXf('style'); // Style XF
|
||||||
$this->_append($xf);
|
$this->_append($xf);
|
||||||
}
|
}
|
||||||
|
|
@ -764,7 +756,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
|
|
||||||
// User defined XFs
|
// User defined XFs
|
||||||
$total_formats = count($this->_formats);
|
$total_formats = count($this->_formats);
|
||||||
for ($i=0; $i < $total_formats; $i++) {
|
for ($i = 0; $i < $total_formats; $i++) {
|
||||||
$xf = $this->_formats[$i]->getXf('cell');
|
$xf = $this->_formats[$i]->getXf('cell');
|
||||||
$this->_append($xf);
|
$this->_append($xf);
|
||||||
}
|
}
|
||||||
|
|
@ -808,8 +800,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$total_worksheets = count($this->_worksheets);
|
$total_worksheets = count($this->_worksheets);
|
||||||
for ($i = 0; $i < $total_worksheets; $i++) {
|
for ($i = 0; $i < $total_worksheets; $i++) {
|
||||||
// Write a Name record if the print area has been defined
|
// Write a Name record if the print area has been defined
|
||||||
if (isset($this->_worksheets[$i]->print_rowmin))
|
if (isset($this->_worksheets[$i]->print_rowmin)) {
|
||||||
{
|
|
||||||
$this->_storeNameShort(
|
$this->_storeNameShort(
|
||||||
$this->_worksheets[$i]->index,
|
$this->_worksheets[$i]->index,
|
||||||
0x06, // NAME type
|
0x06, // NAME type
|
||||||
|
|
@ -832,7 +823,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// Determine if row + col, row, col or nothing has been defined
|
// Determine if row + col, row, col or nothing has been defined
|
||||||
// and write the appropriate record
|
// and write the appropriate record
|
||||||
//
|
//
|
||||||
if (isset($rowmin) and isset($colmin)) {
|
if (isset($rowmin) && isset($colmin)) {
|
||||||
// Row and column titles have been defined.
|
// Row and column titles have been defined.
|
||||||
// Row title has been defined.
|
// Row title has been defined.
|
||||||
$this->_storeNameLong(
|
$this->_storeNameLong(
|
||||||
|
|
@ -843,8 +834,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$colmin,
|
$colmin,
|
||||||
$colmax
|
$colmax
|
||||||
);
|
);
|
||||||
}
|
} elseif (isset($rowmin)) {
|
||||||
elseif (isset($rowmin)) {
|
|
||||||
// Row title has been defined.
|
// Row title has been defined.
|
||||||
$this->_storeNameShort(
|
$this->_storeNameShort(
|
||||||
$this->_worksheets[$i]->index,
|
$this->_worksheets[$i]->index,
|
||||||
|
|
@ -854,8 +844,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
0x00,
|
0x00,
|
||||||
0xff
|
0xff
|
||||||
);
|
);
|
||||||
}
|
} elseif (isset($colmin)) {
|
||||||
elseif (isset($colmin)) {
|
|
||||||
// Column title has been defined.
|
// Column title has been defined.
|
||||||
$this->_storeNameShort(
|
$this->_storeNameShort(
|
||||||
$this->_worksheets[$i]->index,
|
$this->_worksheets[$i]->index,
|
||||||
|
|
@ -865,8 +854,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$colmin,
|
$colmin,
|
||||||
$colmax
|
$colmax
|
||||||
);
|
);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Print title hasn't been defined.
|
// Print title hasn't been defined.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -941,8 +929,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$record = 0x0085; // Record identifier
|
$record = 0x0085; // Record identifier
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$length = 0x08 + strlen($sheetname); // Number of bytes to follow
|
$length = 0x08 + strlen($sheetname); // Number of bytes to follow
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$length = 0x07 + strlen($sheetname); // Number of bytes to follow
|
$length = 0x07 + strlen($sheetname); // Number of bytes to follow
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -952,8 +939,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$data = pack("Vvv", $offset, $grbit, $cch);
|
$data = pack("Vvv", $offset, $grbit, $cch);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$data = pack("VvC", $offset, $grbit, $cch);
|
$data = pack("VvC", $offset, $grbit, $cch);
|
||||||
}
|
}
|
||||||
$this->_append($header.$data.$sheetname);
|
$this->_append($header.$data.$sheetname);
|
||||||
|
|
@ -1030,8 +1016,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$length = 5 + strlen($format); // Number of bytes to follow
|
$length = 5 + strlen($format); // Number of bytes to follow
|
||||||
$encoding = 0x0;
|
$encoding = 0x0;
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0500) {
|
||||||
elseif ($this->_BIFF_version == 0x0500) {
|
|
||||||
$length = 3 + strlen($format); // Number of bytes to follow
|
$length = 3 + strlen($format); // Number of bytes to follow
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1040,8 +1025,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$data = pack("vvC", $ifmt, $cch, $encoding);
|
$data = pack("vvC", $ifmt, $cch, $encoding);
|
||||||
}
|
} 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);
|
||||||
|
|
@ -1292,8 +1276,7 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
@ -1372,13 +1355,10 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// split string fits exactly into the remaining space.
|
// split string fits exactly into the remaining space.
|
||||||
if ($block_length > 0) {
|
if ($block_length > 0) {
|
||||||
$continue = 1;
|
$continue = 1;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$continue = 0;
|
$continue = 0;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Store the max size for this block
|
// Store the max size for this block
|
||||||
$this->_block_sizes[] = $written + $continue;
|
$this->_block_sizes[] = $written + $continue;
|
||||||
|
|
||||||
|
|
@ -1393,8 +1373,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
// one or more CONTINUE blocks
|
// one or more CONTINUE blocks
|
||||||
if ($block_length < $continue_limit) {
|
if ($block_length < $continue_limit) {
|
||||||
$written = $block_length;
|
$written = $block_length;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$written = 0;
|
$written = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1504,12 +1483,10 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
//
|
//
|
||||||
if ($block_length > 0) {
|
if ($block_length > 0) {
|
||||||
$continue = 1;
|
$continue = 1;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$continue = 0;
|
$continue = 0;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Not enough space to start the string in the current block
|
// Not enough space to start the string in the current block
|
||||||
$block_length -= $continue_limit - $space_remaining - $continue;
|
$block_length -= $continue_limit - $space_remaining - $continue;
|
||||||
$continue = 0;
|
$continue = 0;
|
||||||
|
|
@ -1533,8 +1510,7 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri
|
||||||
if ($block_length < $continue_limit) {
|
if ($block_length < $continue_limit) {
|
||||||
$this->_append($string);
|
$this->_append($string);
|
||||||
$written = $block_length;
|
$written = $block_length;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$written = 0;
|
$written = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,8 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once('Spreadsheet/Excel/Writer/Parser.php');
|
require_once 'Spreadsheet/Excel/Writer/Parser.php';
|
||||||
require_once('Spreadsheet/Excel/Writer/BIFFwriter.php');
|
require_once 'Spreadsheet/Excel/Writer/BIFFwriter.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for generating Excel Spreadsheets
|
* Class for generating Excel Spreadsheets
|
||||||
|
|
@ -470,8 +470,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if ( $fh) {
|
if ( $fh) {
|
||||||
// Store filehandle
|
// Store filehandle
|
||||||
$this->_filehandle = $fh;
|
$this->_filehandle = $fh;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// If tmpfile() fails store data in memory
|
// If tmpfile() fails store data in memory
|
||||||
$this->_using_tmpfile = false;
|
$this->_using_tmpfile = false;
|
||||||
}
|
}
|
||||||
|
|
@ -568,9 +567,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++) {
|
||||||
for ($i=0; $i < count($this->_colinfo); $i++) {
|
|
||||||
$this->_storeColinfo($this->_colinfo[$i]);
|
$this->_storeColinfo($this->_colinfo[$i]);
|
||||||
}
|
}
|
||||||
$this->_storeDefcol();
|
$this->_storeDefcol();
|
||||||
|
|
@ -621,8 +619,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$buffer = 4096;
|
$buffer = 4096;
|
||||||
|
|
||||||
// Return data stored in memory
|
// Return data stored in memory
|
||||||
if (isset($this->_data))
|
if (isset($this->_data)) {
|
||||||
{
|
|
||||||
$tmp = $this->_data;
|
$tmp = $this->_data;
|
||||||
unset($this->_data);
|
unset($this->_data);
|
||||||
$fh = $this->_filehandle;
|
$fh = $this->_filehandle;
|
||||||
|
|
@ -632,8 +629,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
return $tmp;
|
return $tmp;
|
||||||
}
|
}
|
||||||
// Return data stored on disk
|
// Return data stored on disk
|
||||||
if ($this->_using_tmpfile)
|
if ($this->_using_tmpfile) {
|
||||||
{
|
|
||||||
if ($tmp = fread($this->_filehandle, $buffer)) {
|
if ($tmp = fread($this->_filehandle, $buffer)) {
|
||||||
return $tmp;
|
return $tmp;
|
||||||
}
|
}
|
||||||
|
|
@ -654,7 +650,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
*/
|
*/
|
||||||
function setMerge($first_row, $first_col, $last_row, $last_col)
|
function setMerge($first_row, $first_col, $last_row, $last_col)
|
||||||
{
|
{
|
||||||
if (($last_row < $first_row) or ($last_col < $first_col)) {
|
if (($last_row < $first_row) || ($last_col < $first_col)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// don't check rowmin, rowmax, etc... because we don't know when this
|
// don't check rowmin, rowmax, etc... because we don't know when this
|
||||||
|
|
@ -965,8 +961,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$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
|
||||||
$this->title_rowmax = $last_row;
|
$this->title_rowmax = $last_row;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$this->title_rowmax = $first_row;
|
$this->title_rowmax = $first_row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -983,8 +978,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$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
|
||||||
$this->title_colmax = $last_col;
|
$this->title_colmax = $last_col;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$this->title_colmax = $first_col;
|
$this->title_colmax = $first_col;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1092,8 +1086,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
function setZoom($scale = 100)
|
function setZoom($scale = 100)
|
||||||
{
|
{
|
||||||
// Confine the scale to Excel's range
|
// Confine the scale to Excel's range
|
||||||
if ($scale < 10 or $scale > 400)
|
if ($scale < 10 || $scale > 400) {
|
||||||
{
|
|
||||||
$this->raiseError("Zoom factor $scale outside range: 10 <= zoom <= 400");
|
$this->raiseError("Zoom factor $scale outside range: 10 <= zoom <= 400");
|
||||||
$scale = 100;
|
$scale = 100;
|
||||||
}
|
}
|
||||||
|
|
@ -1111,8 +1104,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
function setPrintScale($scale = 100)
|
function setPrintScale($scale = 100)
|
||||||
{
|
{
|
||||||
// Confine the scale to Excel's range
|
// Confine the scale to Excel's range
|
||||||
if ($scale < 10 or $scale > 400)
|
if ($scale < 10 || $scale > 400) {
|
||||||
{
|
|
||||||
$this->raiseError("Print scale $scale outside range: 10 <= zoom <= 400");
|
$this->raiseError("Print scale $scale outside range: 10 <= zoom <= 400");
|
||||||
$scale = 100;
|
$scale = 100;
|
||||||
}
|
}
|
||||||
|
|
@ -1139,37 +1131,29 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
@_ = $this->_substituteCellref(@_);
|
@_ = $this->_substituteCellref(@_);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
|
||||||
// Match number
|
|
||||||
if (preg_match("/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/",$token)) {
|
if (preg_match("/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/",$token)) {
|
||||||
|
// Match number
|
||||||
return $this->writeNumber($row,$col,$token,$format);
|
return $this->writeNumber($row,$col,$token,$format);
|
||||||
}
|
} elseif (preg_match("/^[fh]tt?p:\/\//",$token)) {
|
||||||
// Match http or ftp URL
|
// Match http or ftp URL
|
||||||
elseif (preg_match("/^[fh]tt?p:\/\//",$token)) {
|
|
||||||
return $this->writeUrl($row, $col, $token, '', $format);
|
return $this->writeUrl($row, $col, $token, '', $format);
|
||||||
}
|
} elseif (preg_match("/^mailto:/",$token)) {
|
||||||
// Match mailto:
|
// Match mailto:
|
||||||
elseif (preg_match("/^mailto:/",$token)) {
|
|
||||||
return $this->writeUrl($row, $col, $token, '', $format);
|
return $this->writeUrl($row, $col, $token, '', $format);
|
||||||
}
|
} elseif (preg_match("/^(?:in|ex)ternal:/",$token)) {
|
||||||
// Match internal or external sheet link
|
// Match internal or external sheet link
|
||||||
elseif (preg_match("/^(?:in|ex)ternal:/",$token)) {
|
|
||||||
return $this->writeUrl($row, $col, $token, '', $format);
|
return $this->writeUrl($row, $col, $token, '', $format);
|
||||||
}
|
} elseif (preg_match("/^=/",$token)) {
|
||||||
// Match formula
|
// Match formula
|
||||||
elseif (preg_match("/^=/",$token)) {
|
|
||||||
return $this->writeFormula($row, $col, $token, $format);
|
return $this->writeFormula($row, $col, $token, $format);
|
||||||
}
|
} elseif (preg_match("/^@/",$token)) {
|
||||||
// Match formula
|
// Match formula
|
||||||
elseif (preg_match("/^@/",$token)) {
|
|
||||||
return $this->writeFormula($row, $col, $token, $format);
|
return $this->writeFormula($row, $col, $token, $format);
|
||||||
}
|
} elseif ($token == '') {
|
||||||
// Match blank
|
// Match blank
|
||||||
elseif ($token == '') {
|
|
||||||
return $this->writeBlank($row,$col,$format);
|
return $this->writeBlank($row,$col,$format);
|
||||||
}
|
} else {
|
||||||
// Default: match string
|
// Default: match string
|
||||||
else {
|
|
||||||
return $this->writeString($row,$col,$token,$format);
|
return $this->writeString($row,$col,$token,$format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1239,8 +1223,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
{
|
{
|
||||||
if ($format != 0) {
|
if ($format != 0) {
|
||||||
return($format->getXfIndex());
|
return($format->getXfIndex());
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return(0x0F);
|
return(0x0F);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1262,16 +1245,14 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
*/
|
*/
|
||||||
function _append($data)
|
function _append($data)
|
||||||
{
|
{
|
||||||
if ($this->_using_tmpfile)
|
if ($this->_using_tmpfile) {
|
||||||
{
|
|
||||||
// Add CONTINUE records if necessary
|
// Add CONTINUE records if necessary
|
||||||
if (strlen($data) > $this->_limit) {
|
if (strlen($data) > $this->_limit) {
|
||||||
$data = $this->_addContinue($data);
|
$data = $this->_addContinue($data);
|
||||||
}
|
}
|
||||||
fwrite($this->_filehandle,$data);
|
fwrite($this->_filehandle, $data);
|
||||||
$this->_datasize += strlen($data);
|
$this->_datasize += strlen($data);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
parent::_append($data);
|
parent::_append($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1291,21 +1272,21 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$cell = strtoupper($cell);
|
$cell = strtoupper($cell);
|
||||||
|
|
||||||
// Convert a column range: 'A:A' or 'B:G'
|
// Convert a column range: 'A:A' or 'B:G'
|
||||||
if (preg_match("/([A-I]?[A-Z]):([A-I]?[A-Z])/",$cell,$match)) {
|
if (preg_match("/([A-I]?[A-Z]):([A-I]?[A-Z])/", $cell, $match)) {
|
||||||
list($no_use, $col1) = $this->_cellToRowcol($match[1] .'1'); // Add a dummy row
|
list($no_use, $col1) = $this->_cellToRowcol($match[1] .'1'); // Add a dummy row
|
||||||
list($no_use, $col2) = $this->_cellToRowcol($match[2] .'1'); // Add a dummy row
|
list($no_use, $col2) = $this->_cellToRowcol($match[2] .'1'); // Add a dummy row
|
||||||
return(array($col1, $col2));
|
return(array($col1, $col2));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert a cell range: 'A1:B7'
|
// Convert a cell range: 'A1:B7'
|
||||||
if (preg_match("/\$?([A-I]?[A-Z]\$?\d+):\$?([A-I]?[A-Z]\$?\d+)/",$cell,$match)) {
|
if (preg_match("/\$?([A-I]?[A-Z]\$?\d+):\$?([A-I]?[A-Z]\$?\d+)/", $cell, $match)) {
|
||||||
list($row1, $col1) = $this->_cellToRowcol($match[1]);
|
list($row1, $col1) = $this->_cellToRowcol($match[1]);
|
||||||
list($row2, $col2) = $this->_cellToRowcol($match[2]);
|
list($row2, $col2) = $this->_cellToRowcol($match[2]);
|
||||||
return(array($row1, $col1, $row2, $col2));
|
return(array($row1, $col1, $row2, $col2));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert a cell reference: 'A1' or 'AD2000'
|
// Convert a cell reference: 'A1' or 'AD2000'
|
||||||
if (preg_match("/\$?([A-I]?[A-Z]\$?\d+)/",$cell)) {
|
if (preg_match("/\$?([A-I]?[A-Z]\$?\d+)/", $cell)) {
|
||||||
list($row1, $col1) = $this->_cellToRowcol($match[1]);
|
list($row1, $col1) = $this->_cellToRowcol($match[1]);
|
||||||
return(array($row1, $col1));
|
return(array($row1, $col1));
|
||||||
}
|
}
|
||||||
|
|
@ -1360,8 +1341,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
|
||||||
|
|
@ -1427,36 +1407,29 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$xf = $this->_XF($format); // The cell format
|
$xf = $this->_XF($format); // The cell format
|
||||||
|
|
||||||
// Check that row and col are valid and store max and min values
|
// Check that row and col are valid and store max and min values
|
||||||
if ($row >= $this->_xls_rowmax)
|
if ($row >= $this->_xls_rowmax) {
|
||||||
{
|
|
||||||
return(-2);
|
return(-2);
|
||||||
}
|
}
|
||||||
if ($col >= $this->_xls_colmax)
|
if ($col >= $this->_xls_colmax) {
|
||||||
{
|
|
||||||
return(-2);
|
return(-2);
|
||||||
}
|
}
|
||||||
if ($row < $this->_dim_rowmin)
|
if ($row < $this->_dim_rowmin) {
|
||||||
{
|
|
||||||
$this->_dim_rowmin = $row;
|
$this->_dim_rowmin = $row;
|
||||||
}
|
}
|
||||||
if ($row > $this->_dim_rowmax)
|
if ($row > $this->_dim_rowmax) {
|
||||||
{
|
|
||||||
$this->_dim_rowmax = $row;
|
$this->_dim_rowmax = $row;
|
||||||
}
|
}
|
||||||
if ($col < $this->_dim_colmin)
|
if ($col < $this->_dim_colmin) {
|
||||||
{
|
|
||||||
$this->_dim_colmin = $col;
|
$this->_dim_colmin = $col;
|
||||||
}
|
}
|
||||||
if ($col > $this->_dim_colmax)
|
if ($col > $this->_dim_colmax) {
|
||||||
{
|
|
||||||
$this->_dim_colmax = $col;
|
$this->_dim_colmax = $col;
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("vvv", $row, $col, $xf);
|
$data = pack("vvv", $row, $col, $xf);
|
||||||
$xl_double = pack("d", $num);
|
$xl_double = pack("d", $num);
|
||||||
if ($this->_byte_order) // if it's Big Endian
|
if ($this->_byte_order) { // if it's Big Endian
|
||||||
{
|
|
||||||
$xl_double = strrev($xl_double);
|
$xl_double = strrev($xl_double);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1492,33 +1465,26 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$str_error = 0;
|
$str_error = 0;
|
||||||
|
|
||||||
// Check that row and col are valid and store max and min values
|
// Check that row and col are valid and store max and min values
|
||||||
if ($row >= $this->_xls_rowmax)
|
if ($row >= $this->_xls_rowmax) {
|
||||||
{
|
|
||||||
return(-2);
|
return(-2);
|
||||||
}
|
}
|
||||||
if ($col >= $this->_xls_colmax)
|
if ($col >= $this->_xls_colmax) {
|
||||||
{
|
|
||||||
return(-2);
|
return(-2);
|
||||||
}
|
}
|
||||||
if ($row < $this->_dim_rowmin)
|
if ($row < $this->_dim_rowmin) {
|
||||||
{
|
|
||||||
$this->_dim_rowmin = $row;
|
$this->_dim_rowmin = $row;
|
||||||
}
|
}
|
||||||
if ($row > $this->_dim_rowmax)
|
if ($row > $this->_dim_rowmax) {
|
||||||
{
|
|
||||||
$this->_dim_rowmax = $row;
|
$this->_dim_rowmax = $row;
|
||||||
}
|
}
|
||||||
if ($col < $this->_dim_colmin)
|
if ($col < $this->_dim_colmin) {
|
||||||
{
|
|
||||||
$this->_dim_colmin = $col;
|
$this->_dim_colmin = $col;
|
||||||
}
|
}
|
||||||
if ($col > $this->_dim_colmax)
|
if ($col > $this->_dim_colmax) {
|
||||||
{
|
|
||||||
$this->_dim_colmax = $col;
|
$this->_dim_colmax = $col;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($strlen > $this->_xls_strmax) // LABEL must be < 255 chars
|
if ($strlen > $this->_xls_strmax) { // LABEL must be < 255 chars
|
||||||
{
|
|
||||||
$str = substr($str, 0, $this->_xls_strmax);
|
$str = substr($str, 0, $this->_xls_strmax);
|
||||||
$length = 0x0008 + $this->_xls_strmax;
|
$length = 0x0008 + $this->_xls_strmax;
|
||||||
$strlen = $this->_xls_strmax;
|
$strlen = $this->_xls_strmax;
|
||||||
|
|
@ -1610,28 +1576,22 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
//$length = 0x0006 + $note_length; // Bytes to follow
|
//$length = 0x0006 + $note_length; // Bytes to follow
|
||||||
|
|
||||||
// Check that row and col are valid and store max and min values
|
// Check that row and col are valid and store max and min values
|
||||||
if ($row >= $this->_xls_rowmax)
|
if ($row >= $this->_xls_rowmax) {
|
||||||
{
|
|
||||||
return(-2);
|
return(-2);
|
||||||
}
|
}
|
||||||
if ($col >= $this->_xls_colmax)
|
if ($col >= $this->_xls_colmax) {
|
||||||
{
|
|
||||||
return(-2);
|
return(-2);
|
||||||
}
|
}
|
||||||
if ($row < $this->_dim_rowmin)
|
if ($row < $this->_dim_rowmin) {
|
||||||
{
|
|
||||||
$this->_dim_rowmin = $row;
|
$this->_dim_rowmin = $row;
|
||||||
}
|
}
|
||||||
if ($row > $this->_dim_rowmax)
|
if ($row > $this->_dim_rowmax) {
|
||||||
{
|
|
||||||
$this->_dim_rowmax = $row;
|
$this->_dim_rowmax = $row;
|
||||||
}
|
}
|
||||||
if ($col < $this->_dim_colmin)
|
if ($col < $this->_dim_colmin) {
|
||||||
{
|
|
||||||
$this->_dim_colmin = $col;
|
$this->_dim_colmin = $col;
|
||||||
}
|
}
|
||||||
if ($col > $this->_dim_colmax)
|
if ($col > $this->_dim_colmax) {
|
||||||
{
|
|
||||||
$this->_dim_colmax = $col;
|
$this->_dim_colmax = $col;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1641,8 +1601,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$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);
|
||||||
|
|
@ -1672,8 +1631,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
function writeBlank($row, $col, $format)
|
function writeBlank($row, $col, $format)
|
||||||
{
|
{
|
||||||
// Don't write a blank cell unless it has a format
|
// Don't write a blank cell unless it has a format
|
||||||
if ($format == 0)
|
if ($format == 0) {
|
||||||
{
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1682,28 +1640,22 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$xf = $this->_XF($format); // The cell format
|
$xf = $this->_XF($format); // The cell format
|
||||||
|
|
||||||
// Check that row and col are valid and store max and min values
|
// Check that row and col are valid and store max and min values
|
||||||
if ($row >= $this->_xls_rowmax)
|
if ($row >= $this->_xls_rowmax) {
|
||||||
{
|
|
||||||
return(-2);
|
return(-2);
|
||||||
}
|
}
|
||||||
if ($col >= $this->_xls_colmax)
|
if ($col >= $this->_xls_colmax) {
|
||||||
{
|
|
||||||
return(-2);
|
return(-2);
|
||||||
}
|
}
|
||||||
if ($row < $this->_dim_rowmin)
|
if ($row < $this->_dim_rowmin) {
|
||||||
{
|
|
||||||
$this->_dim_rowmin = $row;
|
$this->_dim_rowmin = $row;
|
||||||
}
|
}
|
||||||
if ($row > $this->_dim_rowmax)
|
if ($row > $this->_dim_rowmax) {
|
||||||
{
|
|
||||||
$this->_dim_rowmax = $row;
|
$this->_dim_rowmax = $row;
|
||||||
}
|
}
|
||||||
if ($col < $this->_dim_colmin)
|
if ($col < $this->_dim_colmin) {
|
||||||
{
|
|
||||||
$this->_dim_colmin = $col;
|
$this->_dim_colmin = $col;
|
||||||
}
|
}
|
||||||
if ($col > $this->_dim_colmax)
|
if ($col > $this->_dim_colmax) {
|
||||||
{
|
|
||||||
$this->_dim_colmax = $col;
|
$this->_dim_colmax = $col;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1752,12 +1704,9 @@ 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');
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -1765,15 +1714,13 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
// Parse the formula using the parser in Parser.php
|
// Parse the formula using the parser in Parser.php
|
||||||
$error = $this->_parser->parse($formula);
|
$error = $this->_parser->parse($formula);
|
||||||
if ($this->isError($error))
|
if ($this->isError($error)) {
|
||||||
{
|
|
||||||
$this->writeString($row, $col, $error->getMessage());
|
$this->writeString($row, $col, $error->getMessage());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$formula = $this->_parser->toReversePolish();
|
$formula = $this->_parser->toReversePolish();
|
||||||
if ($this->isError($formula))
|
if ($this->isError($formula)) {
|
||||||
{
|
|
||||||
$this->writeString($row, $col, $formula->getMessage());
|
$this->writeString($row, $col, $formula->getMessage());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -1880,7 +1827,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$str = $url;
|
$str = $url;
|
||||||
}
|
}
|
||||||
$str_error = $this->writeString($row1, $col1, $str, $format);
|
$str_error = $this->writeString($row1, $col1, $str, $format);
|
||||||
if (($str_error == -2) or ($str_error == -3)) {
|
if (($str_error == -2) || ($str_error == -3)) {
|
||||||
return $str_error;
|
return $str_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1943,7 +1890,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$str = $url;
|
$str = $url;
|
||||||
}
|
}
|
||||||
$str_error = $this->writeString($row1, $col1, $str, $format);
|
$str_error = $this->writeString($row1, $col1, $str, $format);
|
||||||
if (($str_error == -2) or ($str_error == -3)) {
|
if (($str_error == -2) || ($str_error == -3)) {
|
||||||
return $str_error;
|
return $str_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2017,7 +1964,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$str = preg_replace('[\#]', ' - ', $url);
|
$str = preg_replace('[\#]', ' - ', $url);
|
||||||
}
|
}
|
||||||
$str_error = $this->writeString($row1, $col1, $str, $format);
|
$str_error = $this->writeString($row1, $col1, $str, $format);
|
||||||
if (($str_error == -2) or ($str_error == -3)) {
|
if (($str_error == -2) || ($str_error == -3)) {
|
||||||
return $str_error;
|
return $str_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2131,8 +2078,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
// 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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2180,8 +2126,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$length = 0x000A; // Number of bytes to follow
|
$length = 0x000A; // Number of bytes to follow
|
||||||
$data = pack("vvvvv", $row_min, $row_max,
|
$data = pack("vvvvv", $row_min, $row_max,
|
||||||
$col_min, $col_max, $reserved);
|
$col_min, $col_max, $reserved);
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$length = 0x000E;
|
$length = 0x000E;
|
||||||
$data = pack("VVvvv", $row_min, $row_max,
|
$data = pack("VVvvv", $row_min, $row_max,
|
||||||
$col_min, $col_max, $reserved);
|
$col_min, $col_max, $reserved);
|
||||||
|
|
@ -2200,8 +2145,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$record = 0x023E; // Record identifier
|
$record = 0x023E; // Record identifier
|
||||||
if ($this->_BIFF_version == 0x0500) {
|
if ($this->_BIFF_version == 0x0500) {
|
||||||
$length = 0x000A; // Number of bytes to follow
|
$length = 0x000A; // Number of bytes to follow
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$length = 0x0012;
|
$length = 0x0012;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2241,8 +2185,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if ($this->_BIFF_version == 0x0500) {
|
if ($this->_BIFF_version == 0x0500) {
|
||||||
$rgbHdr = 0x00000000; // Row/column heading and gridline color
|
$rgbHdr = 0x00000000; // Row/column heading and gridline color
|
||||||
$data .= pack("V", $rgbHdr);
|
$data .= pack("V", $rgbHdr);
|
||||||
}
|
} elseif ($this->_BIFF_version == 0x0600) {
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$rgbHdr = 0x0040; // Row/column heading and gridline color index
|
$rgbHdr = 0x0040; // Row/column heading and gridline color index
|
||||||
$zoom_factor_page_break = 0x0000;
|
$zoom_factor_page_break = 0x0000;
|
||||||
$zoom_factor_normal = 0x0000;
|
$zoom_factor_normal = 0x0000;
|
||||||
|
|
@ -2292,26 +2235,22 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
}
|
}
|
||||||
if (isset($col_array[2])) {
|
if (isset($col_array[2])) {
|
||||||
$coldx = $col_array[2];
|
$coldx = $col_array[2];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$coldx = 8.43;
|
$coldx = 8.43;
|
||||||
}
|
}
|
||||||
if (isset($col_array[3])) {
|
if (isset($col_array[3])) {
|
||||||
$format = $col_array[3];
|
$format = $col_array[3];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$format = 0;
|
$format = 0;
|
||||||
}
|
}
|
||||||
if (isset($col_array[4])) {
|
if (isset($col_array[4])) {
|
||||||
$grbit = $col_array[4];
|
$grbit = $col_array[4];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$grbit = 0;
|
$grbit = 0;
|
||||||
}
|
}
|
||||||
if (isset($col_array[5])) {
|
if (isset($col_array[5])) {
|
||||||
$level = $col_array[5];
|
$level = $col_array[5];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$level = 0;
|
$level = 0;
|
||||||
}
|
}
|
||||||
$record = 0x007D; // Record identifier
|
$record = 0x007D; // Record identifier
|
||||||
|
|
@ -2359,13 +2298,11 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
}
|
}
|
||||||
|
|
||||||
// Swap last row/col for first row/col as necessary
|
// Swap last row/col for first row/col as necessary
|
||||||
if ($rwFirst > $rwLast)
|
if ($rwFirst > $rwLast) {
|
||||||
{
|
|
||||||
list($rwFirst, $rwLast) = array($rwLast, $rwFirst);
|
list($rwFirst, $rwLast) = array($rwLast, $rwFirst);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($colFirst > $colLast)
|
if ($colFirst > $colLast) {
|
||||||
{
|
|
||||||
list($colFirst, $colLast) = array($colLast, $colFirst);
|
list($colFirst, $colLast) = array($colLast, $colFirst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2443,8 +2380,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$length = 0x02; // The following 2 bytes
|
$length = 0x02; // The following 2 bytes
|
||||||
$cch = 1; // The following byte
|
$cch = 1; // The following byte
|
||||||
$rgch = 0x02; // Self reference
|
$rgch = 0x02; // Self reference
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$length = 0x02 + strlen($sheetname);
|
$length = 0x02 + strlen($sheetname);
|
||||||
$cch = strlen($sheetname);
|
$cch = strlen($sheetname);
|
||||||
$rgch = 0x03; // Reference to a sheet in the current workbook
|
$rgch = 0x03; // Reference to a sheet in the current workbook
|
||||||
|
|
@ -2477,16 +2413,14 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$colLeft = $panes[3];
|
$colLeft = $panes[3];
|
||||||
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
|
||||||
|
|
||||||
// Code specific to frozen or thawed panes.
|
// Code specific to frozen or thawed panes.
|
||||||
if ($this->_frozen)
|
if ($this->_frozen) {
|
||||||
{
|
|
||||||
// Set default values for $rwTop and $colLeft
|
// Set default values for $rwTop and $colLeft
|
||||||
if (!isset($rwTop)) {
|
if (!isset($rwTop)) {
|
||||||
$rwTop = $y;
|
$rwTop = $y;
|
||||||
|
|
@ -2494,9 +2428,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if (!isset($colLeft)) {
|
if (!isset($colLeft)) {
|
||||||
$colLeft = $x;
|
$colLeft = $x;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
// Set default values for $rwTop and $colLeft
|
// Set default values for $rwTop and $colLeft
|
||||||
if (!isset($rwTop)) {
|
if (!isset($rwTop)) {
|
||||||
$rwTop = 0;
|
$rwTop = 0;
|
||||||
|
|
@ -2518,16 +2450,19 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
// Determine which pane should be active. There is also the undocumented
|
// Determine which pane should be active. There is also the undocumented
|
||||||
// option to override this should it be necessary: may be removed later.
|
// option to override this should it be necessary: may be removed later.
|
||||||
//
|
//
|
||||||
if (!isset($pnnAct))
|
if (!isset($pnnAct)) {
|
||||||
{
|
if ($x != 0 && $y != 0) {
|
||||||
if ($x != 0 and $y != 0)
|
|
||||||
$pnnAct = 0; // Bottom right
|
$pnnAct = 0; // Bottom right
|
||||||
if ($x != 0 and $y == 0)
|
}
|
||||||
|
if ($x != 0 && $y == 0) {
|
||||||
$pnnAct = 1; // Top right
|
$pnnAct = 1; // Top right
|
||||||
if ($x == 0 and $y != 0)
|
}
|
||||||
|
if ($x == 0 && $y != 0) {
|
||||||
$pnnAct = 2; // Bottom left
|
$pnnAct = 2; // Bottom left
|
||||||
if ($x == 0 and $y == 0)
|
}
|
||||||
|
if ($x == 0 && $y == 0) {
|
||||||
$pnnAct = 3; // Top left
|
$pnnAct = 3; // Top left
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->_active_pane = $pnnAct; // Used in _storeSelection
|
$this->_active_pane = $pnnAct; // Used in _storeSelection
|
||||||
|
|
@ -2579,8 +2514,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$numHdr = pack("d", $numHdr);
|
$numHdr = pack("d", $numHdr);
|
||||||
$numFtr = pack("d", $numFtr);
|
$numFtr = pack("d", $numFtr);
|
||||||
if ($this->_byte_order) // if it's Big Endian
|
if ($this->_byte_order) { // if it's Big Endian
|
||||||
{
|
|
||||||
$numHdr = strrev($numHdr);
|
$numHdr = strrev($numHdr);
|
||||||
$numFtr = strrev($numFtr);
|
$numFtr = strrev($numFtr);
|
||||||
}
|
}
|
||||||
|
|
@ -2613,15 +2547,13 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$encoding = 0x0; // TODO: Unicode support
|
$encoding = 0x0; // TODO: Unicode support
|
||||||
$length = 3 + $cch; // Bytes to follow
|
$length = 3 + $cch; // Bytes to follow
|
||||||
}
|
} 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);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$data = pack("C", $cch);
|
$data = pack("C", $cch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2642,15 +2574,13 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$encoding = 0x0; // TODO: Unicode support
|
$encoding = 0x0; // TODO: Unicode support
|
||||||
$length = 3 + $cch; // Bytes to follow
|
$length = 3 + $cch; // Bytes to follow
|
||||||
}
|
} 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);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$data = pack("C", $cch);
|
$data = pack("C", $cch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2706,8 +2636,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("d", $margin);
|
$data = pack("d", $margin);
|
||||||
if ($this->_byte_order) // if it's Big Endian
|
if ($this->_byte_order) { // if it's Big Endian
|
||||||
{
|
|
||||||
$data = strrev($data);
|
$data = strrev($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2728,8 +2657,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("d", $margin);
|
$data = pack("d", $margin);
|
||||||
if ($this->_byte_order) // if it's Big Endian
|
if ($this->_byte_order) { // if it's Big Endian
|
||||||
{
|
|
||||||
$data = strrev($data);
|
$data = strrev($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2750,8 +2678,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("d", $margin);
|
$data = pack("d", $margin);
|
||||||
if ($this->_byte_order) // if it's Big Endian
|
if ($this->_byte_order) { // if it's Big Endian
|
||||||
{
|
|
||||||
$data = strrev($data);
|
$data = strrev($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2772,8 +2699,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
$header = pack("vv", $record, $length);
|
||||||
$data = pack("d", $margin);
|
$data = pack("d", $margin);
|
||||||
if ($this->_byte_order) // if it's Big Endian
|
if ($this->_byte_order) { // if it's Big Endian
|
||||||
{
|
|
||||||
$data = strrev($data);
|
$data = strrev($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2887,8 +2813,7 @@ 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++)
|
for ($i = 0; $i < count($this->_colinfo); $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);
|
||||||
|
|
@ -2930,8 +2855,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
//
|
//
|
||||||
/*if ($this->_fit_page) {
|
/*if ($this->_fit_page) {
|
||||||
$grbit = 0x05c1;
|
$grbit = 0x05c1;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$grbit = 0x04c1;
|
$grbit = 0x04c1;
|
||||||
}*/
|
}*/
|
||||||
// Set the option flags
|
// Set the option flags
|
||||||
|
|
@ -2980,8 +2904,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$cbrk = count($breaks); // Number of page breaks
|
$cbrk = count($breaks); // Number of page breaks
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$length = 2 + 6*$cbrk; // Bytes to follow
|
$length = 2 + 6*$cbrk; // Bytes to follow
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$length = 2 + 2*$cbrk; // Bytes to follow
|
$length = 2 + 2*$cbrk; // Bytes to follow
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2992,8 +2915,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
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 {
|
|
||||||
$data .= pack("v", $break);
|
$data .= pack("v", $break);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3026,9 +2948,9 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
|
|
||||||
$record = 0x001a; // Record identifier
|
$record = 0x001a; // Record identifier
|
||||||
$cbrk = count($breaks); // Number of page breaks
|
$cbrk = count($breaks); // Number of page breaks
|
||||||
if ($this->_BIFF_version == 0x0600)
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$length = 2 + 6*$cbrk; // Bytes to follow
|
$length = 2 + 6*$cbrk; // Bytes to follow
|
||||||
else {
|
} else {
|
||||||
$length = 2 + 2*$cbrk; // Bytes to follow
|
$length = 2 + 2*$cbrk; // Bytes to follow
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3039,8 +2961,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
foreach ($breaks as $break) {
|
foreach ($breaks as $break) {
|
||||||
if ($this->_BIFF_version == 0x0600) {
|
if ($this->_BIFF_version == 0x0600) {
|
||||||
$data .= pack("vvv", $break, 0x0000, 0xffff);
|
$data .= pack("vvv", $break, 0x0000, 0xffff);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$data .= pack("v", $break);
|
$data .= pack("v", $break);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3079,7 +3000,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
function _storePassword()
|
function _storePassword()
|
||||||
{
|
{
|
||||||
// Exit unless sheet protection and password have been specified
|
// Exit unless sheet protection and password have been specified
|
||||||
if (($this->_protect == 0) or (!isset($this->_password))) {
|
if (($this->_protect == 0) || (!isset($this->_password))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3110,8 +3031,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
function insertBitmap($row, $col, $bitmap, $x = 0, $y = 0, $scale_x = 1, $scale_y = 1)
|
function insertBitmap($row, $col, $bitmap, $x = 0, $y = 0, $scale_x = 1, $scale_y = 1)
|
||||||
{
|
{
|
||||||
$bitmap_array = $this->_processBitmap($bitmap);
|
$bitmap_array = $this->_processBitmap($bitmap);
|
||||||
if ($this->isError($bitmap_array))
|
if ($this->isError($bitmap_array)) {
|
||||||
{
|
|
||||||
$this->writeString($row, $col, $bitmap_array->getMessage());
|
$this->writeString($row, $col, $bitmap_array->getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -3193,12 +3113,10 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
$row_end = $row_start; // Row containing bottom right corner of object
|
$row_end = $row_start; // Row containing bottom right corner of object
|
||||||
|
|
||||||
// Zero the specified offset if greater than the cell dimensions
|
// Zero the specified offset if greater than the cell dimensions
|
||||||
if ($x1 >= $this->_sizeCol($col_start))
|
if ($x1 >= $this->_sizeCol($col_start)) {
|
||||||
{
|
|
||||||
$x1 = 0;
|
$x1 = 0;
|
||||||
}
|
}
|
||||||
if ($y1 >= $this->_sizeRow($row_start))
|
if ($y1 >= $this->_sizeRow($row_start)) {
|
||||||
{
|
|
||||||
$y1 = 0;
|
$y1 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3220,14 +3138,18 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
// Bitmap isn't allowed to start or finish in a hidden cell, i.e. a cell
|
// Bitmap isn't allowed to start or finish in a hidden cell, i.e. a cell
|
||||||
// with zero eight or width.
|
// with zero eight or width.
|
||||||
//
|
//
|
||||||
if ($this->_sizeCol($col_start) == 0)
|
if ($this->_sizeCol($col_start) == 0) {
|
||||||
return;
|
return;
|
||||||
if ($this->_sizeCol($col_end) == 0)
|
}
|
||||||
|
if ($this->_sizeCol($col_end) == 0) {
|
||||||
return;
|
return;
|
||||||
if ($this->_sizeRow($row_start) == 0)
|
}
|
||||||
|
if ($this->_sizeRow($row_start) == 0) {
|
||||||
return;
|
return;
|
||||||
if ($this->_sizeRow($row_end) == 0)
|
}
|
||||||
|
if ($this->_sizeRow($row_end) == 0) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Convert the pixel values to the percentage value expected by Excel
|
// Convert the pixel values to the percentage value expected by Excel
|
||||||
$x1 = $x1 / $this->_sizeCol($col_start) * 1024;
|
$x1 = $x1 / $this->_sizeCol($col_start) * 1024;
|
||||||
|
|
@ -3257,12 +3179,10 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if (isset($this->col_sizes[$col])) {
|
if (isset($this->col_sizes[$col])) {
|
||||||
if ($this->col_sizes[$col] == 0) {
|
if ($this->col_sizes[$col] == 0) {
|
||||||
return(0);
|
return(0);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return(floor(7 * $this->col_sizes[$col] + 5));
|
return(floor(7 * $this->col_sizes[$col] + 5));
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return(64);
|
return(64);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3283,12 +3203,10 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if (isset($this->_row_sizes[$row])) {
|
if (isset($this->_row_sizes[$row])) {
|
||||||
if ($this->_row_sizes[$row] == 0) {
|
if ($this->_row_sizes[$row] == 0) {
|
||||||
return(0);
|
return(0);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return(floor(4/3 * $this->_row_sizes[$row]));
|
return(floor(4/3 * $this->_row_sizes[$row]));
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return(17);
|
return(17);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3511,8 +3429,7 @@ 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