使用Excel.js操作Excel文件
要使用Excel.js,您需要在项目中将其作为依赖项进行安装。要在您的项目中安装Excel.js,您需要运行以下命令−
npm install exceljs
一旦你运行了上述命令,Excel.js将作为你项目的一个依赖项被安装。
在本教程中的所有示例中,我们将使用“xlsx”文件,这是Microsoft Excel中使用的开放XML电子表格文件。
操作ExcelJS单元格
在下面的示例中,我们正在处理Excel工作表单元格。要获取特定单元格的引用,我们可以使用 getCell 函数。
考虑下面的代码。
// Read Simple Cell Values
const Excel = require('exceljs');
const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet');
ws.addRows([
[10, 2, 3, 4, 5],
[6, 11, 8, 9, 10],
[10, 11, 12, 14, 15],
[16, 17, 18, 13, 20]]
);
const valueOne = ws.getCell('B1').value;
console.log(valueOne);
const valueTwo = ws.getCell(1, 1).value;
console.log(valueTwo);
const valueThree = ws.getRow(3).getCell(3).value;
console.log(valueThree);
在这里,我正在向一个工作表添加数据,然后使用getCell函数从单元格中读取数据。
这个示例中有几个重要的要点需要注意,首先是我们生成了一个新的工作簿,这是通过下面显示的代码片段生成的。
const wb = new Excel.Workbook();
现在,我们需要在这个Excel文件中添加一个新的工作表,我们可以使用下面显示的代码片段来实现。
const ws = wb.addWorksheet('My Sheet');
现在,作为下一步,我们使用addRows将数据添加到工作表中,并利用getCell()函数提取不同单元格的值。
输出
运行此代码时,将生成以下输出−
2
10
12
写入Excel文件
在这个示例中,我们将向Excel文件写入数据。考虑下面显示的代码。
const Excel = require('exceljs');
const fileName = 'myexcel.xlsx';
const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet');
ws.getCell('A1').value = 'Mukul Latiyan';
ws.getCell('B1').value = 'Software Developer';
ws.getCell('C1').value = new Date().toLocaleString();
const r3 = ws.getRow(3);
r3.values = [1, 2, 3, 4];
wb.xlsx
.writeFile(fileName)
.then(() => {
console.log('file created');
})
.catch(err => {
console.log(err.message);
});
在这个示例中,我们使用excel.js来创建一个名为“myexcel.js”的Excel文件。然后我们在Excel文件中添加一个名为“我的表格”的新表格。最后,在“我的表格”不同的单元格位置中插入不同的值。
在第一个示例中,我们一次添加一个单元格的值,然后使用整行添加值,最后插入一个包含不同整数值的数组。
在这里,一旦我们将值添加到表格中,下一步就是能够在我们的机器上创建文件,为此我们使用writeFile()方法。
当你运行这段代码时,它将创建一个名为“myexcel.xlsx”的Excel文件,在该文件中,你将拥有我们插入的所有数据。
从Excel文件中读取数据
在这个示例中,我们将尝试从Excel文件中读取数据,为此需要使用readFile()方法,然后我们需要获取表格的名称,然后简单地使用getColumn()方法。当我们能够获取到特定的列之后,下一步是简单地迭代该列,我们可以使用eachCell()方法来实现这一点。
考虑下面显示的代码。
const Excel = require('exceljs');
const wb = new Excel.Workbook();
const fileName = 'myexcel.xlsx';
wb.xlsx.readFile(fileName).then(() => {
const ws = wb.getWorksheet('My Sheet');
c1.eachCell(c => {
console.log(c.value);
});
const c2 = ws.getColumn(2);
c2.eachCell(c => {
console.log(c.value);
});
}).catch(err => {
console.log(err.message);
});
eachCell()方法将帮助我们遍历特定列的单元格值,然后我们可以打印这些单元格的值。
在上面的示例中,我们在两列上使用eachCell()函数,即“列1”和“列2”,然后打印出这些列中的所有值。
输出
当您运行此代码时,它将产生以下输出:
Mukul Latiyan
1
Software Developer
2
与列一起工作
现在让我们来理解一个更复杂的示例,我们将把一个JSON数据数组加入到列中,然后还将添加多行,并使用getColumn()和eachCell()方法来获取每个列的单元格的值。
考虑下面的代码。
const Excel = require('exceljs');
const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet');
const headers = [{
header: 'First name',
key: 'fn',
width: 15
},
{
header: 'Last name',
key: 'ln',
width: 15
},
{
header: 'Occupation',
key: 'occ',
width: 15
},
{
header: 'Salary',
key: 'sl',
width: 15
},
]
ws.columns = headers;
ws.addRow(['Mukul', 'Latiyan', 'Software Developer', 1230]);
ws.addRow(['Prince', 'Yadav', 'Driver', 980]);
ws.addRow(['Mayank', 'Agarwal', 'Maali', 770]);
ws.getColumn('fn').eachCell((cell, rn) => {
console.log(cell.value);
});
console.log('--------------');
ws.getColumn('B').eachCell((cell, rn) => {
console.log(cell.value);
});
console.log('--------------');
ws.getColumn(3).eachCell((cell, rn) => {
console.log(cell.value);
});
console.log('--------------');
console.log(`There are ${ws.actualColumnCount} columns`);
在这段代码中,我们创建了一个名为headers的数组,在数组中,我们有不同的对象,在每个对象中,我们定义了header、key和width,这些字段将定义特定单元格的属性,然后我们将这个header数组分配给columns。 接下来,我们向这些columns添加多行,然后稍后,我们访问每个列,然后使用eachCell()方法从特定单元格获取值。 输出 当您运行此代码时,它将在终端上产生以下输出-
First name
Mukul
Prince
Mayank
--------------
Last name
Latiyan
Yadav
Agarwal
--------------
Occupation
Software Developer
Driver
Maali
--------------
There are 4 columns
使用行
现在我们来看看如何在Excel上使用特定于行的方法。考虑下面展示的代码。
const Excel = require('exceljs');
const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet');
const headers = [{
header: 'First name',
key: 'fn',
width: 15
},
{
header: 'Last name',
key: 'ln',
width: 15
},
{
header: 'Occupation',
key: 'occ',
width: 15
},
{
header: 'Salary',
key: 'sl',
width: 15
},
]
ws.columns = headers;
ws.addRow(['Mukul', 'Latiyan', 'Software Developer', 1230]);
ws.addRow(['Prince', 'Yadav', 'Driver', 980]);
ws.addRow(['Mayank', 'Agarwal', 'Maali', 770]);
console.log(`There are ${ws.actualRowCount} rows`);
let rows = ws.getRows(1, 4).values();
for (let row of rows) {
row.eachCell((cell, cn) => {
console.log(cell.value);
});
console.log('--');
}
输出:
运行此代码时,它将在终端上产生以下输出:
There are 4 rows
First name
Last name
Occupation
Salary
--
Mukul
Latiyan
Software Developer
1230
--
Prince
Yadav
Driver
980
--
Mayank
Agarwal
Maali
770
--
结论
在本教程中,我们学习了如何使用Excel.js从单元格、行和列中提取值来处理Excel文件。