|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098 |
- # Calculation Engine
-
- ## Using the PhpSpreadsheet calculation engine
-
- ### Performing formula calculations
-
- As PhpSpreadsheet represents an in-memory spreadsheet, it also offers
- formula calculation capabilities. A cell can be of a value type
- (containing a number or text), or a formula type (containing a formula
- which can be evaluated). For example, the formula `=SUM(A1:A10)`
- evaluates to the sum of values in A1, A2, ..., A10.
-
- To calculate a formula, you can call the cell containing the formula’s
- method `getCalculatedValue()`, for example:
-
- ``` php
- $spreadsheet->getActiveSheet()->getCell('E11')->getCalculatedValue();
- ```
-
- If you write the following line of code in the invoice demo included
- with PhpSpreadsheet, it evaluates to the value "64":
-
- ![09-command-line-calculation.png](./images/09-command-line-calculation.png)
-
- Another nice feature of PhpSpreadsheet's formula parser, is that it can
- automatically adjust a formula when inserting/removing rows/columns.
- Here's an example:
-
- ![09-formula-in-cell-1.png](./images/09-formula-in-cell-1.png)
-
- You see that the formula contained in cell E11 is "SUM(E4:E9)". Now,
- when I write the following line of code, two new product lines are
- added:
-
- ``` php
- $spreadsheet->getActiveSheet()->insertNewRowBefore(7, 2);
- ```
-
- ![09-formula-in-cell-2.png](./images/09-formula-in-cell-2.png)
-
- Did you notice? The formula in the former cell E11 (now E13, as I
- inserted 2 new rows), changed to "SUM(E4:E11)". Also, the inserted cells
- duplicate style information of the previous cell, just like Excel's
- behaviour. Note that you can both insert rows and columns.
-
- ## Calculation Cache
-
- Once the Calculation engine has evaluated the formula in a cell, the result
- will be cached, so if you call `getCalculatedValue()` a second time for the
- same cell, the result will be returned from the cache rather than evaluating
- the formula a second time. This helps boost performance, because evaluating
- a formula is an expensive operation in terms of performance and speed.
-
- However, there may be times when you don't want this, perhaps you've changed
- the underlying data and need to re-evaluate the same formula with that new
- data.
-
- ```
- Calculation::getInstance($spreadsheet)->disableCalculationCache();
- ```
-
- Will disable calculation caching, and flush the current calculation cache.
-
- If you want only to flush the cache, then you can call
-
- ```
- Calculation::getInstance($spreadsheet)->clearCalculationCache();
- ```
-
- ## Known limitations
-
- There are some known limitations to the PhpSpreadsheet calculation
- engine. Most of them are due to the fact that an Excel formula is
- converted into PHP code before being executed. This means that Excel
- formula calculation is subject to PHP's language characteristics.
-
- ### Function that are not Supported in Xls
-
- Not all functions are supported, for a comprehensive list, read the
- [function list by name](../references/function-list-by-name.md).
-
- #### Operator precedence
-
- In Excel `+` wins over `&`, just like `*` wins over `+` in ordinary
- algebra. The former rule is not what one finds using the calculation
- engine shipped with PhpSpreadsheet.
-
- - [Reference for Excel](https://support.office.com/en-us/article/Calculation-operators-and-precedence-in-Excel-48be406d-4975-4d31-b2b8-7af9e0e2878a)
- - [Reference for PHP](https://php.net/manual/en/language.operators.php)
-
- #### Formulas involving numbers and text
-
- Formulas involving numbers and text may produce unexpected results or
- even unreadable file contents. For example, the formula `=3+"Hello "` is
- expected to produce an error in Excel (\#VALUE!). Due to the fact that
- PHP converts `"Hello "` to a numeric value (zero), the result of this
- formula is evaluated as 3 instead of evaluating as an error. This also
- causes the Excel document being generated as containing unreadable
- content.
-
- - [Reference for this behaviour in PHP](https://php.net/manual/en/language.types.string.php#language.types.string.conversion)
-
- #### Formulas don’t seem to be calculated in Excel2003 using compatibility pack?
-
- This is normal behaviour of the compatibility pack, Xlsx displays this
- correctly. Use `\PhpOffice\PhpSpreadsheet\Writer\Xls` if you really need
- calculated values, or force recalculation in Excel2003.
-
- ## Handling Date and Time Values
-
- ### Excel functions that return a Date and Time value
-
- Any of the Date and Time functions that return a date value in Excel can
- return either an Excel timestamp or a PHP timestamp or `DateTime` object.
-
- It is possible for scripts to change the data type used for returning
- date values by calling the
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType()`
- method:
-
- ``` php
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType($returnDateType);
- ```
-
- where the following constants can be used for `$returnDateType`:
-
- - `\PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_PHP_NUMERIC`
- - `\PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_PHP_OBJECT`
- - `\PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_EXCEL`
-
- The method will return a Boolean True on success, False on failure (e.g.
- if an invalid value is passed in for the return date type).
-
- The `\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType()`
- method can be used to determine the current value of this setting:
-
- ``` php
- $returnDateType = \PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType();
- ```
-
- The default is `RETURNDATE_PHP_NUMERIC`.
-
- #### PHP Timestamps
-
- If `RETURNDATE_PHP_NUMERIC` is set for the Return Date Type, then any
- date value returned to the calling script by any access to the Date and
- Time functions in Excel will be an integer value that represents the
- number of seconds from the PHP/Unix base date. The PHP/Unix base date
- (0) is 00:00 UST on 1st January 1970. This value can be positive or
- negative: so a value of -3600 would be 23:00 hrs on 31st December 1969;
- while a value of +3600 would be 01:00 hrs on 1st January 1970. This
- gives PHP a date range of between 14th December 1901 and 19th January
- 2038.
-
- #### PHP `DateTime` Objects
-
- If the Return Date Type is set for `RETURNDATE_PHP_OBJECT`, then any
- date value returned to the calling script by any access to the Date and
- Time functions in Excel will be a PHP `DateTime` object.
-
- #### Excel Timestamps
-
- If `RETURNDATE_EXCEL` is set for the Return Date Type, then the returned
- date value by any access to the Date and Time functions in Excel will be
- a floating point value that represents a number of days from the Excel
- base date. The Excel base date is determined by which calendar Excel
- uses: the Windows 1900 or the Mac 1904 calendar. 1st January 1900 is the
- base date for the Windows 1900 calendar while 1st January 1904 is the
- base date for the Mac 1904 calendar.
-
- It is possible for scripts to change the calendar used for calculating
- Excel date values by calling the
- `\PhpOffice\PhpSpreadsheet\Shared\Date::setExcelCalendar()` method:
-
- ``` php
- \PhpOffice\PhpSpreadsheet\Shared\Date::setExcelCalendar($baseDate);
- ```
-
- where the following constants can be used for `$baseDate`:
-
- - `\PhpOffice\PhpSpreadsheet\Shared\Date::CALENDAR_WINDOWS_1900`
- - `\PhpOffice\PhpSpreadsheet\Shared\Date::CALENDAR_MAC_1904`
-
- The method will return a Boolean True on success, False on failure (e.g.
- if an invalid value is passed in).
-
- The `\PhpOffice\PhpSpreadsheet\Shared\Date::getExcelCalendar()` method can
- be used to determine the current value of this setting:
-
- ``` php
- $baseDate = \PhpOffice\PhpSpreadsheet\Shared\Date::getExcelCalendar();
- ```
-
- The default is `CALENDAR_WINDOWS_1900`.
-
- #### Functions that return a Date/Time Value
-
- - DATE
- - DATEVALUE
- - EDATE
- - EOMONTH
- - NOW
- - TIME
- - TIMEVALUE
- - TODAY
-
- ### Excel functions that accept Date and Time values as parameters
-
- Date values passed in as parameters to a function can be an Excel
- timestamp or a PHP timestamp; or `DateTime` object; or a string containing a
- date value (e.g. '1-Jan-2009'). PhpSpreadsheet will attempt to identify
- their type based on the PHP datatype:
-
- An integer numeric value will be treated as a PHP/Unix timestamp. A real
- (floating point) numeric value will be treated as an Excel
- date/timestamp. Any PHP `DateTime` object will be treated as a `DateTime`
- object. Any string value (even one containing straight numeric data)
- will be converted to a `DateTime` object for validation as a date value
- based on the server locale settings, so passing through an ambiguous
- value of '07/08/2008' will be treated as 7th August 2008 if your server
- settings are UK, but as 8th July 2008 if your server settings are US.
- However, if you pass through a value such as '31/12/2008' that would be
- considered an error by a US-based server, but which is not ambiguous,
- then PhpSpreadsheet will attempt to correct this to 31st December 2008.
- If the content of the string doesn’t match any of the formats recognised
- by the php `DateTime` object implementation of `strtotime()` (which can
- handle a wider range of formats than the normal `strtotime()` function),
- then the function will return a `#VALUE` error. However, Excel
- recommends that you should always use date/timestamps for your date
- functions, and the recommendation for PhpSpreadsheet is the same: avoid
- strings because the result is not predictable.
-
- The same principle applies when data is being written to Excel. Cells
- containing date actual values (rather than Excel functions that return a
- date value) are always written as Excel dates, converting where
- necessary. If a cell formatted as a date contains an integer or
- `DateTime` object value, then it is converted to an Excel value for
- writing: if a cell formatted as a date contains a real value, then no
- conversion is required. Note that string values are written as strings
- rather than converted to Excel date timestamp values.
-
- #### Functions that expect a Date/Time Value
-
- - DATEDIF
- - DAY
- - DAYS360
- - EDATE
- - EOMONTH
- - HOUR
- - MINUTE
- - MONTH
- - NETWORKDAYS
- - SECOND
- - WEEKDAY
- - WEEKNUM
- - WORKDAY
- - YEAR
- - YEARFRAC
-
- ### Helper Methods
-
- In addition to the `setExcelCalendar()` and `getExcelCalendar()` methods, a
- number of other methods are available in the
- `\PhpOffice\PhpSpreadsheet\Shared\Date` class that can help when working
- with dates:
-
- #### \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($excelDate)
-
- Converts a date/time from an Excel date timestamp to return a PHP
- serialized date/timestamp.
-
- Note that this method does not trap for Excel dates that fall outside of
- the valid range for a PHP date timestamp.
-
- #### \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($excelDate)
-
- Converts a date from an Excel date/timestamp to return a PHP `DateTime`
- object.
-
- #### \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel($PHPDate)
-
- Converts a PHP serialized date/timestamp or a PHP `DateTime` object to
- return an Excel date timestamp.
-
- #### \PhpOffice\PhpSpreadsheet\Shared\Date::formattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0)
-
- Takes year, month and day values (and optional hour, minute and second
- values) and returns an Excel date timestamp value.
-
- ### Timezone support for Excel date timestamp conversions
-
- The default timezone for the date functions in PhpSpreadsheet is UST (Universal Standard Time).
- If a different timezone needs to be used, these methods are available:
-
- #### \PhpOffice\PhpSpreadsheet\Shared\Date::getDefaultTimezone()
-
- Returns the current timezone value PhpSpeadsheet is using to handle dates and times.
-
- #### \PhpOffice\PhpSpreadsheet\Shared\Date::setDefaultTimezone($timeZone)
-
- Sets the timezone for Excel date timestamp conversions to $timeZone,
- which must be a valid PHP DateTimeZone value.
- The return value is a Boolean, where true is success,
- and false is failure (e.g. an invalid DateTimeZone value was passed.)
-
- #### \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($excelDate, $timeZone)
- #### \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimeStamp($excelDate, $timeZone)
-
- These functions support a timezone as an optional second parameter.
- This applies a specific timezone to that function call without affecting the default PhpSpreadsheet Timezone.
-
- ## Function Reference
-
- ### Database Functions
-
- #### DAVERAGE
-
- The DAVERAGE function returns the average value of the cells in a column
- of a list or database that match conditions you specify.
-
- ##### Syntax
-
- DAVERAGE (database, field, criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The average value of the matching cells.
-
- This is the statistical mean.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DAVERAGE(A4:E10,"Yield",A1:B2)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
- // $retVal = 12
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DCOUNT
-
- The DCOUNT function returns the count of cells that contain a number in
- a column of a list or database matching conditions that you specify.
-
- ##### Syntax
-
- DCOUNT(database, [field], criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The count of the matching cells.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DCOUNT(A4:E10,"Height",A1:B3)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
-
- // $retVal = 3
- ```
-
- ##### Notes
-
- In MS Excel, The field argument is optional. If field is omitted, DCOUNT
- counts all records in the database that match the criteria. This logic
- has not yet been implemented in PhpSpreadsheet.
-
- #### DCOUNTA
-
- The DCOUNT function returns the count of cells that aren’t blank in a
- column of a list or database and that match conditions that you specify.
-
- ##### Syntax
-
- DCOUNTA(database, [field], criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The count of the matching cells.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DCOUNTA(A4:E10,"Yield",A1:A3)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
-
- // $retVal = 5
- ```
-
- ##### Notes
-
- In MS Excel, The field argument is optional. If field is omitted,
- DCOUNTA counts all records in the database that match the criteria. This
- logic has not yet been implemented in PhpSpreadsheet.
-
- #### DGET
-
- The DGET function extracts a single value from a column of a list or
- database that matches conditions that you specify.
-
- ##### Syntax
-
- DGET(database, field, criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **mixed** The value from the selected column of the matching row.
-
- #### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=GET(A4:E10,"Age",A1:F2)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
- // $retVal = 14
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DMAX
-
- The DMAX function returns the largest number in a column of a list or
- database that matches conditions you specify.
-
- ##### Syntax
-
- DMAX(database, field, criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The maximum value of the matching cells.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DMAX(A4:E10,"Profit",A1:B2)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
- // $retVal = 105
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DMIN
-
- The DMIN function returns the smallest number in a column of a list or
- database that matches conditions you specify.
-
- ##### Syntax
-
- DMIN(database, field, criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The minimum value of the matching cells.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DMIN(A4:E10,"Yield",A1:A3)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
- // $retVal = 6
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DPRODUCT
-
- The DPRODUCT function multiplies the values in a column of a list or
- database that match conditions that you specify.
-
- ##### Syntax
-
- DPRODUCT(database, field, criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The product of the matching cells.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DPRODUCT(A4:E10,"Yield",A1:B2)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
- // $retVal = 140
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DSTDEV
-
- The DSTDEV function estimates the standard deviation of a population
- based on a sample by using the numbers in a column of a list or database
- that match conditions that you specify.
-
- ##### Syntax
-
- DSTDEV(database, field, criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The estimated standard deviation of the matching cells.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DSTDEV(A4:E10,"Yield",A1:A3)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
- // $retVal = 2.97
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DSTDEVP
-
- The DSTDEVP function calculates the standard deviation of a population
- based on the entire population by using the numbers in a column of a
- list or database that match conditions that you specify.
-
- ##### Syntax
-
- DSTDEVP(database, field, criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The estimated standard deviation of the matching cells.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DSTDEVP(A4:E10,"Yield",A1:A3)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
- // $retVal = 2.65
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DSUM
-
- The DSUM function adds the numbers in a column of a list or database
- that matches conditions you specify.
-
- ##### Syntax
-
- DSUM(database, field, criteria)
-
- ##### Parameters
-
- **database** The range of cells that makes up the list or database.
-
- A database is a list of related data in which rows of related
- information are records, and columns of data are fields. The first row
- of the list contains labels for each column.
-
- **field** Indicates which column of the database is used in the
- function.
-
- Enter the column label as a string (enclosed between double quotation
- marks), such as "Age" or "Yield," or as a number (without quotation
- marks) that represents the position of the column within the list: 1 for
- the first column, 2 for the second column, and so on.
-
- **criteria** The range of cells that contains the conditions you
- specify.
-
- You can use any range for the criteria argument, as long as it includes
- at least one column label and at least one cell below the column label
- in which you specify a condition for the column.
-
- ##### Return Value
-
- **float** The total value of the matching cells.
-
- ##### Examples
-
- ``` php
- $database = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit' ],
- [ 'Apple', 18, 20, 14, 105.00 ],
- [ 'Pear', 12, 12, 10, 96.00 ],
- [ 'Cherry', 13, 14, 9, 105.00 ],
- [ 'Apple', 14, 15, 10, 75.00 ],
- [ 'Pear', 9, 8, 8, 76.80 ],
- [ 'Apple', 8, 9, 6, 45.00 ],
- ];
-
- $criteria = [
- [ 'Tree', 'Height', 'Age', 'Yield', 'Profit', 'Height' ],
- [ '="=Apple"', '>10', NULL, NULL, NULL, '<16' ],
- [ '="=Pear"', NULL, NULL, NULL, NULL, NULL ],
- ];
-
- $worksheet->fromArray( $criteria, NULL, 'A1' )
- ->fromArray( $database, NULL, 'A4' );
-
- $worksheet->setCellValue('A12', '=DMIN(A4:E10,"Profit",A1:A2)');
-
- $retVal = $worksheet->getCell('A12')->getCalculatedValue();
- // $retVal = 225
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DVAR
-
- Not yet documented.
-
- #### DVARP
-
- Not yet documented.
-
- ### Date and Time Functions
-
- Excel provides a number of functions for the manipulation of dates and
- times, and calculations based on date/time values. it is worth spending
- some time reading the section titled "Date and Time Values" on passing
- date parameters and returning date values to understand how
- PhpSpreadsheet reconciles the differences between dates and times in
- Excel and in PHP.
-
- #### DATE
-
- The DATE function returns an Excel timestamp or a PHP timestamp or `DateTime`
- object representing the date that is referenced by the parameters.
-
- ##### Syntax
-
- DATE(year, month, day)
-
- ##### Parameters
-
- **year** The year number.
-
- If this value is between 0 (zero) and 1899 inclusive (for the Windows
- 1900 calendar), or between 4 and 1903 inclusive (for the Mac 1904), then
- PhpSpreadsheet adds it to the Calendar base year, so a value of 108 will
- interpret the year as 2008 when using the Windows 1900 calendar, or 2012
- when using the Mac 1904 calendar.
-
- **month** The month number.
-
- If this value is greater than 12, the DATE function adds that number of
- months to the first month in the year specified. For example,
- DATE(2008,14,2) returns a value representing February 2, 2009.
-
- If the value of **month** is less than 1, then that value will be
- adjusted by -1, and that will then be subtracted from the first month of
- the year specified. For example, DATE(2008,0,2) returns a value
- representing December 2, 2007; while DATE(2008,-1,2) returns a value
- representing November 2, 2007.
-
- **day** The day number.
-
- If this value is greater than the number of days in the month (and year)
- specified, the DATE function adds that number of days to the first day
- in the month. For example, DATE(2008,1,35) returns a value representing
- February 4, 2008.
-
- If the value of **day** is less than 1, then that value will be adjusted
- by -1, and that will then be subtracted from the first month of the year
- specified. For example, DATE(2008,3,0) returns a value representing
- February 29, 2008; while DATE(2008,3,-2) returns a value representing
- February 27, 2008.
-
- ##### Return Value
-
- **mixed** A date/time stamp that corresponds to the given date.
-
- This could be a PHP timestamp value (integer), a PHP `DateTime` object,
- or an Excel timestamp value (real), depending on the value of
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType()`.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Year')
- ->setCellValue('A2', 'Month')
- ->setCellValue('A3', 'Day');
-
- $worksheet->setCellValue('B1', 2008)
- ->setCellValue('B2', 12)
- ->setCellValue('B3', 31);
-
- $worksheet->setCellValue('D1', '=DATE(B1,B2,B3)');
-
- $retVal = $worksheet->getCell('D1')->getCalculatedValue();
- // $retVal = 1230681600
- ```
-
- ``` php
- // We're going to be calling the same cell calculation multiple times,
- // and expecting different return values, so disable calculation cacheing
- \PhpOffice\PhpSpreadsheet\Calculation\Calculation::getInstance()->setCalculationCacheEnabled(FALSE);
-
- $saveFormat = \PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType();
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_EXCEL
- );
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATE'],
- [2008, 12, 31]
- );
- // $retVal = 39813.0
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_PHP_NUMERIC
- );
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATE'],
- [2008, 12, 31]
- );
- // $retVal = 1230681600
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType($saveFormat);
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### DATEDIF
-
- The DATEDIF function computes the difference between two dates in a
- variety of different intervals, such number of years, months, or days.
-
- ##### Syntax
-
- DATEDIF(date1, date2 [, unit])
-
- ##### Parameters
-
- **date1** First Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **date2** Second Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **unit** The interval type to use for the calculation
-
- This is a string, comprising one of the values listed below:
-
- Unit | Meaning | Description
- -----|---------------------------------|--------------------------------
- m | Months | Complete calendar months between the dates.
- d | Days | Number of days between the dates.
- y | Years | Complete calendar years between the dates.
- ym | Months Excluding Years | Complete calendar months between the dates as if they were of the same year.
- yd | Days Excluding Years | Complete calendar days between the dates as if they were of the same year.
- md | Days Excluding Years And Months | Complete calendar days between the dates as if they were of the same month and same year.
-
- The unit value is not case sensitive, and defaults to `d`.
-
- ##### Return Value
-
- **integer** An integer value that reflects the difference between the
- two dates.
-
- This could be the number of full days, months or years between the two
- dates, depending on the interval unit value passed into the function as
- the third parameter.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Year')
- ->setCellValue('A2', 'Month')
- ->setCellValue('A3', 'Day');
-
- $worksheet->setCellValue('B1', 2001)
- ->setCellValue('C1', 2009)
- ->setCellValue('B2', 7)
- ->setCellValue('C2', 12)
- ->setCellValue('B3', 1)
- ->setCellValue('C3', 31);
-
- $worksheet->setCellValue('D1', '=DATEDIF(DATE(B1,B2,B3),DATE(C1,C2,C3),"d")')
- ->setCellValue('D2', '=DATEDIF(DATE(B1,B2,B3),DATE(C1,C2,C3),"m")')
- ->setCellValue('D3', '=DATEDIF(DATE(B1,B2,B3),DATE(C1,C2,C3),"y")')
- ->setCellValue('D4', '=DATEDIF(DATE(B1,B2,B3),DATE(C1,C2,C3),"ym")')
- ->setCellValue('D5', '=DATEDIF(DATE(B1,B2,B3),DATE(C1,C2,C3),"yd")')
- ->setCellValue('D6', '=DATEDIF(DATE(B1,B2,B3),DATE(C1,C2,C3),"md")');
-
- $retVal = $worksheet->getCell('D1')->getCalculatedValue();
- // $retVal = 3105
-
- $retVal = $worksheet->getCell('D2')->getCalculatedValue();
- // $retVal = 101
-
- $retVal = $worksheet->getCell('D3')->getCalculatedValue();
- // $retVal = 8
-
- $retVal = $worksheet->getCell('D4')->getCalculatedValue();
- // $retVal = 5
-
- $retVal = $worksheet->getCell('D5')->getCalculatedValue();
- // $retVal = 183
-
- $retVal = $worksheet->getCell('D6')->getCalculatedValue();
- // $retVal = 30
- ```
-
- ``` php
- $date1 = 1193317015; // PHP timestamp for 25-Oct-2007
- $date2 = 1449579415; // PHP timestamp for 8-Dec-2015
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATEDIF'],
- [$date1, $date2, 'd']
- );
- // $retVal = 2966
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATEDIF'],
- [$date1, $date2, 'm']
- );
- // $retVal = 97
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATEDIF'],
- [$date1, $date2, 'y']
- );
- // $retVal = 8
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATEDIF'],
- [$date1, $date2, 'ym']
- );
- // $retVal = 1
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATEDIF'],
- [$date1, $date2, 'yd']
- );
- // $retVal = 44
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATEDIF'],
- [$date1, $date2, 'md']
- );
- // $retVal = 13
- ```
-
- ##### Notes
-
- If Date1 is later than Date2, DATEDIF will return a \#NUM! error.
-
- #### DATEVALUE
-
- The DATEVALUE function returns the date represented by a date formatted
- as a text string. Use DATEVALUE to convert a date represented by text to
- a serial number.
-
- ##### Syntax
-
- DATEVALUE(dateString)
-
- ##### Parameters
-
- **date** Date String.
-
- A string, representing a date value.
-
- ##### Return Value
-
- **mixed** A date/time stamp that corresponds to the given date.
-
- This could be a PHP timestamp value (integer), a PHP `DateTime` object,
- or an Excel timestamp value (real), depending on the value of
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType()`.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Date String');
- ->setCellValue('A2', '31-Dec-2008')
- ->setCellValue('A3', '31/12/2008')
- ->setCellValue('A4', '12-31-2008');
-
- $worksheet->setCellValue('B2', '=DATEVALUE(A2)')
- ->setCellValue('B3', '=DATEVALUE(A3)')
- ->setCellValue('B4', '=DATEVALUE(A4)');
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_EXCEL
- );
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
-
- $retVal = $worksheet->getCell('B4')->getCalculatedValue();
- // $retVal = 39813.0 for all cases
- ```
-
- ``` php
- // We're going to be calling the same cell calculation multiple times,
- // and expecting different return values, so disable calculation cacheing
- \PhpOffice\PhpSpreadsheet\Calculation\Calculation::getInstance()->setCalculationCacheEnabled(FALSE);
-
- $saveFormat = \PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType();
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_EXCEL
- );
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATEVALUE'],
- ['31-Dec-2008']
- );
- // $retVal = 39813.0
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_PHP_NUMERIC
- );
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DATEVALUE'],
- ['31-Dec-2008']
- );
- // $retVal = 1230681600
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType($saveFormat);
- ```
-
- ##### Notes
-
- DATEVALUE uses the php `DateTime` object implementation of `strtotime()`
- (which can handle a wider range of formats than the normal `strtotime()`
- function), and it is also called for any date parameter passed to other
- date functions (such as DATEDIF) when the parameter value is a string.
-
- **WARNING:-** PhpSpreadsheet accepts a wider range of date formats than
- MS Excel, so it is entirely possible that Excel will return a \#VALUE!
- error when passed a date string that it can’t interpret, while
- PhpSpreadsheet is able to translate that same string into a correct date
- value.
-
- Care should be taken in workbooks that use string formatted dates in
- calculations when writing to Xls or Xlsx.
-
- #### DAY
-
- The DAY function returns the day of a date. The day is given as an
- integer ranging from 1 to 31.
-
- ##### Syntax
-
- DAY(datetime)
-
- ##### Parameters
-
- **datetime** Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- ##### Return Value
-
- **integer** An integer value that reflects the day of the month.
-
- This is an integer ranging from 1 to 31.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Date String')
- ->setCellValue('A2', '31-Dec-2008')
- ->setCellValue('A3', '14-Feb-2008');
-
- $worksheet->setCellValue('B2', '=DAY(A2)')
- ->setCellValue('B3', '=DAY(A3)');
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 31
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 14
- ```
-
- ``` php
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DAYOFMONTH'],
- ['25-Dec-2008']
- );
- // $retVal = 25
- ```
-
- ##### Notes
-
- Note that the PhpSpreadsheet function is
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::DAYOFMONTH()` when the
- method is called statically.
-
- #### DAYS360
-
- The DAYS360 function computes the difference between two dates based on
- a 360 day year (12 equal periods of 30 days each) used by some
- accounting systems.
-
- ##### Syntax
-
- DAYS360(date1, date2 [, method])
-
- #### Parameters
-
- **date1** First Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **date2** Second Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **method** A boolean flag (TRUE or FALSE)
-
- This is a flag that determines which method to use in the calculation,
- based on the values listed below:
-
- method | Description
- -------|------------
- FALSE | U.S. (NASD) method. If the starting date is the last day of a month, it becomes equal to the 30th of the same month. If the ending date is the last day of a month and the starting date is earlier than the 30th of a month, the ending date becomes equal to the 1st of the next month; otherwise the ending date becomes equal to the 30th of the same month.
- TRUE | European method. Starting dates and ending dates that occur on the 31st of a month become equal to the 30th of the same month.
-
- The method value defaults to FALSE.
-
- ##### Return Value
-
- **integer** An integer value that reflects the difference between the
- two dates.
-
- This is the number of full days between the two dates, based on a 360
- day year.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('B1', 'Start Date')
- ->setCellValue('C1', 'End Date')
- ->setCellValue('A2', 'Year')
- ->setCellValue('A3', 'Month')
- ->setCellValue('A4', 'Day');
-
- $worksheet->setCellValue('B2', 2003)
- ->setCellValue('B3', 2)
- ->setCellValue('B4', 3);
-
- $worksheet->setCellValue('C2', 2007)
- ->setCellValue('C3', 5)
- ->setCellValue('C4', 31);
-
- $worksheet->setCellValue('E2', '=DAYS360(DATE(B2,B3,B4),DATE(C2,C3,C4))')
- ->setCellValue('E4', '=DAYS360(DATE(B2,B3,B4),DATE(C2,C3,C4),FALSE)');
-
- $retVal = $worksheet->getCell('E2')->getCalculatedValue();
- // $retVal = 1558
-
- $retVal = $worksheet->getCell('E4')->getCalculatedValue();
- // $retVal = 1557
- ```
-
- ``` php
- $date1 = 37655.0; // Excel timestamp for 25-Oct-2007
- $date2 = 39233.0; // Excel timestamp for 8-Dec-2015
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DAYS360'],
- [$date1, $date2]
- );
- // $retVal = 1558
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'DAYS360'],
- [$date1, $date2, TRUE]
- );
- // $retVal = 1557
- ```
-
- ##### Notes
-
- **WARNING:-** This function does not currently work with the Xls Writer
- when a PHP Boolean is used for the third (optional) parameter (as shown
- in the example above), and the writer will generate and error. It will
- work if a numeric 0 or 1 is used for the method parameter; or if the
- Excel `TRUE()` and `FALSE()` functions are used instead.
-
- #### EDATE
-
- The EDATE function returns an Excel timestamp or a PHP timestamp or `DateTime`
- object representing the date that is the indicated number of months
- before or after a specified date (the start\_date). Use EDATE to
- calculate maturity dates or due dates that fall on the same day of the
- month as the date of issue.
-
- ##### Syntax
-
- EDATE(baseDate, months)
-
- ##### Parameters
-
- **baseDate** Start Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **months** Number of months to add.
-
- An integer value indicating the number of months before or after
- baseDate. A positive value for months yields a future date; a negative
- value yields a past date.
-
- ##### Return Value
-
- **mixed** A date/time stamp that corresponds to the basedate + months.
-
- This could be a PHP timestamp value (integer), a PHP `DateTime` object,
- or an Excel timestamp value (real), depending on the value of
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType()`.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Date String')
- ->setCellValue('A2', '1-Jan-2008')
- ->setCellValue('A3', '29-Feb-2008');
-
- $worksheet->setCellValue('B2', '=EDATE(A2,5)')
- ->setCellValue('B3', '=EDATE(A3,-12)');
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_EXCEL
- );
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 39600.0 (1-Jun-2008)
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 39141.0 (28-Feb-2007)
- ```
-
- ``` php
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_EXCEL
- );
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'EDATE'],
- ['31-Oct-2008', 25]
- );
- // $retVal = 40512.0 (30-Nov-2010)
- ```
-
- ###### Notes
-
- **WARNING:-** This function is currently not supported by the Xls Writer
- because it is not a standard function within Excel 5, but an add-in from
- the Analysis ToolPak.
-
- #### EOMONTH
-
- The EOMONTH function returns an Excel timestamp or a PHP timestamp or
- `DateTime` object representing the date of the last day of the month that is
- the indicated number of months before or after a specified date (the
- start\_date). Use EOMONTH to calculate maturity dates or due dates that
- fall on the last day of the month.
-
- ##### Syntax
-
- EOMONTH(baseDate, months)
-
- ##### Parameters
-
- **baseDate** Start Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **months** Number of months to add.
-
- An integer value indicating the number of months before or after
- baseDate. A positive value for months yields a future date; a negative
- value yields a past date.
-
- ##### Return Value
-
- **mixed** A date/time stamp that corresponds to the last day of basedate
- + months.
-
- This could be a PHP timestamp value (integer), a PHP `DateTime` object,
- or an Excel timestamp value (real), depending on the value of
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType()`.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Date String')
- ->setCellValue('A2', '1-Jan-2000')
- ->setCellValue('A3', '14-Feb-2009');
-
- $worksheet->setCellValue('B2', '=EOMONTH(A2,5)')
- ->setCellValue('B3', '=EOMONTH(A3,-12)');
-
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(\PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_EXCEL);
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 39629.0 (30-Jun-2008)
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 39507.0 (29-Feb-2008)
- ```
-
- ``` php
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::setReturnDateType(
- \PhpOffice\PhpSpreadsheet\Calculation\Functions::RETURNDATE_EXCEL
- );
-
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'EOMONTH'],
- ['31-Oct-2008', 13]
- );
- // $retVal = 40147.0 (30-Nov-2010)
- ```
-
- ##### Notes
-
- **WARNING:-** This function is currently not supported by the Xls Writer
- because it is not a standard function within Excel 5, but an add-in from
- the Analysis ToolPak.
-
- #### HOUR
-
- The HOUR function returns the hour of a time value. The hour is given as
- an integer, ranging from 0 (12:00 A.M.) to 23 (11:00 P.M.).
-
- ##### Syntax
-
- HOUR(datetime)
-
- ##### Parameters
-
- **datetime** Time.
-
- An Excel date/time value, PHP date timestamp, PHP `DateTime` object, or a
- date/time represented as a string.
-
- ##### Return Value
-
- **integer** An integer value that reflects the hour of the day.
-
- This is an integer ranging from 0 to 23.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Time String')
- ->setCellValue('A2', '31-Dec-2008 17:30')
- ->setCellValue('A3', '14-Feb-2008 4:20 AM')
- ->setCellValue('A4', '14-Feb-2008 4:20 PM');
-
- $worksheet->setCellValue('B2', '=HOUR(A2)')
- ->setCellValue('B3', '=HOUR(A3)')
- ->setCellValue('B4', '=HOUR(A4)');
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 17
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 4
-
- $retVal = $worksheet->getCell('B4')->getCalculatedValue();
- // $retVal = 16
- ```
-
- ``` php
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'HOUROFDAY'],
- ['09:30']
- );
- // $retVal = 9
- ```
-
- ##### Notes
-
- Note that the PhpSpreadsheet function is
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::HOUROFDAY()` when the
- method is called statically.
-
- #### MINUTE
-
- The MINUTE function returns the minutes of a time value. The minute is
- given as an integer, ranging from 0 to 59.
-
- ##### Syntax
-
- MINUTE(datetime)
-
- ##### Parameters
-
- **datetime** Time.
-
- An Excel date/time value, PHP date timestamp, PHP `DateTime` object, or a
- date/time represented as a string.
-
- ##### Return Value
-
- **integer** An integer value that reflects the minutes within the hour.
-
- This is an integer ranging from 0 to 59.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Time String')
- ->setCellValue('A2', '31-Dec-2008 17:30')
- ->setCellValue('A3', '14-Feb-2008 4:20 AM')
- ->setCellValue('A4', '14-Feb-2008 4:45 PM');
-
- $worksheet->setCellValue('B2', '=MINUTE(A2)')
- ->setCellValue('B3', '=MINUTE(A3)')
- ->setCellValue('B4', '=MINUTE(A4)');
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 30
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 20
-
- $retVal = $worksheet->getCell('B4')->getCalculatedValue();
- // $retVal = 45
- ```
-
- ``` php
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'MINUTE'],
- ['09:30']
- );
- // $retVal = 30
- ```
-
- ##### Notes
-
- Note that the PhpSpreadsheet function is
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::MINUTE()` when the
- method is called statically.
-
- #### MONTH
-
- The MONTH function returns the month of a date. The month is given as an
- integer ranging from 1 to 12.
-
- ##### Syntax
-
- MONTH(datetime)
-
- ##### Parameters
-
- **datetime** Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- ##### Return Value
-
- **integer** An integer value that reflects the month of the year.
-
- This is an integer ranging from 1 to 12.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Date String');
- $worksheet->setCellValue('A2', '31-Dec-2008');
- $worksheet->setCellValue('A3', '14-Feb-2008');
-
- $worksheet->setCellValue('B2', '=MONTH(A2)');
- $worksheet->setCellValue('B3', '=MONTH(A3)');
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 12
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 2
- ```
-
- ``` php
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'MONTHOFYEAR'],
- ['14-July-2008']
- );
- // $retVal = 7
- ```
-
- #### Notes
-
- Note that the PhpSpreadsheet function is
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::MONTHOFYEAR()` when the
- method is called statically.
-
- #### NETWORKDAYS
-
- The NETWORKDAYS function returns the number of whole working days
- between a *start date* and an *end date*. Working days exclude weekends
- and any dates identified in *holidays*. Use NETWORKDAYS to calculate
- employee benefits that accrue based on the number of days worked during
- a specific term.
-
- ##### Syntax
-
- NETWORKDAYS(startDate, endDate [, holidays])
-
- ##### Parameters
-
- **startDate** Start Date of the period.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **endDate** End Date of the period.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **holidays** Optional array of Holiday dates.
-
- An optional range of one or more dates to exclude from the working
- calendar, such as state and federal holidays and floating holidays.
-
- The list can be either a range of cells that contains the dates or an
- array constant of Excel date values, PHP date timestamps, PHP date
- objects, or dates represented as strings.
-
- ##### Return Value
-
- **integer** Number of working days.
-
- The number of working days between startDate and endDate.
-
- ##### Examples
-
- ``` php
- ```
-
- ``` php
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- #### NOW
-
- The NOW function returns the current date and time.
-
- ##### Syntax
-
- NOW()
-
- ##### Parameters
-
- There are no parameters for the `NOW()` function.
-
- ##### Return Value
-
- **mixed** A date/time stamp that corresponds to the current date and
- time.
-
- This could be a PHP timestamp value (integer), a PHP `DateTime` object,
- or an Excel timestamp value (real), depending on the value of
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::getReturnDateType()`.
-
- ##### Examples
-
- ``` php
- ```
-
- ``` php
- ```
-
- ##### Notes
-
- Note that the PhpSpreadsheet function is
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::DATETIMENOW()` when the
- method is called statically.
-
- #### SECOND
-
- The SECOND function returns the seconds of a time value. The second is
- given as an integer, ranging from 0 to 59.
-
- ##### Syntax
-
- SECOND(datetime)
-
- ##### Parameters
-
- **datetime** Time.
-
- An Excel date/time value, PHP date timestamp, PHP `DateTime` object, or a
- date/time represented as a string.
-
- ##### Return Value
-
- **integer** An integer value that reflects the seconds within the
- minute.
-
- This is an integer ranging from 0 to 59.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Time String')
- ->setCellValue('A2', '31-Dec-2008 17:30:20')
- ->setCellValue('A3', '14-Feb-2008 4:20 AM')
- ->setCellValue('A4', '14-Feb-2008 4:45:59 PM');
-
- $worksheet->setCellValue('B2', '=SECOND(A2)')
- ->setCellValue('B3', '=SECOND(A3)');
- ->setCellValue('B4', '=SECOND(A4)');
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 20
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 0
-
- $retVal = $worksheet->getCell('B4')->getCalculatedValue();
- // $retVal = 59
- ```
-
- ``` php
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'SECOND'],
- ['09:30:17']
- );
- // $retVal = 17
- ```
-
- ##### Notes
-
- Note that the PhpSpreadsheet function is
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::SECOND()` when the
- method is called statically.
-
- #### TIME
-
- Not yet documented.
-
- #### TIMEVALUE
-
- Not yet documented.
-
- #### TODAY
-
- Not yet documented.
-
- #### WEEKDAY
-
- The WEEKDAY function returns the day of the week for a given date. The
- day is given as an integer ranging from 1 to 7, although this can be
- modified to return a value between 0 and 6.
-
- ##### Syntax
-
- WEEKDAY(datetime [, method])
-
- ##### Parameters
-
- **datetime** Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- **method** An integer flag (values 0, 1 or 2)
-
- This is a flag that determines which method to use in the calculation,
- based on the values listed below:
-
- method | Description
- :-----:|------------------------------------------
- 0 | Returns 1 (Sunday) through 7 (Saturday).
- 1 | Returns 1 (Monday) through 7 (Sunday).
- 2 | Returns 0 (Monday) through 6 (Sunday).
-
- The method value defaults to 1.
-
- ##### Return Value
-
- **integer** An integer value that reflects the day of the week.
-
- This is an integer ranging from 1 to 7, or 0 to 6, depending on the
- value of method.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Date String')
- ->setCellValue('A2', '31-Dec-2008')
- ->setCellValue('A3', '14-Feb-2008');
-
- $worksheet->setCellValue('B2', '=WEEKDAY(A2)')
- ->setCellValue('B3', '=WEEKDAY(A3,0)')
- ->setCellValue('B4', '=WEEKDAY(A3,2)');
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 12
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 2
-
- $retVal = $worksheet->getCell('B4')->getCalculatedValue();
- // $retVal = 2
- ```
-
- ``` php
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'WEEKDAY'],
- ['14-July-2008']
- );
- // $retVal = 7
- ```
-
- ##### Notes
-
- Note that the PhpSpreadsheet function is
- `\PhpOffice\PhpSpreadsheet\Calculation\Functions::WEEKDAY()` when the
- method is called statically.
-
- #### WEEKNUM
-
- Not yet documented.
-
- #### WORKDAY
-
- Not yet documented.
-
- #### YEAR
-
- The YEAR function returns the year of a date.
-
- ##### Syntax
-
- YEAR(datetime)
-
- ##### Parameters
-
- **datetime** Date.
-
- An Excel date value, PHP date timestamp, PHP `DateTime` object, or a date
- represented as a string.
-
- ##### Return Value
-
- **integer** An integer value that reflects the month of the year.
-
- This is an integer year value.
-
- ##### Examples
-
- ``` php
- $worksheet->setCellValue('A1', 'Date String')
- ->setCellValue('A2', '17-Jul-1982')
- ->setCellValue('A3', '16-Apr-2009');
-
- $worksheet->setCellValue('B2', '=YEAR(A2)')
- ->setCellValue('B3', '=YEAR(A3)');
-
- $retVal = $worksheet->getCell('B2')->getCalculatedValue();
- // $retVal = 1982
-
- $retVal = $worksheet->getCell('B3')->getCalculatedValue();
- // $retVal = 2009
- ```
-
- ``` php
- $retVal = call_user_func_array(
- ['\PhpOffice\PhpSpreadsheet\Calculation\Functions', 'YEAR'],
- ['14-July-2001']
- );
- // $retVal = 2001
- ```
-
- ##### Notes
-
- There are no additional notes on this function
-
- ### YEARFRAC
-
- Not yet documented.
|