Skip to main content

Zen of SheetJS

SheetJS design and development is guided by a few key principles.

Data processing should fit in any workflow

The library does not impose a separate lifecycle. It fits nicely in websites and apps built using any framework. The plain JS data objects play nice with Web Workers and future APIs.

JavaScript is a powerful language for data processing

The "Common Spreadsheet Format" is a simple object representation of the core concepts of a workbook. Utilities provide low-level tools for working with the object.

For friendly JS processing, there are utility functions for converting parts of a worksheet to/from an Array of Arrays. The Tutorial combines powerful JS Array methods with a network request library to download data, select the information we want and create a workbook file.

File formats are implementation details

The parser covers a wide gamut of common spreadsheet file formats to ensure that "HTML-saved-as-XLS" files work as well as actual XLS or XLSX files.

The writer supports a number of common output formats for broad compatibility with the data ecosystem.

To the greatest extent possible, data processing code should not have to worry about the specific file formats involved.

Data processing should be confidential

All SheetJS-related methods run locally. No data is sent to a third party in processing data. No telemetry is collected.

SheetJS libraries are regularly used in offline scenarios to process personally identifiable information (PII) and other classified data.