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.
- Use UTC interpretation of Date objects for date cells (potentially breaking)
- API functions support UTC and local time value interpretations
- Export
NaN
values to#NUM!
and infinite values to#DIV/0!
- XLSX Ensure comment address is valid (h/t @slonser)
- Enforce Excel worksheet name restrictions
- Fixed "Prototype Pollution" vulnerability (CVE-2023-30533)
- XLSX proper decoding of hyperlinks (h/t @tw-yaxu)
- XLSX ignore unexpected attributes in rich text (h/t @colin4)
sheet_to_json
type fix (h/t @chsdwn)
- Fixed types issue in strict mode (h/t @younes-io)
- Numbers 12.2 parsing skip ActivityStream.iwa
- XLSX export hyperlinks compatible with google sheets (h/t Evan Bovie)
- NUMBERS export multiple sheets, full worksheet range
- formalized
dense
mode
package.json
added types inexports
structure- 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
exports
field in package.json to satiate ViteJS and newer tooling- JSC (Safari / Bun) perf, see https://bugs.webkit.org/show_bug.cgi?id=243148
- workbook
bookType
property to denote the origin format when parsed from file - XLSX force export of stub cells with number formats when
sheetStubs
is 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
\r
and\n
newline characters
- Removed all npm dependencies
- Auto-correct bad Google Sheets format
d.m
- NUMBERS write merge cells, cells up to column "ALL"
- Enabled
sideEffects: false
in 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
require
andprocess
in 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_formulae
andget_formulae
- Browser scripts only expose
XLSX
variable - Module no longer ships with
dist/jszip.js
browser script
- CLI script moved to
xlsx-cli
package
window.XLSX
explicit 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)
XLSB
writer 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
PRN
parsing 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
/z
attributes when determining value - double quotes in properties escaped using
_x0022_
- changed AMD structure for NetSuite and other RequireJS implementations
encode_cell
anddecode_cell
do 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")
cellStyles
option impliessheetStubs
sheets
parse 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_cell
utility functionsheet_to_json
explicitly supportnull
as alias for default behaviorencode_col
throw on negative column index- HTML properly handle whitespace around tags in a run
- HTML use
id
option on write - Files starting with
0x09
followed 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
_FilterDatabase
defined name on write - XLML skip CDATA blocks
- XLSX ignore XML artifacts
- HTML capture and persist merges
dist/xlsx.mini.min.js
mini 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
skipHidden
in 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
_FilterDatabase
fix for AutoFilter-related crashesstream.to_json
doesn't end up accidentally scanning to max row
sheet_to_json
default 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
WTF
mode)
JSZip
renamed 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
require
statements 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:true
to emit Dates) - Module does not export CFB
--perf
renamed 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
!range
field removed - Hyperlink tooltip is stored in the
Tooltip
field
sheet_to_json
now passesnull
values whenraw
is set totrue
sheet_to_json
treatsnull
stub cells as values in conjunction withraw
cellDates
affects 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.js
source 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