如何在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奠定了基础,你可以根据更复杂的使用案例进行扩展。

更新于:2024年11月5日

浏览量:60

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.