You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ExcelSheet::readRange() reads a rectangular block of cells into a 2D array in one call, avoiding per-cell PHP dispatch on read-heavy import paths.
ExcelSheet::readSparseRow()/readSparseCol() return only the occupied cells of a row or column, keyed by their original column or row index.
ExcelBook::loadPartially()/loadFilePartially() load a single sheet's row slice from an Excel string or file, with an optional flag to keep the remaining sheets (requires libxl 5.0.0+).
ExcelBook::loadFileWithoutEmptyCells() loads an xls file while dropping empty cells (xls format only; requires libxl 5.0.0+).
ExcelSheet::writeRow() now accepts an optional $data_type argument, matching writeCol(), to apply an explicit cell data type across the row.
Fixed
ExcelSheet::read() now sets the format out-param for error-type cells; it previously returned an uninitialized ExcelFormat that warned on use.
ExcelBook::packDate() now accepts the Unix epoch; timestamp 0 was wrongly rejected as invalid.
ExcelBook::loadFile()/save() no longer emit a duplicate open_basedir warning when a plain path is denied.
Child wrappers (ExcelAutoFilter, ExcelFilterColumn, ExcelConditionalFormatting) fetched before their autofilter, table filter, or conditional formatting is removed are now invalidated and reject reuse, while the owning sheet, table, or book stays valid.