Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@e965/xlsx

e965199.6kApache-2.00.20.3TypeScript support: included

SheetJS Spreadsheet data parser and writer

excel, xls, xlsx, xlsb, xlsm, ods, csv, dbf, dif, sylk, office, spreadsheet

readme

SheetJS

Since the authors of the original package decided to stage their dumb protest that makes most of the community unable to access their package without vulnerabilities, I decided to make this project. It automatically takes a fresh version of SheetJS from their git repository, and publishes to npm if the version is different. The whole process is automated and works through Github Actions. https://github.com/e965/sheetjs-npm-publisher

The SheetJS Community Edition offers battle-tested open-source solutions for extracting useful data from almost any complex spreadsheet and generating new spreadsheets that will work with legacy and modern software alike.

SheetJS Pro offers solutions beyond data processing: Edit complex templates with ease; let out your inner Picasso with styling; make custom sheets with images/graphs/PivotTables; evaluate formula expressions and port calculations to web apps; automate common spreadsheet tasks, and much more!

Documentation

Constellation

  • https://oss.sheetjs.com/notes/: File Format Notes

  • ssf: Format data using ECMA-376 spreadsheet format codes

  • xlsx-cli: NodeJS command-line tool for processing files

  • cfb: Container (OLE/ZIP) file processing library

  • codepage: Legacy text encodings for XLS and other legacy spreadsheet formats

  • dta: Stata DTA file processor

  • test_files: Test files and various plaintext baselines.

License

Please consult the attached LICENSE file for details. All rights not explicitly granted by the Apache 2.0 License are reserved by the Original Author.

changelog

CHANGELOG

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.

v0.20.3

  • Correct parsing of NUMBERS and ODS merge cells (h/t @s-ashwin)
  • More precise treatment of infinite and NaN values
  • XLML Streaming Write
  • Parse Int8Array objects (for compatibility with JS engines in Java)
  • CSV Export only quote leading ID (h/t @lako12)

v0.20.2

  • Reworked parsing methods to avoid slow regexes (CVE-2024-22363)
  • HTML properly encode data-v attribute
  • SYLK read and write error cells

v0.20.1

  • init use packaged test files to work around GitHub breaking changes
  • SSF date code rounding to 15 decimal digits (h/t @davidtamaki)
  • sheet_to_json force UTC interpretation for formatted strings (h/t @Blanay)
  • QPW extract result of string formula
  • XLSX parse non-compliant merge cell expressions
  • NUMBERS correctly handle rows omitted from official exports
  • DBF parse empty logical field (h/t @Roman91)
  • dense option added to types
  • package.json add mini and core scripts to export map (h/t @stof)

v0.20.0

  • 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!

v0.19.3

  • XLSX Ensure comment address is valid (h/t @slonser)
  • Enforce Excel worksheet name restrictions
  • Fixed "Prototype Pollution" vulnerability (CVE-2023-30533)

v0.19.2

  • 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)

v0.19.1

  • Fixed types issue in strict mode (h/t @younes-io)
  • Numbers 12.2 parsing skip ActivityStream.iwa

v0.19.0

  • XLSX export hyperlinks compatible with google sheets (h/t Evan Bovie)
  • NUMBERS export multiple sheets, full worksheet range
  • formalized dense mode

v0.18.12

  • package.json added types in exports structure
  • uncapped NUMBERS single-sheet single-table export
  • DBF export records using supported codepages

v0.18.11

  • 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

v0.18.10

  • 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

v0.18.9

  • XLSX / ODS write defined names
  • sync defined names to AutoFilter setting on export
  • 1904 date system setting properly roundtripped
  • ODS read/write number formats

v0.18.8

  • Plaintext parsing of dateless meridien time values (1:23:45 PM)
  • Legacy format (SYLK / WK# / Multiplan) minutiae

v0.18.7

  • Normalized handling of \r and \n newline characters

v0.18.6

  • Removed all npm dependencies
  • Auto-correct bad Google Sheets format d.m
  • NUMBERS write merge cells, cells up to column "ALL"

v0.18.5

  • Enabled sideEffects: false in package.json
  • Basic NUMBERS write support

v0.18.4

  • CSV output omits trailing record separator
  • Properly terminate NodeJS Streams
  • DBF preserve column types on import and use when applicable on export

v0.18.3

  • Removed references to require and process in browser builds

v0.18.2

  • Hotfix for unicode processing of XLSX exports

v0.18.1

  • Removed Node ESM build script and folded into standard ESM build
  • Removed undocumented aliases including make_formulae and get_formulae

v0.18.0

  • Browser scripts only expose XLSX variable
  • Module no longer ships with dist/jszip.js browser script

v0.17.4

  • CLI script moved to xlsx-cli package

v0.17.3

  • window.XLSX explicit assignment to satiate LWC
  • CSV Proper formatting of errors
  • HTML emit data-* attributes

v0.17.2

  • Browser and Node optional ESM support
  • DSV correct handling of bare quotes (h/t @bgamrat)

v0.17.1

  • XLSB writer uses short cell form when viable

0.17.0:

  • mini build includes ODS parse/write support
  • DBF explicitly cap worksheet to 1<<20 rows
  • XLS throw errors on truncated records

v0.16.2

  • Disabled PRN parsing by default (better support for CSV without delimeters)

v0.16.1

  • 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 and decode_cell do not rely on encode_col / decode_col

v0.16.0

  • Date handling changed
  • XLML certain tag tests are now case insensitive
  • Fixed potentially vulnerable regular expressions

v0.15.6

  • CFB prevent infinite loop
  • ODS empty cells marked as stub (type "z")
  • cellStyles option implies sheetStubs

v0.15.5

  • sheets parse option to specify which sheets to parse

v0.15.4

  • AOA utilities properly preserve number formats
  • Number formats captured in stub cells

v0.15.3

  • Properties and Custom Properties properly XML-encoded

v0.15.2

  • sheet_get_cell utility function
  • sheet_to_json explicitly support null as alias for default behavior
  • encode_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

v0.15.1 (2019-08-14)

  • XLSX ignore XML artifacts
  • HTML capture and persist merges

v0.15.0

  • dist/xlsx.mini.min.js mini build with XLSX read/write and some utilities
  • Removed legacy conversion utility functions

v0.14.5

  • XLS PtgNameX lookup
  • XLS always create stub cells for blank cells with comments

v0.14.4

  • Better treatment of skipHidden in CSV output
  • Ignore CLSID in XLS
  • SYLK 7-bit character encoding
  • SYLK and DBF codepage support

v0.14.3

  • Proper shifting of addresses in Shared Formulae

v0.14.2

  • Proper XML encoding of comments

v0.14.1

  • raw cell objects can be passed to sheet_add_aoa
  • _FilterDatabase fix for AutoFilter-related crashes
  • stream.to_json doesn't end up accidentally scanning to max row

0.14.0 (2018-09-06)

  • sheet_to_json default flipped to raw: true

0.13.5 (2018-08-25)

  • HTML output generates <br/> instead of encoded newline character

0.13.2 (2018-07-08)

  • Buffer.from shim replaced, will not be defined in node <=0.12

0.13.0 (2018-06-01)

  • Library reshaped to support AMD out of the box

0.12.11 (2018-04-27)

  • XLS/XLSX/XLSB range truncation (errors in WTF mode)

0.12.4 (2018-03-04)

  • JSZip renamed to JSZipSync

0.12.0 (2018-02-08)

  • Extendscript target script in NPM package

0.11.19 (2018-02-03)

  • Error on empty workbook

0.11.16 (2017-12-30)

  • XLS ANSI/CP separation
  • 'array' write type and ArrayBuffer processing

0.11.6 (2017-10-16)

  • Semicolon-delimited files are detected

0.11.5 (2017-09-30)

  • Bower main script shifted to full version
  • 'binary' / 'string' encoding

0.11.3 (2017-08-19)

  • XLS cell ixfe/XF removed

0.11.0 (2017-07-31)

  • Strip require statements from minified version
  • minifier mangler enabled

0.10.9 (2017-07-28)

  • XLML/HTML resolution logic looks further into the data stream to decide type
  • Errors thrown on suspected RTF files

0.10.5 (2017-06-09)

  • HTML Table output header/footer should not include <table> tag

0.10.2 (2017-05-16)

  • Dates are converted to numbers by default (set cellDates:true to emit Dates)
  • Module does not export CFB

0.9.10 (2017-04-08)

  • --perf renamed to --read-only

0.9.9 (2017-04-03)

  • default output format changed to XLSB
  • comment text line endings are now normalized
  • errors thrown on write when worksheets have invalid names

0.9.7 (2017-03-28)

  • XLS legacy !range field removed
  • Hyperlink tooltip is stored in the Tooltip field

0.9.6 (2017-03-25)

  • sheet_to_json now passes null values when raw is set to true
  • sheet_to_json treats null stub cells as values in conjunction with raw

0.9.5 (2017-03-22)

  • cellDates affects parsing in non-XLSX formats

0.9.3 (2017-03-15)

  • XLML property names are more closely mapped to the XLSX equivalent
  • Stub cells are now cell type z

0.9.2 (2017-03-13)

  • Removed stale TypeScript definition files. Flowtype comments are used in the xlsx.flow.js source and stripped to produce xlsx.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

0.9.0 (2017-03-09)

  • 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