avadim/fast-excel-writer
Lightweight and very fast XLSX Excel Spreadsheet Writer in PHP
v6.15.1
1.6M downloads/mo
#2723 most downloaded on Packagist
aVadim483/fast-excel-writer
What this package is like to depend on
Last release 7 days ago
16 Aug 2026
Release timing varies
gaps range from 8 days to 3 months
Rarely documented
notes for 7 of 99 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
99 releases · first in 2020
17 releases in the last 12 months
see the full history below
Release timeline
99 releases · Aug 2020 to Aug 2026Releases
latest 60 of 99-
v6.15.112 Aug 2026Release notes
Open source →Fixed
- The cell type of a pre-calculated formula result – a text result was written without
t="str", so Excel treated it as a number and showed#VALUE!; boolean and error results are now written ast="b"/t="e"too (#139) - A formula with a
nullpre-calculated result (['=A1+B1', null]) – the cell was written empty and the formula was lost; now it is written without a cached value, so Excel calculates it on open Writerprevented garbage collection – it registered[$this, 'removeFiles']as a shutdown function, which held a global reference to every instance, so the destructor never ran and memory grew in long-running/CLI processes (#138)
Release notes
Open source →- Fixed a formula with a
nullpre-calculated result (['=A1+B1', null]) – the whole cell was written empty and the formula was lost - Fixed the cell type of pre-calculated formula results – a text result was written without
t="str", so Excel treated it as a number and showed#VALUE!; boolean and error results are now written ast="b"/t="e"too, see https://github.com/aVadim483/fast-excel-writer/issues/139 - Fixed
Writerpreventing garbage collection – it registered[$this, 'removeFiles']as a shutdown function, which held a global reference to every instance, so the destructor never ran and memory grew in long-running/CLI processes, see https://github.com/aVadim483/fast-excel-writer/issues/138
- The cell type of a pre-calculated formula result – a text result was written without
-
v6.15.023 Jul 2026Release notes
Open source →Added
- A
Styleobject can be created directly from an options array –new Style($options) - New method
Excel::getSharedStringsRefCount()
Fixed
- Reused
DataValidation/Conditionalobjects – applying one object to several ranges kept only the last range (#137) Sheet::setStateVeryHidden()made the sheet visible instead of very hiddenSheet::writeCell()rejected the last valid row (1048576) and column (XFD)Excel::rangeDimensionRelative()collapsed a range given as two associative points to a single cell- A cell value containing invalid UTF-8 was silently dropped (
xmlSpecialChars()now usesENT_SUBSTITUTE) - Numbers/dates under a comma
LC_NUMERIClocale (e.g.de_DE) on PHP 7.4 produced invalid<v>3,14</v> - Style corruption when two workbooks are open in the same process (
StyleManagerread default-font state from the wrong instance) - Duplicate sheet names, and reuse of
sheetN.xmlafterremoveSheet()+makeSheet() - Missing XML escaping of image names, chart names and hyperlink targets/locations
Sheet::writeCells()dropped positional (integer-keyed) cell styles- Formulas with escaped quotes
""and national function names containing regex metacharacters - Shared strings lost leading/trailing spaces (
xml:space="preserve") Area::getOffsetAddress()ignored its offset argumentSheet::skipRow(null)skipped no rows- PHP 8.1+ deprecations from
strtolower()/htmlspecialchars()on non-string arguments ZipArchivehandle was not closed if saving threw an exception
Security
Excel::download()strips CR/LF and quotes from the file name (header injection), sends the correct xlsx MIME type, adds an RFC 5987filename*and checksheaders_sent()Excel::loadImageFile()rejects dangerous stream wrappers (php://,phar://,glob://,zip://,data://,expect://, …)
Optimized
- Formula conversion skips the heavy
_xlfn/_xlwspasses when the formula contains no( sharedStrings.xmlis streamed to disk instead of built entirely in memory (much lower peak memory whenshared_stringis enabled)Sheet::writeRow()hot path
Changed
- After
removeSheet()+makeSheet(), new worksheet files use a monotonic index and never reuse a previoussheetN.xml
- A
-
v6.14.018 Jul 2026Release notes
Open source →- New demos: rich text (demo-14), images & notes (demo-15); errors fixed in other demos, deprecated chart methods replaced
- Documentation: Russian translation, upgrade guide, ImageStyle and Options pages, rewritten README
- Optimized
Writer::_writeCell() - Fixed
Charts\Layout::getXMode()andCharts\Layout::getYMode()- fatal TypeError when adding pie/donut charts - Fixed
RichTextFragment::outXml()- font size set viasetSize()was not written
-
v6.13.230 Jun 2026Nothing published for this version
-
v6.13.104 Jun 2026Nothing published for this version
-
v6.13.027 May 2026Release notes
Open source →The behavior of the Sheet::setColFormats(), Sheet::setColStyleArray() and Sheet::setColDataStyleArray() methods has been changed when column numbers were used as keys (it was incorrect)
-
v6.12.015 Feb 2026Nothing published for this version
-
v6.11.024 Jan 2026Release notes
Open source →upd: numFmts index calculation;
upd: styles.xml for extra features;
upd: set style to cells without value; -
v6.10.010 Jan 2026Release notes
Open source →rename Excel::$style to Excel::$styleManager and other updates for extra features
-
v6.9.006 Jan 2026Nothing published for this version
-
v6.8.030 Oct 2025Nothing published for this version
-
v6.7.105 Oct 2025Nothing published for this version
-
v6.7.021 Sep 2025Nothing published for this version
-
v6.6.510 Sep 2025Nothing published for this version
-
v6.6.408 Sep 2025Nothing published for this version
-
v6.6.331 Aug 2025Nothing published for this version
-
v6.6.206 Jul 2025Nothing published for this version
-
v6.6.124 Jun 2025Nothing published for this version
-
v6.6.001 Jun 2025Nothing published for this version
-
v6.5.122 Apr 2025Nothing published for this version
-
v6.5.020 Apr 2025Nothing published for this version
-
v6.4.111 Jan 2025Nothing published for this version
-
v6.4.011 Jan 2025Nothing published for this version
-
v6.3.002 Jan 2025Nothing published for this version
-
v6.2.001 Nov 2024Nothing published for this version
-
v6.1.127 Oct 2024Nothing published for this version
-
v6.1.011 Oct 2024Nothing published for this version
-
v6.0.022 Sep 2024Nothing published for this version
-
v5.8.218 Sep 2024Nothing published for this version
-
v5.8.113 Aug 2024Nothing published for this version
-
v5.8.005 Aug 2024Nothing published for this version
-
v5.7.027 Jul 2024Nothing published for this version
-
v5.6.123 Jul 2024Nothing published for this version
-
v5.6.029 Jun 2024Nothing published for this version
-
v5.5.228 Jun 2024Nothing published for this version
-
v5.5.128 Jun 2024Nothing published for this version
-
v5.5.027 Jun 2024Nothing published for this version
-
v5.4.007 Jun 2024Nothing published for this version
-
v5.3.119 May 2024Nothing published for this version
-
v5.3.019 May 2024Nothing published for this version
-
v5.2.012 Apr 2024Nothing published for this version
-
v5.1.210 Apr 2024Nothing published for this version
-
v5.1.110 Apr 2024Nothing published for this version
-
v5.1.016 Mar 2024Nothing published for this version
-
v5.0.003 Mar 2024Nothing published for this version
-
v4.11.023 Dec 2023Nothing published for this version
-
v4.10.020 Dec 2023Nothing published for this version
-
v4.9.018 Dec 2023Nothing published for this version
-
v4.8.304 Nov 2023Nothing published for this version
-
v4.8.203 Nov 2023Nothing published for this version
-
v4.8.125 Oct 2023Nothing published for this version
-
v4.8.024 Oct 2023Nothing published for this version
-
v4.7.408 Oct 2023Nothing published for this version
-
v4.7.307 Oct 2023Nothing published for this version
-
v4.7.204 Oct 2023Nothing published for this version
-
v4.7.128 Sep 2023Nothing published for this version
-
v4.7.019 Sep 2023Nothing published for this version
-
v4.6.016 Sep 2023Nothing published for this version
-
v4.5.211 Sep 2023Nothing published for this version
-
v4.5.111 Sep 2023Nothing published for this version