在前端开发中,操作 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 文件内容如下:
Name | Age | City |
---|---|---|
Alice | 24 | New York |
Bob | 30 | London |
执行上述代码后,输出结果将是:
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 文件中的内容将更新为:
Name | Age | City |
---|---|---|
Alice | 25 | New York |
Bob | 30 | London |
四、写入新的 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 文件内容将是:
Name | Age | City |
---|---|---|
Alice | 24 | New York |
Bob | 30 | London |
五、合并单元格与设置样式
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 文件处理需求!