NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #141 most downloaded on Packagist
PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine
Last release today
17 Sep 2026
Ships fairly regularly
a new release about every 6 weeks
Some releases are documented
notes for 29 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
145 releases · first in 2017
Add support for IFS() logical function #1442
One column per quarter.
Support writing to streams in all writers #1292
Improved the ARABIC function to also handle short-hand roman numerals
Added support for the BASE function
@return $this for fluent methods #1362FLOOR() function accept negative number and negative significance #1245
Change license from LGPL 2.1 to MIT #140
#N/A #1165Drop support for PHP 5.6 and 7.0, according to https://phpspreadsheet.readthedocs.io/en/latest/#php-version-support
*?~ Excel functionality, when match_type=0 #1116getSheetByName() with tests for name with quote and spaces #739getCalculatedValue() error with more than two INDIRECT #1115Uncaught error when opening ods file and properties aren't defined #1047
Allow nullable theme for Xlsx Style Reader class #1043
Detect double-encoded xml in the Security scanner, and reject as suspicious.
Detect double-encoded xml in the Security scanner, and reject as suspicious.
This change also broadens the scope of the libxml_disable_entity_loader setting when reading XML-based formats, so that it is enabled while the xml is being parsed and not simply while it is loaded.
On some versions of PHP, this can cause problems because it is not thread-safe, and can affect other PHP scripts running on the same server. This flag is set to true when instantiating a loader, and back to its original setting when the Reader is no longer in scope, or manually unset.
Provide a check to identify whether libxml_disable_entity_loader is thread-safe or not.
XmlScanner::threadSafeLibxmlDisableEntityLoaderAvailability()
Provide an option to disable the libxml_disable_entity_loader call through settings. This is not recommended as it reduces the security of the XML-based readers, and should only be used if you understand the consequences and have no other choice.
Added support for inline styles in Html reader (borders, alignment, width, height)
=Refactored Matrix Functions to use external Matrix library
libxml_disable_entity_loader() as shortly as possible #819//IGNORE//TRANSLIT on IBM i #791master is the new default branch, develop does not exist anymoreImprovements to the design of the XML Security Scanner #771
Fix and improve XXE security scanning for XML-based and HTML Readers #771
DefaultValueBinder::dataTypeForValue() without overriding DefaultValueBinder::bindValue() #735Sheet title can contain exclamation mark #325
Remove locale from formatting string #644
Add excel function EXACT(value1, value2) support #595
Ranges across Z and AA columns incorrectly threw an exception #545
Support to read Xlsm templates with form elements, macros, printer settings, protected elements and back compatibility drawing, and save result withou
Worksheet::SHEET_TITLE_MAXIMUM_LENGTH #482Helper\Html support UTF-8 HTML input #444Coordinate::extractAllCellReferencesInRange() throws an exception for an invalid range #519Plain text and richtext mixed in same cell can be read #442
HTML writer creates a generator meta tag #312
_xlfn. prefixed functions and ISFORMULA, MODE.SNGL, STDEV.S, STDEV.P #390setStrikethrough() did not set the font #403Support cell comments in HTML writer and reader #308
Support to write merged cells in ODS format #287
topLeftCell in freeze panes #261DateTimeImmutable as cell valueTYPE_DOUGHTNUTCHART is now TYPE_DOUGHNUTCHART.Support for chart fill color - @CrazyBite #158
Reader\Xlsx::getFromZipArchive() function return false if the zip entry could not be located. - @anton-harvey #268CalcEngine => Calculation\EnginePhpSpreadsheet\Calculation => PhpSpreadsheet\Calculation\CalculationPhpSpreadsheet\Cell => PhpSpreadsheet\Cell\CellPhpSpreadsheet\Chart => PhpSpreadsheet\Chart\ChartPhpSpreadsheet\RichText => PhpSpreadsheet\RichText\RichTextPhpSpreadsheet\Style => PhpSpreadsheet\Style\StylePhpSpreadsheet\Worksheet => PhpSpreadsheet\Worksheet\WorksheetFixed PHP8 deprecation warning for libxml_disable_entity_loader() #1625
PHPExcel_Calculation_Functions becomes PhpOffice\PhpSpreadsheet\Calculation\FunctionsFor a comprehensive list of all class changes, and a semi-automated migration path, read the migration guide.
PHPExcel_Calculation_Functions::VERSION(). Composer or git should be used to know the version.PHPExcel_Settings::setPdfRenderer() and PHPExcel_Settings::setPdfRenderer(). Composer should be used to autoload PDF libs.Your coding agent can read these notes before it upgrades. Set up the MCP server →