support for sheet ranges (JT Hughes)
git-svn-id: https://svn.php.net/repository/pear/packages/Spreadsheet_Excel_Writer/trunk@125041 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
parent
de1cb768ec
commit
f1d0697e90
|
|
@ -542,6 +542,11 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
{
|
{
|
||||||
return($this->_convertRef3d($token));
|
return($this->_convertRef3d($token));
|
||||||
}
|
}
|
||||||
|
// match external references like Sheet1:Sheet2!A1
|
||||||
|
elseif (preg_match("/^([A-Za-z0-9_]+\:[A-Za-z0-9_]+\![A-I]?[A-Z])(\d+)$/",$token))
|
||||||
|
{
|
||||||
|
return($this->_convertRef3d($token));
|
||||||
|
}
|
||||||
// match ranges like A1:B2
|
// match ranges like A1:B2
|
||||||
elseif(preg_match("/^(\$)?[A-I]?[A-Z](\$)?(\d+)\:(\$)?[A-I]?[A-Z](\$)?(\d+)$/",$token))
|
elseif(preg_match("/^(\$)?[A-I]?[A-Z](\$)?(\d+)\:(\$)?[A-I]?[A-Z](\$)?(\d+)$/",$token))
|
||||||
{
|
{
|
||||||
|
|
@ -557,6 +562,11 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
{
|
{
|
||||||
return($this->_convertRange3d($token));
|
return($this->_convertRange3d($token));
|
||||||
}
|
}
|
||||||
|
// match external ranges like Sheet1:Sheet2!A1:B2
|
||||||
|
elseif (preg_match("/^([A-Za-z0-9_]+\:[A-Za-z0-9_]+\![A-I]?[A-Z])(\d+)\:([A-I]?[A-Z])(\d+)$/",$token))
|
||||||
|
{
|
||||||
|
return($this->_convertRange3d($token));
|
||||||
|
}
|
||||||
elseif(isset($this->ptg[$token])) // operators (including parentheses)
|
elseif(isset($this->ptg[$token])) // operators (including parentheses)
|
||||||
{
|
{
|
||||||
return(pack("C", $this->ptg[$token]));
|
return(pack("C", $this->ptg[$token]));
|
||||||
|
|
@ -1062,8 +1072,8 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
{
|
{
|
||||||
return $token;
|
return $token;
|
||||||
}
|
}
|
||||||
// If it's an external reference (Sheet1!A1)
|
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
||||||
elseif(eregi("^[A-Za-z0-9_]+\![A-I]?[A-Z][0-9]+$",$token) and
|
elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-I]?[A-Z][0-9]+$/",$token) and
|
||||||
!ereg("[0-9]",$this->_lookahead) and
|
!ereg("[0-9]",$this->_lookahead) and
|
||||||
($this->_lookahead != ':') and ($this->_lookahead != '.'))
|
($this->_lookahead != ':') and ($this->_lookahead != '.'))
|
||||||
{
|
{
|
||||||
|
|
@ -1081,11 +1091,11 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
{
|
{
|
||||||
return $token;
|
return $token;
|
||||||
}
|
}
|
||||||
// If it's a external range
|
// If it's an external range
|
||||||
elseif(eregi("^[A-Za-z0-9_]+\![A-I]?[A-Z][0-9]+:[A-I]?[A-Z][0-9]+$",$token) and
|
elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-I]?[A-Z][0-9]+:[A-I]?[A-Z][0-9]+$/",$token) and
|
||||||
!ereg("[0-9]",$this->_lookahead))
|
!ereg("[0-9]",$this->_lookahead))
|
||||||
{
|
{
|
||||||
return($token);
|
return $token;
|
||||||
}
|
}
|
||||||
// If it's a number (check that it's not a sheet name)
|
// If it's a number (check that it's not a sheet name)
|
||||||
elseif (is_numeric($token) and !is_numeric($token.$this->_lookahead) and
|
elseif (is_numeric($token) and !is_numeric($token.$this->_lookahead) and
|
||||||
|
|
@ -1321,8 +1331,8 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
// If it's an external reference (Sheet1!A1)
|
// If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1)
|
||||||
elseif(eregi("^[A-Za-z0-9_]+\![A-I]?[A-Z][0-9]+$",$this->_current_token))
|
elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-I]?[A-Z][0-9]+$/",$this->_current_token))
|
||||||
{
|
{
|
||||||
$result = $this->_createTree($this->_current_token, '', '');
|
$result = $this->_createTree($this->_current_token, '', '');
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
|
|
@ -1337,7 +1347,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
// If it's an external range (Sheet1!A1:B2)
|
// If it's an external range (Sheet1!A1:B2)
|
||||||
elseif(eregi("^[A-Za-z0-9_]+\![A-I]?[A-Z][0-9]+:[A-I]?[A-Z][0-9]+$",$this->_current_token))
|
elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-I]?[A-Z][0-9]+:[A-I]?[A-Z][0-9]+$/",$this->_current_token))
|
||||||
{
|
{
|
||||||
$result = $this->_current_token;
|
$result = $this->_current_token;
|
||||||
$this->_advance();
|
$this->_advance();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue