XLSX
导出
将工作簿导出为 Buffer、Blob、Base64、流等格式
Packer 类将 Workbook 转换为各种输出格式。每个异步方法(toBuffer、toBlob 等)都有对应的同步版本(toBufferSync、toBlobSync 等)。
异步方法使用 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 函数
汇总
| 方法 | 异步返回 | 同步返回 | 运行环境 | 适用场景 |
|---|---|---|---|---|
toBuffer | Promise<Buffer> | Buffer | Node.js | 文件 I/O |
toBlob | Promise<Blob> | Blob | 浏览器 | 下载 |
toBytes | Promise<Uint8Array> | Uint8Array | 任意 | 原始字节 |
toBase64String | Promise<string> | string | 任意 | Data URL、API |
toString | Promise<string> | string | 任意 | 调试 |
toArrayBuffer | Promise<ArrayBuffer> | ArrayBuffer | 任意 | 内存操作 |
toStream | ReadableStream<Uint8Array> | — | 两者均可 | 大文件 |
compile | — | Zippable | 任意 | 自定义 ZIP |