or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cell-operations.mdcore-io.mddata-conversion.mdindex.mdstreaming.mdworkbook-management.md
tile.json

tessl/npm-xlsx

SheetJS Spreadsheet data parser and writer for multiple formats including Excel, CSV, and OpenDocument

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/xlsx@0.18.x

To install, run

npx @tessl/cli install tessl/npm-xlsx@0.18.0

index.mddocs/

XLSX

XLSX (SheetJS) is a comprehensive spreadsheet data parser and writer that supports multiple formats including Excel (XLSX, XLSM, XLSB, XLS), OpenDocument (ODS), CSV, and many others. It provides a unified JavaScript API for reading, manipulating, and generating spreadsheet files with support for advanced features like formulae, charts, pivot tables, styles, and cell formatting.

Package Information

  • Package Name: xlsx
  • Package Type: npm
  • Language: JavaScript/TypeScript
  • Installation: npm install xlsx
  • Repository: https://github.com/SheetJS/sheetjs
  • Documentation: https://docs.sheetjs.com/

Core Imports

ES Modules:

import { read, readFile, write, writeFile, utils, WorkBook, WorkSheet } from "xlsx";

CommonJS:

const XLSX = require("xlsx");
const { read, readFile, write, writeFile, utils } = XLSX;

Browser (via CDN):

<script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
<!-- XLSX is now available as a global -->

Basic Usage

import { readFile, writeFile, utils } from "xlsx";

// Read a spreadsheet file
const workbook = readFile("input.xlsx");

// Get the first worksheet
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];

// Convert worksheet to JSON
const jsonData = utils.sheet_to_json(worksheet);
console.log(jsonData);

// Create a new workbook
const newWorkbook = utils.book_new();

// Convert JSON to worksheet and add to workbook
const newWorksheet = utils.json_to_sheet([
  { Name: "Alice", Age: 25, City: "New York" },
  { Name: "Bob", Age: 30, City: "San Francisco" }
]);
utils.book_append_sheet(newWorkbook, newWorksheet, "People");

// Write workbook to file
writeFile(newWorkbook, "output.xlsx");

Architecture

XLSX is built around several key components:

  • Core I/O: Primary read/write functions for file operations and data parsing
  • Utils Namespace: Comprehensive utility functions for data conversion, cell manipulation, and workbook management
  • Stream Interface: Node.js streaming support for large datasets (Node.js only)
  • Type System: Full TypeScript support with comprehensive type definitions
  • Format Support: Extensive format compatibility covering 30+ spreadsheet and data formats

Capabilities

Core I/O Operations

Primary functions for reading and writing spreadsheet data across multiple formats. Supports both file operations (Node.js) and in-memory data processing (all environments).

function read(data: any, opts?: ParsingOptions): WorkBook;
function readFile(filename: string, opts?: ParsingOptions): WorkBook;
function write(data: WorkBook, opts: WritingOptions): any;
function writeFile(data: WorkBook, filename: string, opts?: WritingOptions): any;
function writeFileXLSX(data: WorkBook, filename: string, opts?: WritingOptions): any;
function writeXLSX(data: WorkBook, opts: WritingOptions): any;
function writeFileAsync(filename: string, data: WorkBook, opts: WritingOptions | (() => void), cb?: () => void): any;
function set_fs(fs: any): void;
function set_cptable(cptable: any): void;

Core I/O Operations

Data Import and Export

Utilities for converting between different data formats including JSON, CSV, HTML tables, and arrays. Essential for data pipeline integration and format transformation.

// Import functions (to WorkSheet)
function json_to_sheet<T>(data: T[], opts?: JSON2SheetOpts): WorkSheet;
function aoa_to_sheet<T>(data: T[][], opts?: AOA2SheetOpts): WorkSheet;
function table_to_sheet(data: any,  opts?: Table2SheetOpts): WorkSheet;
function table_to_book(data: any,  opts?: Table2SheetOpts): WorkBook;

// Export functions (from WorkSheet)  
function sheet_to_json<T>(worksheet: WorkSheet, opts?: Sheet2JSONOpts): T[];
function sheet_to_csv(worksheet: WorkSheet, options?: Sheet2CSVOpts): string;
function sheet_to_html(worksheet: WorkSheet, options?: Sheet2HTMLOpts): string;
function sheet_to_txt(worksheet: WorkSheet, options?: Sheet2CSVOpts): string;
function sheet_to_formulae(worksheet: WorkSheet): string[];
function sheet_to_dif(worksheet: WorkSheet, options?: Sheet2HTMLOpts): string;
function sheet_to_slk(worksheet: WorkSheet, options?: Sheet2HTMLOpts): string;
function sheet_to_eth(worksheet: WorkSheet, options?: Sheet2HTMLOpts): string;

Data Import and Export

Cell and Range Operations

Low-level utilities for working with individual cells, cell addresses, and ranges. Includes address encoding/decoding, cell formatting, and value manipulation.

// Cell address utilities
function encode_cell(cell: CellAddress): string;
function encode_row(row: number): string;
function encode_col(col: number): string;
function encode_range(range: Range): string;
function encode_range(s: CellAddress, e: CellAddress): string;
function decode_cell(address: string): CellAddress;
function decode_row(row: string): number;
function decode_col(col: string): number;
function decode_range(range: string): Range;

// Cell manipulation
function format_cell(cell: CellObject, v?: any, opts?: any): string;
function cell_set_number_format(cell: CellObject, fmt: string | number): CellObject;
function cell_set_hyperlink(cell: CellObject, target: string, tooltip?: string): CellObject;
function cell_set_internal_link(cell: CellObject, target: string, tooltip?: string): CellObject;
function cell_add_comment(cell: CellObject, text: string, author?: string): void;

Cell and Range Operations

Workbook and Worksheet Management

Functions for creating, modifying, and managing workbooks and worksheets. Includes sheet visibility, data insertion, and workbook structure manipulation.

function book_new(): WorkBook;
function book_append_sheet(workbook: WorkBook, worksheet: WorkSheet, name?: string, roll?: boolean): void;
function book_set_sheet_visibility(workbook: WorkBook, sheet: number | string, visibility: number): void;
function sheet_add_json<T>(ws: WorkSheet, data: T[], opts?: SheetJSONOpts): WorkSheet;
function sheet_add_aoa<T>(ws: WorkSheet, data: T[][], opts?: SheetAOAOpts): WorkSheet;
function sheet_add_dom(ws: WorkSheet, data: any, opts?: Table2SheetOpts): WorkSheet;
function sheet_set_array_formula(ws: WorkSheet, range: Range | string, formula: string, dynamic?: boolean): WorkSheet;

Workbook and Worksheet Management

Streaming Operations

Node.js streaming interface for processing large datasets without loading entire files into memory. Ideal for server-side applications processing large spreadsheets.

function to_csv(sheet: WorkSheet, opts?: Sheet2CSVOpts): Readable;
function to_html(sheet: WorkSheet, opts?: Sheet2HTMLOpts): Readable;
function to_json(sheet: WorkSheet, opts?: Sheet2JSONOpts): Readable;

Streaming Operations

Additional Exports

/** Version string */
const version: string;

/** SSF Formatter Library */
const SSF: any;

/** CFB Library */
const CFB: any;

/** Utility constants */
const utils: {
  consts: {
    SHEET_VISIBLE: 0;
    SHEET_HIDDEN: 1;
    SHEET_VERYHIDDEN: 2;
  };
};

/** Stream utilities (Node.js only) */
const stream: {
  to_csv(sheet: WorkSheet, opts?: Sheet2CSVOpts): Readable;
  to_html(sheet: WorkSheet, opts?: Sheet2HTMLOpts): Readable;
  to_json(sheet: WorkSheet, opts?: Sheet2JSONOpts): Readable;
  set_readable(Readable: any): void;
};

Core Types

interface WorkBook {
  SheetNames: string[];
  Sheets: { [sheet: string]: WorkSheet };
  Props?: FullProperties;
  Custprops?: object;
  Workbook?: WBProps;
  vbaraw?: any;
}

interface WorkSheet {
  [address: string]: CellObject | any;
  "!ref"?: string;
  "!margins"?: MarginInfo;
  "!merges"?: Range[];
  "!protect"?: ProtectInfo;
  "!autofilter"?: AutoFilterInfo;
  "!cols"?: ColInfo[];
  "!rows"?: RowInfo[];
}

interface CellObject {
  /** The raw value of the cell */
  v?: any;
  /** Formatted text (if applicable) */
  w?: string;
  /** Cell data type */
  t?: ExcelDataType;
  /** Cell formula (if applicable) */
  f?: string;
  /** Range of enclosing array formula (if applicable) */
  F?: string;
  /** Rich text encoding (if applicable) */
  r?: string;
  /** HTML rendering of the rich text (if applicable) */
  h?: string;
  /** Comments associated with the cell */
  c?: Comments;
  /** Number format string (if requested) */
  z?: NumberFormat;
  /** Cell hyperlink object (if applicable) */
  l?: Hyperlink;
  /** Cell style/theme (if applicable) */
  s?: any;
}

interface CellAddress {
  /** Row number (0-indexed) */
  r: number;
  /** Column number (0-indexed) */
  c: number;
}

interface Range {
  /** Start cell */
  s: CellAddress;
  /** End cell */
  e: CellAddress;
}

type ExcelDataType = "b" | "n" | "e" | "s" | "d" | "z";
type BookType = "xlsx" | "xlsm" | "xlsb" | "xls" | "xla" | "biff8" | "biff5" | "biff2" | "xlml" | "ods" | "fods" | "csv" | "txt" | "sylk" | "slk" | "html" | "dif" | "rtf" | "prn" | "eth" | "dbf";

interface CommonOptions {
  WTF?: boolean;
  bookVBA?: boolean;
  cellDates?: boolean;
  sheetStubs?: boolean;
  cellStyles?: boolean;
  password?: string;
}

interface ParsingOptions extends CommonOptions {
  type?: "base64" | "binary" | "buffer" | "file" | "array" | "string";
  codepage?: number;
  cellFormula?: boolean;
  cellHTML?: boolean;
  cellNF?: boolean;
  cellText?: boolean;
  dateNF?: string;
  FS?: string;
  sheetRows?: number;
  bookDeps?: boolean;
  bookFiles?: boolean;
  bookProps?: boolean;
  bookSheets?: boolean;
  sheets?: number | string | Array<number | string>;
  raw?: boolean;
  xlfn?: boolean;
  dense?: boolean;
  PRN?: boolean;
}

interface WritingOptions extends CommonOptions {
  type?: "base64" | "binary" | "buffer" | "file" | "array" | "string";
  bookSST?: boolean;
  bookType?: BookType;
  compression?: boolean;
  ignoreEC?: boolean;
  Props?: Properties;
  numbers?: string;
  sheet?: string;
}

interface Properties {
  Title?: string;
  Subject?: string;
  Author?: string;
  Manager?: string;
  Company?: string;
  Category?: string;
  Keywords?: string;
  Comments?: string;
  LastAuthor?: string;
  CreatedDate?: Date;
}

interface FullProperties extends Properties {
  ModifiedDate?: Date;
  Application?: string;
  AppVersion?: string;
  DocSecurity?: string;
  HyperlinksChanged?: boolean;
  SharedDoc?: boolean;
  LinksUpToDate?: boolean;
  ScaleCrop?: boolean;
  Worksheets?: number;
  SheetNames?: string[];
  ContentStatus?: string;
  LastPrinted?: string;
  Revision?: string | number;
  Version?: string;
  Identifier?: string;
  Language?: string;
}

interface NumberFormat {
  [key: string]: string;
}

interface Hyperlink {
  Target: string;
  Tooltip?: string;
}

interface Comment {
  a?: string;
  t: string;
  T?: boolean;
}

interface Comments extends Array<Comment> {
  hidden?: boolean;
}

interface ColInfo {
  hidden?: boolean;
  width?: number;
  wpx?: number;
  wch?: number;
  level?: number;
  MDW?: number;
}

interface RowInfo {
  hidden?: boolean;
  hpx?: number;
  hpt?: number;
  level?: number;
}

interface MarginInfo {
  left?: number;
  right?: number;
  top?: number;
  bottom?: number;
  header?: number;
  footer?: number;
}

interface ProtectInfo {
  password?: string;
  selectLockedCells?: boolean;
  selectUnlockedCells?: boolean;
  formatCells?: boolean;
  formatColumns?: boolean;
  formatRows?: boolean;
  insertColumns?: boolean;
  insertRows?: boolean;
  insertHyperlinks?: boolean;
  deleteColumns?: boolean;
  deleteRows?: boolean;
  sort?: boolean;
  autoFilter?: boolean;
  pivotTables?: boolean;
  objects?: boolean;
  scenarios?: boolean;
}

interface AutoFilterInfo {
  ref: string;
}

Supported Formats

Read and Write Support

  • XLSX - Excel 2007+ format
  • XLSM - Excel macro-enabled format
  • XLSB - Excel binary format
  • XLS - Excel 97-2003 format
  • CSV - Comma-separated values
  • ODS - OpenDocument Spreadsheet
  • HTML - HTML table format
  • DIF - Data Interchange Format
  • SYLK - Symbolic Link format
  • DBF - dBASE database format
  • PRN - Lotus formatted text
  • RTF - Rich Text Format

Read-Only Support

  • Numbers - Apple Numbers format
  • XLML - Excel 2003 XML format
  • WK1/WK2/WK3/WK4 - Lotus 1-2-3 formats

Write-Only Support

  • FODS - Flat OpenDocument Spreadsheet

Platform Compatibility

  • Node.js - Full feature support including file I/O and streaming
  • Browser - Complete API except file system operations
  • Deno - Full compatibility with ES modules
  • Bun - Native support for all features
  • React Native - Core functionality available
  • Electron - Complete feature set in both main and renderer processes