Constants

REGEX_SHEET_TITLE_UNQUOTED

REGEX_SHEET_TITLE_UNQUOTED = '[^\\*\\:\\/\\\\\\?\\[\\]\\+\\-\\% \\\'\\^\\&\\<\\>\\=\\,\\;\\#\\(\\)\\"\\{\\}]+'

Constants

REGEX_SHEET_TITLE_QUOTED

REGEX_SHEET_TITLE_QUOTED = '(([^\\*\\:\\/\\\\\\?\\[\\]\\\'])+|(\\\'\\\')+)+'

Properties

$currentCharacter

$currentCharacter : int

The index of the character we are currently looking at.

Type

int

$currentToken

$currentToken : string

The token we are working on.

Type

string

$lookAhead

$lookAhead : string

The character ahead of the current char.

Type

string

$parseTree

$parseTree : string

The parse tree to be generated.

Type

string

$references

$references : array

Array of sheet references in the form of REF structures.

Type

array

$formula

$formula : string

The formula to parse.

Type

string

$externalSheets

$externalSheets : array

Array of external sheets.

Type

array

$ptg

$ptg : array

The Excel ptg indices.

Type

array

$functions

$functions : array

Thanks to Michael Meeks and Gnumeric for the initial arg values.

The following hash was generated by "function_locale.pl" in the distro. Refer to function_locale.pl for non-English function names.

The array elements are as follow: ptg: The Excel function ptg code. args: The number of arguments that the function takes: >=0 is a fixed number of arguments. -1 is a variable number of arguments. class: The reference, value or array class of the function args. vol: The function is volatile.

Type

array

$spreadsheet

$spreadsheet

Methods

__construct()

__construct(\PhpOffice\PhpSpreadsheet\Spreadsheet  $spreadsheet) : mixed

The class constructor.

Parameters

\PhpOffice\PhpSpreadsheet\Spreadsheet $spreadsheet

Returns

mixed —

setExtSheet()

setExtSheet(string  $name, int  $index) : void

This method is used to update the array of sheet names. It is called by the addWorksheet() method of the \PhpOffice\PhpSpreadsheet\Writer\Xls\Workbook class.

Parameters

string $name

The name of the worksheet being added

int $index

The index of the worksheet being added

parse()

parse(string  $formula) : mixed

The parsing method. It parses a formula.

Parameters

string $formula

the formula to parse, without the initial equal sign (=)

Returns

mixed —

true on success

toReversePolish()

toReversePolish(array  $tree = []) : string

Builds a string containing the tree in reverse polish notation (What you would use in a HP calculator stack).

The following tree:.

/
2 3

produces: "23+"

The following tree:

/
3 * /
6 A1

produces: "36A1*+"

In fact all operands, functions, references, etc... are written as ptg's

Parameters

array $tree

the optional tree to convert

Returns

string —

The tree in reverse polish notation

convert()

convert(mixed  $token) : mixed

Convert a token to the proper ptg value.

Parameters

mixed $token

the token to convert

Returns

mixed —

the converted token on success

convertNumber()

convertNumber(mixed  $num) : string

Convert a number token to ptgInt or ptgNum.

Parameters

mixed $num

an integer or double for conversion to its ptg value

Returns

string —

convertString()

convertString(string  $string) : mixed

Convert a string token to ptgStr.

Parameters

string $string

a string for conversion to its ptg value

Returns

mixed —

the converted token on success

convertFunction()

convertFunction(string  $token, int  $num_args) : string

Convert a function to a ptgFunc or ptgFuncVarV depending on the number of args that it takes.

Parameters

string $token

the name of the function for convertion to ptg value

int $num_args

the number of arguments the function receives

Returns

string —

The packed ptg for the function

convertRange2d()

convertRange2d(string  $range, int  $class) : string

Convert an Excel range such as A1:D4 to a ptgRefV.

Parameters

string $range

An Excel range in the A1:A2

int $class

Returns

string —

convertRange3d()

convertRange3d(string  $token) : mixed

Convert an Excel 3d range such as "Sheet1!A1:D4" or "Sheet1:Sheet2!A1:D4" to a ptgArea3d.

Parameters

string $token

an Excel range in the Sheet1!A1:A2 format

Returns

mixed —

the packed ptgArea3d token on success

convertRef2d()

convertRef2d(string  $cell) : string

Convert an Excel reference such as A1, $B2, C$3 or $D$4 to a ptgRefV.

Parameters

string $cell

An Excel cell reference

Returns

string —

The cell in packed() format with the corresponding ptg

convertRef3d()

convertRef3d(string  $cell) : mixed

Convert an Excel 3d reference such as "Sheet1!A1" or "Sheet1:Sheet2!A1" to a ptgRef3d.

Parameters

string $cell

An Excel cell reference

Returns

mixed —

the packed ptgRef3d token on success

convertError()

convertError(string  $errorCode) : string

Convert an error code to a ptgErr.

Parameters

string $errorCode

The error code for conversion to its ptg value

Returns

string —

The error code ptgErr

convertDefinedName()

convertDefinedName(string  $name) : void

Parameters

string $name

getRefIndex()

getRefIndex(string  $ext_ref) : mixed

Look up the REF index that corresponds to an external sheet name (or range). If it doesn't exist yet add it to the workbook's references array. It assumes all sheet names given must exist.

Parameters

string $ext_ref

The name of the external reference

Returns

mixed —

The reference index in packed() format on success

getSheetIndex()

getSheetIndex(string  $sheet_name) : int

Look up the index that corresponds to an external sheet name. The hash of sheet names is updated by the addworksheet() method of the \PhpOffice\PhpSpreadsheet\Writer\Xls\Workbook class.

Parameters

string $sheet_name

Sheet name

Returns

int —

The sheet index, -1 if the sheet was not found

cellToPackedRowcol()

cellToPackedRowcol(string  $cell) : array

pack() row and column into the required 3 or 4 byte format.

Parameters

string $cell

The Excel cell reference to be packed

Returns

array —

Array containing the row and column in packed() format

rangeToPackedRange()

rangeToPackedRange(string  $range) : array

pack() row range into the required 3 or 4 byte format.

Just using maximum col/rows, which is probably not the correct solution.

Parameters

string $range

The Excel range to be packed

Returns

array —

Array containing (row1,col1,row2,col2) in packed() format

cellToRowcol()

cellToRowcol(string  $cell) : array

Convert an Excel cell reference such as A1 or $B2 or C$3 or $D$4 to a zero indexed row and column number. Also returns two (0,1) values to indicate whether the row or column are relative references.

Parameters

string $cell

the Excel cell reference in A1 format

Returns

array —

advance()

advance() : mixed

Advance to the next valid token.

Returns

mixed —

match()

match(mixed  $token) : mixed

Checks if it's a valid token.

Parameters

mixed $token

the token to check

Returns

mixed —

The checked token or false on failure

condition()

condition() : mixed

It parses a condition. It assumes the following rule: Cond -> Expr [(">" | "<") Expr].

Returns

mixed —

The parsed ptg'd tree on success

expression()

expression() : mixed

It parses a expression. It assumes the following rule: Expr -> Term [("+" | "-") Term] -> "string" -> "-" Term : Negative value -> "+" Term : Positive value -> Error code.

Returns

mixed —

The parsed ptg'd tree on success

parenthesizedExpression()

parenthesizedExpression() : array

This function just introduces a ptgParen element in the tree, so that Excel doesn't get confused when working with a parenthesized formula afterwards.

Returns

array —

The parsed ptg'd tree

term()

term() : mixed

It parses a term. It assumes the following rule: Term -> Fact [("*" | "/") Fact].

Returns

mixed —

The parsed ptg'd tree on success

fact()

fact() : mixed

It parses a factor. It assumes the following rule: Fact -> ( Expr ) | CellRef | CellRange | Number | Function.

Returns

mixed —

The parsed ptg'd tree on success

func()

func() : mixed

It parses a function call. It assumes the following rule: Func -> ( Expr [,Expr]* ).

Returns

mixed —

The parsed ptg'd tree on success

createTree()

createTree(mixed  $value, mixed  $left, mixed  $right) : array

Creates a tree. In fact an array which may have one or two arrays (sub-trees) as elements.

Parameters

mixed $value

the value of this node

mixed $left

the left array (sub-tree) or a final node

mixed $right

the right array (sub-tree) or a final node

Returns

array —

A tree