https://github.com/nebu1eto/sheetkit
High-Performance SpreadsheetML(.xlsx) Library for Rust and TypeScript
https://github.com/nebu1eto/sheetkit
excel nodejs rust spreadsheet typescript xlsm xlsx
Last synced: 2 months ago
JSON representation
High-Performance SpreadsheetML(.xlsx) Library for Rust and TypeScript
- Host: GitHub
- URL: https://github.com/nebu1eto/sheetkit
- Owner: Nebu1eto
- License: apache-2.0
- Created: 2026-02-08T08:14:04.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-14T09:38:02.000Z (4 months ago)
- Last Synced: 2026-02-14T13:33:57.403Z (4 months ago)
- Topics: excel, nodejs, rust, spreadsheet, typescript, xlsm, xlsx
- Language: Rust
- Homepage: https://sheetkit.dev
- Size: 1.97 MB
- Stars: 18
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.ko.md
- Contributing: docs/contributing.md
- License: LICENSE-APACHE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# SheetKit
Excel(.xlsx) 파일을 읽고 쓰는 Rust 라이브러리. napi-rs를 통한 Node.js 바인딩 지원.
> For the English version, see [README.md](README.md).
> **주의**: SheetKit은 실험적 프로젝트입니다. API가 예고 없이 변경될 수 있습니다. 현재 활발히 개발 중입니다.
## 주요 기능
- .xlsx 파일 읽기/쓰기
- Rust 코어 + napi-rs 기반 Node.js 바인딩 (Deno, Bun에서도 사용 가능)
- 셀 조작 (문자열, 숫자, 불리언, 날짜, 수식)
- 시트 관리 (생성, 삭제, 이름 변경, 복사, 활성 시트)
- 행/열 조작 (삽입, 삭제, 크기 조정, 숨기기, 아웃라인)
- 스타일 시스템 (글꼴, 채우기, 테두리, 정렬, 숫자 서식, 보호)
- 43가지 차트 유형 (3D 지원)
- 이미지 (11가지 형식: PNG, JPEG, GIF, BMP, ICO, TIFF, SVG, EMF, EMZ, WMF, WMZ)
- 조건부 서식 (17가지 규칙 유형)
- 데이터 유효성 검사, 메모, 자동 필터
- 수식 계산 (110개 이상 함수)
- 대용량 데이터를 위한 스트리밍 작성기
- 셀 병합, 하이퍼링크, 틀 고정/분할
- 페이지 레이아웃 및 인쇄 설정
- 문서 속성, 통합 문서/시트 보호
- 피벗 테이블
- 정의된 이름 (명명된 범위)
## 빠른 시작
**Rust:**
```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:**
```typescript
import { Workbook } from "@sheetkit/node";
const wb = new Workbook();
wb.setCellValue("Sheet1", "A1", "Hello");
wb.setCellValue("Sheet1", "B1", 42);
wb.save("output.xlsx");
```
## 설치
**Rust** -- `cargo add` 사용 (권장):
```bash
cargo add sheetkit
```
또는 `Cargo.toml`에 직접 추가:
```toml
[dependencies]
sheetkit = "0.5.1"
```
[crates.io에서 보기](https://crates.io/crates/sheetkit)
**Node.js:**
```bash
# npm
npm install @sheetkit/node
# yarn
yarn add @sheetkit/node
# pnpm
pnpm add @sheetkit/node
```
[npm에서 보기](https://www.npmjs.com/package/@sheetkit/node)
### Deno / Bun
SheetKit의 Node.js 바인딩은 [napi-rs](https://napi.rs/)를 사용하며, Node-API를 지원하는 다른 JavaScript 런타임에서도 호환됩니다:
- **Deno**: [`--allow-ffi`](https://docs.deno.com/runtime/fundamentals/security/#ffi-(foreign-function-interface)) 권한 플래그를 통해 napi-rs 네이티브 애드온을 지원합니다.
- **Bun**: Node-API를 네이티브로 지원합니다. 대부분의 napi-rs 모듈이 [별도 설정 없이 동작합니다](https://bun.com/docs/runtime/node-api).
## 문서
**[문서 사이트](https://sheetkit.dev/ko/)** | [English](https://sheetkit.dev/)
문서 소스 파일은 [docs/ko/](docs/ko/) 폴더를 참조하세요.
## 감사의 글
SheetKit은 Go 언어로 작성된 Excel 라이브러리인 [Excelize](https://github.com/qax-os/excelize)의 구현에서 깊은 영감을 받아 Rust와 TypeScript 생태계를 위해 만들어진 프로젝트입니다. Excelize 팀과 기여자분들의 훌륭한 작업에 깊은 존경과 감사를 표합니다.
## 라이선스
MIT OR Apache-2.0