This log is intended to keep track of backwards-incompatible changes, including but not limited to API changes and file location changes. Minor behavioral changes may not be included if they are not expected to break existing code.
package.jsonadded types inexportsstructure- uncapped NUMBERS single-sheet single-table export
- DBF export records using supported codepages
- Base64 input ignore data URI wrapper
- Parse ZIP files that use ZIP64 extended information field
- More precise handling of time-only values
- Threaded Comment fallback text for older Excel
exportsfield in package.json to satiate ViteJS and newer tooling- JSC (Safari / Bun) perf, see https://bugs.webkit.org/show_bug.cgi?id=243148
- workbook
bookTypeproperty to denote the origin format when parsed from file - XLSX force export of stub cells with number formats when
sheetStubsis set
- XLSX / ODS write defined names
- sync defined names to AutoFilter setting on export
- 1904 date system setting properly roundtripped
- ODS read/write number formats
- Plaintext parsing of dateless meridien time values (
1:23:45 PM) - Legacy format (SYLK / WK# / Multiplan) minutiae
- Normalized handling of
\rand\nnewline characters
- Removed all npm dependencies
- Auto-correct bad Google Sheets format
d.m - NUMBERS write merge cells, cells up to column "ALL"
- Enabled
sideEffects: falsein package.json - Basic NUMBERS write support
- CSV output omits trailing record separator
- Properly terminate NodeJS Streams
- DBF preserve column types on import and use when applicable on export
- Removed references to
requireandprocessin browser builds
- Hotfix for unicode processing of XLSX exports
- Removed Node ESM build script and folded into standard ESM build
- Removed undocumented aliases including
make_formulaeandget_formulae
- Browser scripts only expose
XLSXvariable - Module no longer ships with
dist/jszip.jsbrowser script
- CLI script moved to
xlsx-clipackage
window.XLSXexplicit assignment to satiate LWC- CSV Proper formatting of errors
- HTML emit data-* attributes
- Browser and Node optional ESM support
- DSV correct handling of bare quotes (h/t @bgamrat)
XLSBwriter uses short cell form when viable
- mini build includes ODS parse/write support
- DBF explicitly cap worksheet to 1<<20 rows
- XLS throw errors on truncated records
- Disabled
PRNparsing by default (better support for CSV without delimeters)
- skip empty custom property tags if data is absent (fixes DocSecurity issue)
- HTML output add raw value, type, number format
- DOM parse look for
v/t/zattributes when determining value - double quotes in properties escaped using
_x0022_ - changed AMD structure for NetSuite and other RequireJS implementations
encode_cellanddecode_celldo not rely onencode_col/decode_col
- Date handling changed
- XLML certain tag tests are now case insensitive
- Fixed potentially vulnerable regular expressions
- CFB prevent infinite loop
- ODS empty cells marked as stub (type "z")
cellStylesoption impliessheetStubs
sheetsparse option to specify which sheets to parse
- AOA utilities properly preserve number formats
- Number formats captured in stub cells
- Properties and Custom Properties properly XML-encoded
sheet_get_cellutility functionsheet_to_jsonexplicitly supportnullas alias for default behaviorencode_colthrow on negative column index- HTML properly handle whitespace around tags in a run
- HTML use
idoption on write - Files starting with
0x09followed by a display character are now TSV files - XLS parse references col/row indices mod by the correct number for BIFF ver
- XLSX comments moved to avoid overlapping cell
- XLSB outline level
- AutoFilter update
_FilterDatabasedefined name on write - XLML skip CDATA blocks
- XLSX ignore XML artifacts
- HTML capture and persist merges
dist/xlsx.mini.min.jsmini build with XLSX read/write and some utilities- Removed legacy conversion utility functions
- XLS PtgNameX lookup
- XLS always create stub cells for blank cells with comments
- Better treatment of
skipHiddenin CSV output - Ignore CLSID in XLS
- SYLK 7-bit character encoding
- SYLK and DBF codepage support
- Proper shifting of addresses in Shared Formulae
- Proper XML encoding of comments
- raw cell objects can be passed to
sheet_add_aoa _FilterDatabasefix for AutoFilter-related crashesstream.to_jsondoesn't end up accidentally scanning to max row
sheet_to_jsondefault flipped toraw: true
- HTML output generates
<br/>instead of encoded newline character
- Buffer.from shim replaced, will not be defined in node
<=0.12
- Library reshaped to support AMD out of the box
- XLS/XLSX/XLSB range truncation (errors in
WTFmode)
JSZiprenamed toJSZipSync
- Extendscript target script in NPM package
- Error on empty workbook
- XLS ANSI/CP separation
- 'array' write type and ArrayBuffer processing
- Semicolon-delimited files are detected
- Bower main script shifted to full version
- 'binary' / 'string' encoding
- XLS cell ixfe/XF removed
- Strip
requirestatements from minified version - minifier mangler enabled
- XLML/HTML resolution logic looks further into the data stream to decide type
- Errors thrown on suspected RTF files
- HTML Table output header/footer should not include
<table>tag
- Dates are converted to numbers by default (set
cellDates:trueto emit Dates) - Module does not export CFB
--perfrenamed to--read-only
- default output format changed to XLSB
- comment text line endings are now normalized
- errors thrown on write when worksheets have invalid names
- XLS legacy
!rangefield removed - Hyperlink tooltip is stored in the
Tooltipfield
sheet_to_jsonnow passesnullvalues whenrawis set totruesheet_to_jsontreatsnullstub cells as values in conjunction withraw
cellDatesaffects parsing in non-XLSX formats
- XLML property names are more closely mapped to the XLSX equivalent
- Stub cells are now cell type
z
- Removed stale TypeScript definition files. Flowtype comments are used in the
xlsx.flow.jssource and stripped to producexlsx.js. - sed usage reworked to support GNU sed in-place form. BSD sed seems to work, but the build script has not been tested on other sed variants:
$ sed -i.ext [...] # GNU
$ sed -i .ext [...] # bsd- Removed ods.js source. The xlsx.js source absorbed the ODS logic and exposes the ODS variable, so projects should remove references to ods.js