如何使用连接的工作簿在 JavaScript 中导出真实的 Excel 工作簿

发布: (2025年12月30日 GMT+8 22:03)
5 min read
原文: Dev.to

Source: Dev.to

封面图片:在 JavaScript 中使用连接工作簿导出真实 Excel 工作簿

如果你现在正在将数据导出为 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 连接
  • 最终的 .xlsx Blob/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 工作簿。

在仓库中探索更多模式、示例和实用函数。

Back to Blog

相关文章

阅读更多 »

React 峰会 2026

React Summit 2026 的封面图片 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.a...