📘 Docs: js-ak.github.io/excel-toolbox
A lightweight toolkit for working with .xlsx
Excel files — modify templates, merge sheets, and handle massive datasets without dependencies.
npm install @js-ak/excel-toolbox
- ✨ Work with templates using
TemplateFs
(filesystem) orTemplateMemory
(in-memory) - 📥 Insert and stream rows into Excel files
- 🧩 Merge sheets from multiple
.xlsx
files - 🧼 Remove sheets by name or index
- 💎 Preserve styles, merges, and shared strings
Both classes provide the same API for modifying Excel templates.
substitute()
— replace placeholders like${name}
or${table:name}
insertRows()
/insertRowsStream()
— insert rows statically or via streamcopySheet()
— duplicate existing sheetsvalidate()
andsave()
/saveStream()
— output the result
import { TemplateFs } from "@js-ak/excel-toolbox";
const template = await TemplateFs.from({
destination: "/tmp/template",
source: fs.readFileSync("template.xlsx"),
});
await template.substitute("Sheet1", { name: "Alice" });
await template.insertRows({ sheetName: "Sheet1", rows: [["Data"]] });
const buffer = await template.save();
fs.writeFileSync("output.xlsx", buffer);
Synchronously merges sheets into a base file.
Async version of the above.
import fs from "node:fs";
import { mergeSheetsToBaseFileSync } from "@js-ak/excel-toolbox";
const baseFile = fs.readFileSync("base.xlsx");
const dataFile = fs.readFileSync("data.xlsx");
const result = mergeSheetsToBaseFileSync({
baseFile,
additions: [{ file: dataFile, sheetIndexes: [1] }],
gap: 2,
});
fs.writeFileSync("output.xlsx", result);
MIT — see LICENSE