如何使用连接的工作簿在 JavaScript 中导出真实的 Excel 工作簿
Source: Dev.to

如果你现在正在将数据导出为 Excel,通常会生成 CSV 文件或使用基本的 XLSX 工具。这些方法虽然可行,但很快就会遇到限制:
- CSV 不能保留数据类型
- 没有公式、格式或表格
- 没有 Power Query 或刷新逻辑
- 无法与 Excel Online 集成
当开发者需要真正的 Excel 行为,而不仅仅是一个后缀为 .xlsx 的文件时,CSV 已经力不从心。这时 Connected Workbooks 就派上用场了。
本指南将带你了解该库是什么、它是如何工作的,以及如何在你的 JavaScript 或 TypeScript 应用中直接导出真实的 Excel 工作簿。
介绍
CSV 导出简单但有限。它们无法表达:
- 丰富的表格
- 元数据
- 样式
- 可重复使用的工作表
- 查询连接
- 真正的 Excel 结构
对于构建仪表板、管理工具或分析视图的团队来说,仅使用 CSV 导出会令人沮丧。你真正想要的是一个行为像 Excel 生成的工作簿——包含表格、查询、刷新逻辑、模板。Connected Workbooks 只需几行代码即可实现这一点。
什么是 Connected Workbooks?
Connected Workbooks 是由 Microsoft 维护的开源 JavaScript/TypeScript 库。
Repository:
它的目的很简单:将您在 Web 或后端应用中的数据生成真实的 Excel(.xlsx)工作簿——完整包含表格、查询或模板。
它充当您的应用与 Excel 之间的桥梁:
- 您的应用提供 HTML 表格、数组、网格数据以及 Power Query 查询
- Connected Workbooks 将这些转换为结构化的 Excel 表格
- 生成一个
Blob(或 Buffer) - 您可以下载它,或立即在 Excel Online 中打开
这使得导出 Excel 文件的体验像生成 PDF 一样——简单、声明式、可靠。
连接工作簿的工作原理
思维模型
Your Application → Connected Workbooks → Excel Workbook (.xlsx)
您可以提供的数据源
- HTML
<table>元素 - 网格或数组数据
- Power Query mashups
- 带有命名表格的 Excel 模板
库生成的内容
- Excel 表格(而非静态粘贴值)
- 包含工作表、元数据和表格定义的工作簿
- 可选的 Power Query 连接
- 最终的
.xlsxBlob/Buffer
对比
| 特性 | CSV / 基础 XLSX | 连接工作簿 |
|---|---|---|
| 仅原始数值 | ✅ | ❌(真实表格) |
| 无元数据 | ✅ | ❌(列类型、名称、格式) |
| 无刷新逻辑 | ✅ | ❌(可选 Power Query 刷新) |
| 无结构感知 | ✅ | ❌(模板、表格注入) |
安装
npm install @microsoft/connected-workbooks
实用演练:导出 HTML 表格
HTML 表格示例
<table id="salesTable">
<thead>
<tr>
<th>Product</th>
<th>Units</th>
<th>Revenue</th>
</tr>
</thead>
<tbody>
<tr>
<td>Keyboard</td>
<td>124</td>
<td>80</td>
</tr>
<tr>
<td>Mouse</td>
<td>183</td>
<td>60</td>
</tr>
</tbody>
</table>
JavaScript/TypeScript 代码
import { WorkbookManager } from "@microsoft/connected-workbooks";
const workbookManager = new WorkbookManager();
async function exportTable() {
const tableElement = document.getElementById("salesTable");
const blob = await workbookManager.generateTableWorkbookFromHtml(tableElement);
// Option 1 — download locally
workbookManager.download(blob, "sales.xlsx");
// Option 2 — open directly in Excel Online
workbookManager.openInExcelWeb(blob, "sales.xlsx", true);
}
运行 exportTable() 即可立即为用户提供专业的、Excel 原生的导出——无需手动构建任何 XLSX 结构。
实际使用案例
- Analytics dashboards – 将图表、表格和原始数据导出到分析师可以修改的工作簿中。
- Reporting tools – 基于预设公式模板的月度或周度报告。
- Admin / internal systems – 简单的“导出为 Excel”按钮,生成真正的 Excel 表格,而不是普通的 CSV。
Conclusion
如果您已经不再满足于 CSV 导出,或想为用户提供原生的 Excel 体验,Connected Workbooks 是一个实用且对开发者友好的选项。它保持代码简洁,同时生成用户可信赖的真实结构化 Excel 工作簿。
在仓库中探索更多模式、示例和实用函数。