1. 产品
  2.   电子表格
  3.   Node.js
  4.   Node-XLSX-Writer
 
  

开源 Node.js 库,用于写入数据到 Excel 文件

专用的开源 Node.js Excel XLSX 库,提供一个简单的 API 用于生成 .xlsx(Excel)文件并以流式方式写入数据到 Excel 文件。

Node-XLSX-Writer 是什么?

在 Node.js 开发的世界里,生成报告和导出数据是常见需求。虽然像 exceljs 这样的强大库已经存在,但有时您需要一个专注于单一任务的解决方案;快速高效地写入 XLSX 文件,而无需读取或操作现有文件的额外开销。Node-XLSX-Writer 正是为此而生的轻量且直观的库。该库以其简洁性和专注功能脱颖而出。不同于处理读取、写入和操作的全面 Excel 库,此模块仅专注于写入 XLSX 文件,使其轻量、易学、实现快速且可靠。

Node-XLSX-Writer 是一个轻量且直观的库,专为在 Node.js 应用中生成 XLSX(Excel)文件而设计。对于需要生成类似 CSV 的导出并希望利用 Excel 的格式化与多工作表支持(通过其简洁的 API)的任务,它是理想选择,可保持代码整洁并降低应用的内存占用。该库由 Ruben Vermeersch 开发,并通过对示例 XLSX 文件的逆向工程实现。它为开发者提供了一种简单有效的方式,将数据导出为 Excel 格式,而无需使用更大型的 Excel 操作库的复杂性。这使其成为需要从数据库或 API 生成大型报告的应用的理想选择,因为其流式特性即使在处理海量数据集时也能保持低内存使用。

Previous Next

Node-XLSX-Write 入门指南

在安装 Node-XLSX-Writer 之前,您需要在系统上安装 libzip 开发库。该库依赖这些本机绑定来创建 zip 文件(XLSX 文件本质上是压缩的 XML)。请使用以下命令进行成功安装。

通过 npm 安装 Node-XLSX-Write

npm install --save xlsx-writer

您可以 下载 编译好的共享库,从 GitHub 仓库进行安装。

Node.js 中的 Excel XLSX 电子表格创建

开源的 Node-XLSX-Writer 库提供了创建和处理 Node.js 应用程序中 Excel XLSX 文件的功能。该库不需要 Microsoft Excel 或 COM 互操作。它以编程方式构建 XLSX 文件(本质上是 XML 部件的 ZIP 文件)。这使其适用于服务器端的 Node.js 使用。以下代码示例演示了创建包含一些数据的 Excel 文件的最简方法。

如何在 Node.js 应用中创建 Excel XLSX 文件?

// Import the library
const XLSXWriter = require('node-xlsx-writer');

// 1. Create a new instance, specifying the output file path.
const xlsx = new XLSXWriter('./output/simple_report.xlsx');

// 2. Write the header row (optional, but recommended).
xlsx.writeRow(['Name', 'Email', 'Sign-Up Date']);

// 3. Write some data rows.
xlsx.writeRow(['Alice Smith', 'alice@example.com', '2023-10-25']);
xlsx.writeRow(['Bob Johnson', 'bob.j@domain.com', '2023-10-26']);
xlsx.writeRow(['Charlie Brown', 'charlie@brown.com', '2023-10-27']);

// 4. Finalize the file. This step is crucial to save the file properly.
xlsx.finalize();

console.log('Excel file created successfully!');

大数据集的流式处理

这正是 Node-XLSX-Writer 发光的地方。它不必将所有数据一次性加载到内存中,您可以逐行流式写入。这对于处理数据库查询结果非常完美。库使用函数从数据库中发出每条记录。我们立即将其写入 Excel 文件的新行中。此方法保持内存使用恒定,无论您是导出 100 行还是 100 万行。

如何在 Node.js 应用中从数据库进行流式读取?

// Import the library
const XLSXWriter = require('node-xlsx-writer');

// 1. Create a new instance, specifying the output file path.
const xlsx = new XLSXWriter('./output/simple_report.xlsx');

// 2. Write the header row (optional, but recommended).
xlsx.writeRow(['Name', 'Email', 'Sign-Up Date']);

// 3. Write some data rows.
xlsx.writeRow(['Alice Smith', 'alice@example.com', '2023-10-25']);
xlsx.writeRow(['Bob Johnson', 'bob.j@domain.com', '2023-10-26']);
xlsx.writeRow(['Charlie Brown', 'charlie@brown.com', '2023-10-27']);

// 4. Finalize the file. This step is crucial to save the file properly.
xlsx.finalize();

console.log('Excel file created successfully!');

自定义样式(字体、颜色、边框)

虽然不如完整套件那样功能齐全,开源的 Node-XLSX-Writer 库提供了必备的样式选项,使您的报告看起来更专业。它支持在电子表格中处理样式的各种功能,例如将字体设置为粗体或斜体,设置背景色和边框颜色,定义边框样式(‘thin’,‘medium’,‘thick’)等。以下示例展示了软件开发人员如何在 Node.js 应用程序中为标题行设置样式。

如何通过 Node.js 库为标题行应用样式?

const XLSXWriter = require('node-xlsx-writer');
const xlsx = new XLSXWriter('./output/styled_report.xlsx');

// Define a style object for the header
const headerStyle = {
  bold: true,
  background: 'FF2A52F5', // Blue background (ARGB Hex format)
  color: 'FFFFFFFF',       // White text
  border: 'thin',          // Thin border around cells
  borderColor: 'FF000000'  // Black border
};

// Apply the style when writing the header row
xlsx.writeRow(['Product', 'Category', 'Price', 'Stock'], headerStyle);

// Data rows are written without a style (or with a different one)
xlsx.writeRow(['Laptop', 'Electronics', 999.99, 15]);
xlsx.writeRow(['Desk Chair', 'Furniture', 249.50, 8]);

xlsx.finalize();

 中国人