XLSX

@office-open/xlsx

使用声明式 TypeScript API 生成 .xlsx 电子表格

安装

pnpm add @office-open/xlsx

快速开始

{
  "worksheets": [
    {
      "name": "Sheet1",
      "children": [
        { "cells": [{ "value": "Name" }, { "value": "Score" }] },
        { "cells": [{ "value": "Alice" }, { "value": 95 }] },
        { "cells": [{ "value": "Bob" }, { "value": 88 }] }
      ]
    }
  ]
}

主要组件

组件说明
Workbook根工作簿容器,包含工作表和属性
Worksheet单个工作表,包含单元格、样式和功能
Cell单元格,包含值、样式和格式
Row行容器,可设置高度和可见性
Column列定义,可设置宽度和范围
Styles基于索引的样式系统(字体、填充、边框)
SharedStrings共享字符串表,用于字符串去重

补丁修改

通过替换 {{placeholder}} 占位符来修改已有的 .xlsx 模板:

import { patchWorkbook } from "@office-open/xlsx";

const result = await patchWorkbook({
  outputType: "nodebuffer",
  data: templateBuffer,
  patches: {
    name: { value: "John Doe" },
    amount: { value: 1500 },
    date: { value: "2024-12-31" },
  },
});

完整文档请参阅补丁修改

解析

将已有的 .xlsx 文件解析为 WorkbookOptions,用于检查或往返工作流:

import { parseWorkbook } from "@office-open/xlsx";

const opts = parseWorkbook(buffer);
// opts.worksheets — 工作表数组
// opts.worksheets[0].children — 包含单元格的行
// opts.title, opts.creator — 核心属性

完整文档请参阅解析

导出格式

每个异步方法都有对应的同步版本(例如 toBufferSync)。完整列表请参阅导出页面。

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