XLSX

导出

将工作簿导出为 Buffer、Blob、Base64、流等格式

Packer 类将 Workbook 转换为各种输出格式。每个异步方法(toBuffertoBlob 等)都有对应的同步版本(toBufferSynctoBlobSync 等)。

异步方法使用 Web Workers 进行非阻塞 ZIP 压缩;同步方法会阻塞主线程,但避免了 Worker 开销。

toBuffer

返回 Buffer。适用于 Node.js 文件 I/O。

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

// 异步(非阻塞,使用 Web Workers)
const buffer = await Packer.toBuffer(wb);
writeFileSync("output.xlsx", buffer);

// 同步(阻塞,无 Worker 开销)
const buffer2 = Packer.toBufferSync(wb);
writeFileSync("output-sync.xlsx", buffer2);

toBlob

返回 Blob。适用于浏览器环境。

// 异步
const blob = await Packer.toBlob(wb);

// 同步
const blob2 = Packer.toBlobSync(wb);

// 触发下载
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "output.xlsx";
a.click();
URL.revokeObjectURL(url);

toBase64String

返回 Base64 编码字符串。适用于 Data URL 或 API 负载。

// 异步
const base64 = await Packer.toBase64String(wb);

// 同步
const base642 = Packer.toBase64StringSync(wb);

const dataUrl = `data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,${base64}`;

toBytes

返回 Uint8Array。适用于需要原始字节而非 Node.js Buffer 的场景。

// 异步
const bytes = await Packer.toBytes(wb);

// 同步
const bytes2 = Packer.toBytesSync(wb);

toArrayBuffer

返回 ArrayBuffer。适用于浏览器或跨平台代码。

// 异步
const ab = await Packer.toArrayBuffer(wb);

// 同步
const ab2 = Packer.toArrayBufferSync(wb);

toString

返回字符串表示。适用于调试。

// 异步
const str = await Packer.toString(wb);

// 同步
const str2 = Packer.toStringSync(wb);

toStream

返回 ReadableStream<Uint8Array>。适用于流式传输大型工作簿。Node.js 和浏览器均可使用。此方法始终是同步的。

import { createWriteStream } from "node:fs";
import { Readable } from "node:stream";

const stream = Packer.toStream(wb);
Readable.fromWeb(stream).pipe(createWriteStream("output.xlsx"));

compile

返回原始 Zippable 文件映射,不进行压缩。适用于需要自定义 ZIP 流程的场景。

const files = Packer.compile(wb);
// files 是一个 Zippable —— 可以传递给自定义 zip 函数

汇总

方法异步返回同步返回运行环境适用场景
toBufferPromise<Buffer>BufferNode.js文件 I/O
toBlobPromise<Blob>Blob浏览器下载
toBytesPromise<Uint8Array>Uint8Array任意原始字节
toBase64StringPromise<string>string任意Data URL、API
toStringPromise<string>string任意调试
toArrayBufferPromise<ArrayBuffer>ArrayBuffer任意内存操作
toStreamReadableStream<Uint8Array>两者均可大文件
compileZippable任意自定义 ZIP
Copyright © 2026