XLSX

快速开始

使用 @office-open/xlsx 在 5 分钟内创建你的第一个 .xlsx 电子表格

只需三步即可从头创建电子表格:定义数据、构建工作簿、导出文件。

第一步 — 安装

pnpm add @office-open/xlsx

第二步 — 创建工作簿

import { Workbook, Packer } from "@office-open/xlsx";

const wb = new Workbook({
  worksheets: [
    {
      name: "Sales",
      children: [
        {
          cells: [
            { value: "Product", style: { font: { bold: true } } },
            { value: "Q1", style: { font: { bold: true } } },
            { value: "Q2", style: { font: { bold: true } } },
          ],
        },
        { cells: [{ value: "Widget" }, { value: 100 }, { value: 150 }] },
        { cells: [{ value: "Gadget" }, { value: 200 }, { value: 250 }] },
      ],
    },
  ],
});

也可以使用 JSON API:

{
  "worksheets": [
    {
      "name": "Sales",
      "children": [
        { "cells": [{ "value": "Product" }, { "value": "Q1" }, { "value": "Q2" }] },
        { "cells": [{ "value": "Widget" }, { "value": 100 }, { "value": 150 }] },
        { "cells": [{ "value": "Gadget" }, { "value": 200 }, { "value": 250 }] }
      ]
    }
  ]
}

第三步 — 导出

// Node.js — 写入文件
import { writeFileSync } from "node:fs";

const buffer = await Packer.toBuffer(wb);
writeFileSync("output.xlsx", buffer);
// 浏览器 — 下载文件
const blob = await Packer.toBlob(wb);
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "output.xlsx";
a.click();

多个工作表

const wb = new Workbook({
  worksheets: [
    {
      name: "Summary",
      children: [{ cells: [{ value: "Total" }, { value: 500 }] }],
    },
    {
      name: "Details",
      children: [
        { cells: [{ value: "Item" }, { value: "Amount" }] },
        { cells: [{ value: "A" }, { value: 200 }] },
        { cells: [{ value: "B" }, { value: 300 }] },
      ],
    },
  ],
});

输出格式

Packer 类支持多种输出格式。每个异步方法都有对应的同步版本(例如 toBufferSync)。完整列表请参阅导出页面。

方法返回值适用场景
Packer.toBuffer(wb)BufferNode.js 文件 I/O
Packer.toBlob(wb)Blob浏览器下载
Packer.toBase64String(wb)stringData URL、API 负载
Packer.toString(wb)string调试、检查
Copyright © 2026