ExcelJS:轻松实现Excel文件的读取、操作与写入

在前端开发中,操作 Excel 文件是一个常见的需求,尤其是在生成报告、数据导入导出等场景中。ExcelJS 是一个非常强大的 Node.js 库,可以帮助我们在 JavaScript 中轻松处理 Excel 文件。无论是读取、修改,还是生成新的 Excel 文件,ExcelJS 都能提供高效且灵活的支持。

本文将介绍如何使用 ExcelJS 实现 Excel 文件的读取、操作和写入,帮助你在项目中更好地处理 Excel 文件。

一、ExcelJS 安装与配置

首先,我们需要在项目中安装 ExcelJS。可以通过 npm 来安装:

npm install exceljs

安装完成后,我们就可以开始在 Node.js 环境中使用 ExcelJS 进行 Excel 文件的操作了。

二、读取 Excel 文件

通过 ExcelJS,我们可以轻松读取 Excel 文件中的数据,包括读取 Excel 中的工作表、行、列以及单元格的内容。接下来,我们将展示如何读取一个 Excel 文件并获取其中的内容。

代码示例:读取 Excel 文件

const ExcelJS = require('exceljs');

async function readExcel() {
  const workbook = new ExcelJS.Workbook();
  await workbook.xlsx.readFile('example.xlsx'); // 读取 Excel 文件
  
  const worksheet = workbook.getWorksheet(1); // 获取第一个工作表

  worksheet.eachRow((row, rowNumber) => {
    console.log(`Row ${rowNumber}:`, row.values); // 打印每一行的数据
  });
}

readExcel();
解释:
  • workbook.xlsx.readFile('example.xlsx'):读取指定路径的 Excel 文件。
  • workbook.getWorksheet(1):获取第一个工作表,可以根据需要调整索引,选择不同的工作表。
  • worksheet.eachRow:遍历工作表的每一行,并打印出每一行的值。

结果示例:

假设 Excel 文件内容如下:

NameAgeCity
Alice24New York
Bob30London

执行上述代码后,输出结果将是:

Row 1: [ , 'Name', 'Age', 'City' ]
Row 2: [ , 'Alice', 24, 'New York' ]
Row 3: [ , 'Bob', 30, 'London' ]

三、修改 Excel 文件

我们还可以修改 Excel 文件的内容,比如更新某个单元格的数据或者插入新的行。接下来,我们将演示如何修改 Excel 文件中的单元格内容。

代码示例:修改 Excel 文件

const ExcelJS = require('exceljs');

async function modifyExcel() {
  const workbook = new ExcelJS.Workbook();
  await workbook.xlsx.readFile('example.xlsx'); // 读取 Excel 文件
  
  const worksheet = workbook.getWorksheet(1); // 获取第一个工作表

  // 修改某一行的某一单元格
  const row = worksheet.getRow(2); // 获取第二行
  row.getCell(2).value = 25; // 将第二列(年龄)修改为 25
  row.commit(); // 提交修改

  // 修改完成后保存文件
  await workbook.xlsx.writeFile('modified_example.xlsx');
  console.log('Excel 文件已修改并保存');
}

modifyExcel();
解释:
  • worksheet.getRow(2):获取第二行。
  • row.getCell(2).value = 25:修改第二行第二列的单元格的值为 25
  • row.commit():提交修改。
  • workbook.xlsx.writeFile('modified_example.xlsx'):保存修改后的文件到指定路径。

执行后,Excel 文件中的内容将更新为:

NameAgeCity
Alice25New York
Bob30London

四、写入新的 Excel 文件

除了读取和修改现有的 Excel 文件外,我们还可以使用 ExcelJS 创建一个全新的 Excel 文件,并将数据写入到新的工作表中。

代码示例:写入新的 Excel 文件

const ExcelJS = require('exceljs');

async function createExcel() {
  const workbook = new ExcelJS.Workbook(); // 创建新的工作簿
  const worksheet = workbook.addWorksheet('Sheet 1'); // 创建新的工作表

  // 设置表头
  worksheet.columns = [
    { header: 'Name', key: 'name', width: 20 },
    { header: 'Age', key: 'age', width: 10 },
    { header: 'City', key: 'city', width: 20 }
  ];

  // 添加数据
  worksheet.addRow({ name: 'Alice', age: 24, city: 'New York' });
  worksheet.addRow({ name: 'Bob', age: 30, city: 'London' });

  // 写入 Excel 文件
  await workbook.xlsx.writeFile('new_example.xlsx');
  console.log('新的 Excel 文件已创建');
}

createExcel();
解释:
  • workbook.addWorksheet('Sheet 1'):创建一个新的工作表,并命名为 Sheet 1
  • worksheet.columns:设置工作表的表头,并指定每列的宽度。
  • worksheet.addRow():向工作表中添加一行数据。
  • workbook.xlsx.writeFile('new_example.xlsx'):将内容保存到新的 Excel 文件中。

结果示例:

创建的 Excel 文件内容将是:

NameAgeCity
Alice24New York
Bob30London

五、合并单元格与设置样式

ExcelJS 还支持合并单元格、设置单元格样式等高级功能。

代码示例:合并单元格与设置样式

const ExcelJS = require('exceljs');

async function styleExcel() {
  const workbook = new ExcelJS.Workbook();
  const worksheet = workbook.addWorksheet('Sheet 1');

  // 设置表头
  worksheet.columns = [
    { header: 'Name', key: 'name', width: 20 },
    { header: 'Age', key: 'age', width: 10 },
    { header: 'City', key: 'city', width: 20 }
  ];

  // 添加数据
  worksheet.addRow({ name: 'Alice', age: 24, city: 'New York' });
  worksheet.addRow({ name: 'Bob', age: 30, city: 'London' });

  // 合并单元格
  worksheet.mergeCells('A1:C1'); // 合并A1到C1的单元格
  const cell = worksheet.getCell('A1');
  cell.value = 'User Information'; // 合并后的单元格内容
  cell.alignment = { horizontal: 'center', vertical: 'middle' }; // 设置内容居中
  cell.font = { bold: true, size: 14 }; // 设置字体加粗,大小为14

  // 写入文件
  await workbook.xlsx.writeFile('styled_example.xlsx');
  console.log('包含样式的 Excel 文件已创建');
}

styleExcel();
解释:
  • worksheet.mergeCells('A1:C1'):合并 A1 到 C1 的单元格。
  • cell.alignment:设置单元格内容的对齐方式。
  • cell.font:设置单元格字体的样式。

六、总结

通过本文的学习,你已经掌握了如何使用 ExcelJS 来实现 Excel 文件的读取、修改、创建以及样式设置等功能。无论是处理数据导入导出,还是生成动态报告,ExcelJS 都是一个强大的工具。

本文总结:

  • 安装并配置 ExcelJS
  • 读取、修改 Excel 文件
  • 创建新的 Excel 文件
  • 设置单元格样式与合并单元格

希望你能在实际项目中高效地使用 ExcelJS,轻松应对各种 Excel 文件处理需求!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只蜗牛儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值