XLSX

补丁修改

通过替换占位符修改已有的 .xlsx 文件

修补已有的 .xlsx 模板,将 {{placeholder}} 占位符替换为新的单元格值。

patchWorkbook

替换已有 .xlsx 文件中的占位符:

import { patchWorkbook } from "@office-open/xlsx";
import { readFileSync, writeFileSync } from "node:fs";

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

writeFileSync("output.xlsx", result);

工作原理

修补器会扫描每个工作表中所有单元格,查找匹配占位符模式(默认 {{key}})的文本。找到后,将单元格值替换为修补内容。

跨多个运行(因格式拆分)的占位符会被自动处理。

修补值

每个修补项将单元格值替换为新值:

patches: {
  name: { value: "Alice" },             // 字符串
  quantity: { value: 42 },              // 数字
  active: { value: true },              // 布尔值
  deadline: { value: new Date("2024-12-31") }, // 日期
}

修补值的类型决定了输出中的单元格类型。

自定义分隔符

默认分隔符为 {{}}。可通过 placeholderDelimiters 修改:

await patchWorkbook({
  outputType: "nodebuffer",
  data: templateBuffer,
  patches: { name: { value: "John" } },
  placeholderDelimiters: { start: "<<", end: ">>" },
});

输出类型

outputType 参数控制返回类型:

outputType返回值
"nodebuffer"Buffer
"uint8array"Uint8Array
"arraybuffer"ArrayBuffer
"base64"string
"blob"Blob
"string"string

选项

选项类型默认值说明
outputTypestring输出格式(见上表)
dataBuffer | Uint8Array | ...输入 .xlsx 文件数据
patchesRecord<string, IPatch>占位符名称到新值的映射
placeholderDelimiters{ start: string, end: string}{ {{, }} }自定义占位符分隔符

提示

  • 占位符会在工作簿的所有工作表中被替换。
  • 替换值时会保留原始单元格的样式。
  • 在 Node.js 中使用 nodebuffer 进行文件 I/O,在浏览器中使用 blob 进行下载。
  • 修补值是普通值(不需要类实例)。
Copyright © 2026