@betteroffice/xlsx

中文文档
0.5.1发布于 2026/10/27Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 36.3万

Excel-feelful XLSX电子表格编辑器和取景器核心:全OOXML忠心,实时人类+AI代理协作. 无框架(Rust/Wasm).

中文使用文档
文档目录13 节
  1. 安装
  2. 使用量
  3. 入境点
  4. Canvas 渲染和网格辅助工具
  5. 范围移动
  6. 打印和PNG 导出
  7. 工人会议
  8. 编辑建议
  9. 版本已检查的编辑批次
  10. 有结构的出口
  11. 协作
  12. 操作简介
  13. 文档

@ betteroffice/ xlsx (韩语)

无框架 XLSX 解析、公式计算、编辑和渲染 发动机。 包括画布画、取景口、点击测试、无障碍和剪贴板帮助.

安装

bun add @betteroffice/xlsx

无对等依存.

使用量

工作表、行和列指数都是零的,所以 editCell(0, 9, 2, ...) 在单元格 C10 上写入 第一页.

import { initWasm, openWorkbook } from '@betteroffice/xlsx';

export async function updateWorkbook(bytes: Uint8Array): Promise<Uint8Array> {
  await initWasm();
  const workbook = openWorkbook(bytes);
  try {
    workbook.editCell(0, 9, 2, '=SUM(C1:C9)');
    return workbook.save();
  } finally {
    workbook.dispose();
  }
}

单元格输入解析文本、数字、布尔和公式; 公式从 =。编辑单元格重新计算其依赖.

入境点

这些入境点出口自 @betteroffice/xlsx数字 :

进入点说明
initWasm(input?)初始化引擎;同时调用共享初始化.
openWorkbook(bytes, options?)打开 XLSX 字节作为同步 WorkbookHandle 初始化后.
openWorkbookSession(bytes, options?)在有同步接入功能的专职工人中打开工作手册.
paintDisplayList(ctx, frame, dpr, origin?)将显示列表绘入画布 2D 上下文 .
isPngExportAvailable()检查初始化引擎是否支持PNG导出.
isProposalsAvailable()检查初始化引擎是否支持编辑提案.
exportXlsxStructured(bytes, options?)从字节同步导出存储的工作簿内容 .
exportXlsxMarkdown(bytes, options?, markdownOptions?)从字节同步导出 Markdown .

initWasm() 默认加载已装入的 WASM 资产。 通过 WASM 字节或编译 WebAssembly.Module 在无法获取此 URL 的运行时间中。 完成后处理工作簿手柄.

Canvas 渲染和网格辅助工具

WorkbookHandle.displayList(viewport) 返回活动工作表的显示列表。 备份存储大小 对于设备像素比,并给出其逻辑 CSS 维度 :

import { paintDisplayList, type WorkbookHandle } from '@betteroffice/xlsx';

export function drawWorkbook(workbook: WorkbookHandle, canvas: HTMLCanvasElement) {
  const dpr = window.devicePixelRatio || 1;
  canvas.width = 800 * dpr;
  canvas.height = 600 * dpr;
  canvas.style.width = '800px';
  canvas.style.height = '600px';
  const ctx = canvas.getContext('2d');
  if (!ctx) throw new Error('Canvas 2D is unavailable');
  const frame = workbook.displayList({ x: 0, y: 0, width: 800, height: 600 });
  paintDisplayList(ctx, frame, dpr);
}

用于自定义网格 cellAtPoint, (中文(简体) ), cellRect,以及 rangeRect 用于测试和几何, buildA11yGrid 用于获取数据,以及 toTsv 编号 : fromTsv 用于剪贴板文本. 这个 @betteroffice/xlsx/headless 输入导出纯网格助手和类型而不包含画画 或WASM装载机.

范围移动

workbook.moveRange(sheet, source, destination) 在工作表中移动 A1 区域并重写 引用一个倒移步骤; 目的地是新的左上单元格。 移动时的表面错误 拒绝而不是丢弃原始工作手册.

打印和PNG 导出

workbook.printDisplayList(sheet, range, metrics, gridlines) 使用 PrintMetrics 从工作簿的普通字体中测量。 呼叫者选择纸张大小、边距和页码; paintDisplayList 接受支持存储像素中的可选来源,用于定位结果.

workbook.renderPng(viewport) 导出活动工作表的视图. workbook.renderRangePng() 出口 使用范围,或接受 { range, scale } 以选择 A1 范围和光栅尺度。 两人返回PNG 字节同步; 检查 isPngExportAvailable() 在叫他们之前.

工人会议

低层 openWorkbookSession API( 也从 @betteroffice/xlsx/worker)为 实验 它返回一个 WorkbookSession 与 通过承诺返回业务 session.call,加同步键 session.save() 财务报告和审定财务报表 session.dispose() 方法。 。 .

React编辑器默认使用工人并暴露出自己的同步API. 使用 @betteroffice/xlsx-react 为编辑UI.

编辑建议

workbook.propose(agentId, note, edits) 阶段单元格编辑以供审查而不应用. listProposals, (中文(简体) ), acceptProposal,以及 rejectProposal 管理队列; 接受应用 作为撤消步骤并重新计算受抚养人的建议。 检查 isProposalsAvailable() 首先是:; 接受掷出 StaleProposalError 如果目标细胞在集结后有所改变.

版本已检查的编辑批次

readCells 返回带有其版本的单元格; validateEdits 检查一批没有承诺, 财务报告和审定财务报表 applyEdits 应用所有步骤或返回打入的拒绝,而不修改工作簿. 见 在版本检查的批次中编辑 XLSX 对于目标,守卫, 支持的步骤,和限制.

有结构的出口

exportStructured 财务报告和审定财务报表 exportMarkdown 用定位锚和诊断读取承诺内容 不计算公式。 见 用锚导出 XLSX 内容 用于范围、隐藏内容、限制和以字节为基础的出口.

协作

这个 @betteroffice/xlsx/collaboration 进口 CollaborationProvider 用于连接复制品 到二进制运输。 见 协作指南 供货商生命周期、运输装置和共享起始状态.

打开工作簿 openWorkbook(bytes, { collaborative: true })合作工作手册 同步单元格内容、公式、样式、列宽和行高,与本地撤销和 重做它的效果同步. 结构编辑:插入或删除行和列,添加、去除、移动或重命名 工作表,并更改图表或定义的名称.

操作简介

editCellProfiled, (中文(简体) ), applyOpsProfiled,以及 displayListProfiled 返回引擎阶段持续时间 毫秒与结果。 见 操作简介。 。 。 .

文档

版本与发布记录

@betteroffice/xlsx 共发布 14 个版本,首次发布于 2026/07/13;过去 12 个月发布了 14 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.5.1latest2026/10/2711 天前
0.5.02026/10/2613 天前
0.3.02026/09/291 个月前
0.2.12026/09/171 个月前
0.2.02026/09/161 个月前
0.1.02026/08/202 个月前

关于 @betteroffice/xlsx 的常见问题

@betteroffice/xlsx 是什么?

Excel-feelful XLSX电子表格编辑器和取景器核心:全OOXML忠心,实时人类+AI代理协作. 无框架(Rust/Wasm).

如何安装 @betteroffice/xlsx?

在项目目录运行 npm install @betteroffice/xlsx,或使用 pnpm add / yarn add / bun add。

@betteroffice/xlsx 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@betteroffice/xlsx 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@betteroffice/xlsx 可以商用吗?

@betteroffice/xlsx 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@betteroffice/xlsx 的下载量有多少?

根据 npm 官方下载统计,@betteroffice/xlsx 在 2026/10/08 – 2026/11/06 这 30 天内被下载 363,474 次,日均约 12,116 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@betteroffice/xlsx 还在维护吗?

最新版本 0.5.1 发布于 2026/10/27(11 天前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/07/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。