XLSX

@office-open/xlsx

使用声明式 TypeScript API 生成、解析和修补 .xlsx 电子表格

安装

pnpm add @office-open/xlsx

快速开始

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

主要组件

组件说明
worksheets根工作簿配置,包含工作表和属性
worksheet单个工作表,包含行、样式和功能
rows, cells, columns行、单元格和列,支持值、样式、高度和宽度
styles基于索引的样式系统(字体、填充、边框)
sharedStrings共享字符串表,用于字符串去重(自动管理)
table数据表格,支持筛选、排序和汇总行
pivotTable带聚合和筛选的数据透视表
drawing工作表中的图片和图表定位
comments单元格批注,支持作者跟踪和富文本
hyperlink外部和内部超链接
mergeCells跨行跨列合并单元格
dataValidation列表、数字、日期和自定义验证规则
conditionalFormatting基于单元格值的格式化规则
autoFilter列标题筛选下拉框
freezePane冻结行和列,保持表头可见
sheetProtection密码保护工作表和可编辑范围
revisionLog通过修订日志跟踪更改
pageSetup页面大小、边距、方向和打印设置
headerFooter打印页眉和页脚

补丁修改

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

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

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

完整文档请参阅

解析

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

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

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

完整文档请参阅

导出格式

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

方法返回值适用场景
generateWorkbook(opts)BufferNode.js 文件 I/O
generateWorkbook(opts, { type: "blob" })Blob浏览器下载
generateWorkbook(opts, { type: "base64" })stringData URL、API 负载
generateWorkbook(opts, { type: "string" })string调试、检查
generateWorkbookStream(opts)ReadableStream<Uint8Array>流式传输大文件
Copyright © 2026