如何在Node.js中读取和写入Excel文件?
ExcelJS是一个JavaScript库,它提供了一个方便的解决方案来处理'.xlsx'文件,允许你使用Node.js以编程方式读取、操作和保存数据。
在本教程中,我们将逐步讲解如何在Node.js中使用ExcelJS读取和写入Excel文件。你将学习如何初始化工作簿、从现有的Excel文件读取数据、动态构建新的工作表以及保存更新。每个部分都包含实际示例,以帮助你在现实场景中应用这些概念。
前提条件
- 你应该具备JavaScript的基础知识。
- 你应该具备Node.js的基础知识。
设置环境
让我们设置项目结构并安装必要的库。按照以下步骤准备你的Node.js环境:
步骤1:创建一个新目录
首先,为项目创建一个新目录。我们将它命名为excel-read-write,但你可以随意命名。
mkdir excel-read-write cd excel-read-write
步骤2:初始化一个Node.js项目
运行以下命令,使用默认的package.json文件初始化一个新的Node.js项目:
npm init -y
步骤3:安装exceljs库
要处理Excel文件,请安装exceljs库。
npm install exceljs
步骤4:创建一个应用程序文件
为方便起见,创建一个名为app.js的文件,我们将在其中编写代码。
touch app.js
从Excel文件读取数据
让我们首先从现有的Excel文件读取数据。在这个场景中,假设你有一个名为country.xlsx的Excel文件,其中包含国家列表及其人口。我们的目标是加载此文件,读取其内容并显示每一行的信息。
让我们开始编写我们的app.js文件。
步骤1:导入ExcelJS并初始化工作簿
首先导入exceljs并创建一个新的Workbook实例。
const ExcelJS = require("exceljs");
const workbook = new ExcelJS.Workbook();
步骤2:读取文件并访问数据
我们将使用以下数据。你可以将数据保存为country.xlsx。
country.xlsx
| 国家 | 人口 |
| 尼日利亚 | 2亿 |
| 加纳 | 1000万 |
| 塞内加尔 | 500万 |
使用'workbook.xlsx.readFile()'加载'country.xlsx'。加载后,你可以按索引或名称访问各个工作表。
workbook.xlsx.readFile("country.xlsx").then(() => {
const worksheet = workbook.getWorksheet(1); // Get the first sheet
// Iterate through each row in the worksheet
worksheet.eachRow((row, rowNumber) => {
console.log(`Row ${rowNumber}: ${row.values}`);
});
});
输出

将数据写入新的Excel文件
现在我们已经介绍了读取数据,让我们来探讨如何将数据写入新的Excel文件。假设你想创建一个报告,总结员工的角色、薪水和工作年限。
- 创建新的工作表:使用'workbook.addWorksheet()'创建一个新的工作表。
- 定义列和添加行:设置带标题和键的列。然后可以将每一行添加为具有键值对的对象。
- 保存文件:使用'writeFile()'将工作簿保存到新文件,例如'output.xlsx'。
以下是在app.js中设置此代码的代码:
const ExcelJS = require("exceljs");
const workbook = new ExcelJS.Workbook();
// Add a new worksheet named "Sheet1"
const worksheet = workbook.addWorksheet("Sheet1");
// Define columns for the worksheet
worksheet.columns = [
{ header: "Job", key: "job", width: 10 },
{ header: "Salary", key: "salary", width: 10 },
{ header: "Years", key: "years", width: 5 },
];
// Add rows to the worksheet
worksheet.addRow({ job: "Engineer", salary: 50000, years: 5 });
worksheet.addRow({ job: "Designer", salary: 40000, years: 3 });
worksheet.addRow({ job: "Manager", salary: 60000, years: 10 });
// Save the workbook to a new file
workbook.xlsx.writeFile("output.xlsx").then(() => {
console.log("File created successfully");
});
以下是关键步骤的细分:
- addWorksheet("Sheet1")创建一个名为"Sheet1"的新工作表。
- worksheet.columns定义标题和键。每个键映射到一个列标题,而width设置文件中列的宽度。
- addRow()根据指定的键添加各个行。
运行此代码后,你将拥有一个名为output.xlsx的文件,其中包含一个名为Sheet1的新工作表,其中包含你指定的数据。

输出

完整程序
总而言之,以下是读取country.xlsx中的数据并将新数据写入output.xlsx的完整代码。
const ExcelJS = require("exceljs");
// Create a new Workbook
const workbook = new ExcelJS.Workbook();
// Read existing data
workbook.xlsx.readFile("country.xlsx").then(() => {
const worksheet = workbook.getWorksheet(1); // Get the first sheet
worksheet.eachRow((row, rowNumber) => {
console.log(`Row ${rowNumber}: ${row.values}`);
});
});
// Add new data to a different worksheet
const newWorkbook = new ExcelJS.Workbook();
const newWorksheet = newWorkbook.addWorksheet("Sheet1");
// Define columns
newWorksheet.columns = [
{ header: "Job", key: "job", width: 10 },
{ header: "Salary", key: "salary", width: 10 },
{ header: "Years", key: "years", width: 5 },
];
// Insert rows
newWorksheet.addRow({ job: "Engineer", salary: 50000, years: 5 });
newWorksheet.addRow({ job: "Designer", salary: 40000, years: 3 });
newWorksheet.addRow({ job: "Manager", salary: 60000, years: 10 });
// Save new workbook
newWorkbook.xlsx.writeFile("output.xlsx").then(() => {
console.log("File created successfully");
});
结论
在本教程中,我们介绍了如何使用'exceljs'库在Node.js中读取和写入Excel文件。你学习了如何初始化工作簿,从现有的Excel文件读取数据,以及动态添加和配置工作表、列和行。我们还介绍了将更新保存到新Excel文件的过程。
在Node.js中处理Excel文件为处理数据提供了许多可能性,例如生成报告、处理来自外部系统的数据或导出应用程序的结果。通过利用'exceljs',你可以构建强大的数据驱动应用程序并简化系统之间的数据交换。本教程为在Node.js中使用Excel奠定了基础,你可以根据更复杂的使用案例进行扩展。
数据结构
网络
关系型数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP