Skip to content

@marcusok/excel-exporter ​

基于 modern-xlsx(WASM)与自研 Fast stream 构建的 Excel 导出库:声明式 API、自动模式路由、完整单元格样式、Web Worker 多线程、大文件快速写入,以及无样式流式降级兜底。

能力清单 ​

能力说明
声明式 API用 sheets + columns + data 描述导出,无需手写单元格
自动模式路由auto 按数据量选择 main / worker / Fast stream(阈值 20,000 / 50,000 行)
完整单元格样式字体、填充、对齐、边框、数字格式;内置 8 种 StylePresets
值格式化FormatSpec 声明式格式化(enum / date / datetime / number / padding)
Worker 多线程主线程仅一次结构化克隆,构建在 Worker 内执行(≥ 5 万行的流式路径不依赖 WASM)
流式写入自研 fast-xlsx.ts + fflate,10 万行约 0.8s
多级兜底WASM 不可用时自动降级无样式快速流
进度/阶段回调onProgress、onPhase 便于可视化与埋点

安装 ​

bash
pnpm add @marcusok/excel-exporter

一条安装命令即得全部:导出引擎(modern-xlsx JS 胶水 + fflate)与进度遮罩 UI 都在构建期打包进本包 dist,WASM / worker 资产在打包器与 Node 中均自动定位(自托管场景才需要 configureWasm),详见 快速开始。

快速上手 ​

ts
import { exportExcel, StylePresets } from "@marcusok/excel-exporter";

await exportExcel({
  filename: "sales-report",
  sheets: [
    {
      name: "Sales",
      freezeRows: 1,
      autoFilter: true,
      columns: [
        { prop: "orderId", label: "订单号", width: 18 },
        {
          prop: "amount",
          label: "金额",
          width: 14,
          style: StylePresets.currency,
        },
      ],
      data: [{ orderId: "ORD-001", amount: 9999.99 }],
    },
  ],
});

文档目录 ​

  • 指南:安装配置、自动模式、样式、格式化、高级特性、Worker/流式、兜底、Node/SSR、性能
  • 使用案例:销售月报、库存台账、大文件导出、多 Sheet 工作簿(含 mock 数据预览)
  • API 参考:入口函数、类型定义、样式预设、FormatSpec

版本与依赖 ​

  • 当前版本:构建时从工作区 package.json 读取(单一数据源;文档站不查询 npm registry)
  • 运行时依赖:modern-xlsx——仅类型声明,让发布的 .d.ts 里的外部类型导入可解析;引擎本体(及遮罩 UI)在构建期打包进本包 dist,WASM 二进制通过本包自己的 exports 映射分发
  • 环境:Node >= 22;浏览器需支持 WebAssembly

性能数字为本机实测(真实 Chrome,6 列混合类型),详见 性能参考。