Skip to content
Nebu1etoPublic

About

High-Performance SpreadsheetML(.xlsx) Library for Rust and TypeScript

Topics

Resources

Contributing

Stars

39 stars

Watchers

0 watching

Forks

Latest commit

 

History

270 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SheetKit logo SheetKit

crates.io npm Docs CI License: MIT OR Apache-2.0

A Rust library for reading and writing Excel (.xlsx) files, with Node.js bindings via napi-rs.

한국어 버전은 README.ko.md를 참조하세요.

SheetKit 1.0 follows semantic versioning. When upgrading from v0.5.1, read the 1.0 migration guide.

Quick links:

Features

  • Read/write .xlsx files
  • Rust core + Node.js bindings via napi-rs (also works with Deno and Bun)
  • Cell operations (string, number, boolean, date, formula)
  • Sheet management (create, delete, rename, copy, active sheet)
  • Row/column operations (insert, delete, resize, hide, outline)
  • Style system (font, fill, border, alignment, number format, protection)
  • 43 chart types with 3D support
  • Images (11 formats: PNG, JPEG, GIF, BMP, ICO, TIFF, SVG, EMF, EMZ, WMF, WMZ)
  • Conditional formatting (17 rule types)
  • Data validation, comments, auto-filter
  • Formula evaluation (110+ functions)
  • Streaming writer for large datasets
  • Merge cells, hyperlinks, freeze/split panes
  • Page layout and print settings
  • Document properties, workbook/sheet protection
  • Pivot tables
  • Defined names (named ranges)

Quick Start

Rust:

use sheetkit::{CellValue, Workbook};

fn main() -> sheetkit::Result<()> {
    let mut wb = Workbook::new();
    wb.set_cell_value("Sheet1", "A1", CellValue::String("Hello".into()))?;
    wb.set_cell_value("Sheet1", "B1", CellValue::Number(42.0))?;
    wb.save("output.xlsx")?;
    Ok(())
}

TypeScript:

import { Workbook } from "@sheetkit/node";

const wb = new Workbook();
wb.setCellValue("Sheet1", "A1", "Hello");
wb.setCellValue("Sheet1", "B1", 42);
await wb.save("output.xlsx");

Installation

Rust -- use cargo add (recommended):

cargo add sheetkit

Or add to your Cargo.toml:

[dependencies]
sheetkit = "1.0.1"

View on crates.io

Node.js:

# npm
npm install @sheetkit/node

# yarn
yarn add @sheetkit/node

# pnpm
pnpm add @sheetkit/node

Requires Node.js 24 or later.

View on npm

Deno / Bun

SheetKit's Node.js bindings use napi-rs, which is compatible with other JavaScript runtimes that support Node-API:

  • Deno: Supports napi-rs native addons via the --allow-ffi permission flag.
  • Bun: Supports Node-API natively. Most napi-rs modules work out of the box.

Documentation

Documentation Site | Korean (한국어)

See the docs/ folder for documentation source files.

Users migrating from v0.5.1 should read the 1.0 migration guide.

Acknowledgements

SheetKit is heavily inspired by the implementation of Excelize, the Go library for Excel files. This project was built for the Rust and TypeScript projects, and we have great respect and admiration for the work done by the Excelize team and its contributors.

License

MIT OR Apache-2.0

About

High-Performance SpreadsheetML(.xlsx) Library for Rust and TypeScript

Topics

Resources

Contributing

Stars

39 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages