如何使用exceljs按名称获取单元格?
How to get cell by name with exceljs?
现在,我必须像这样硬编码
var cell = worksheet.getCell('A1');
但我想按 data
之类的名称定义我的单元格,并通过以下方式访问单元格:
var cell = worksheet.getCell('data');
如何使用 exceljs 做到这一点?
非常感谢!
注意:似乎解决我的问题的唯一解决方案是添加 column/row headers 并定义密钥,但我不想在我的代码中这样做:
worksheet.columns = [
{ header: 'Id', key: 'id', width: 10 }
];
据我所知,似乎没有 built-in 方法。这是一个应该可以解决问题的函数:
function getCellByName(worksheet, name) {
var match;
worksheet.eachRow(function (row) {
row.eachCell(function (cell) {
for (var i = 0; i < cell.names.length; i++) {
if (cell.names[i] === name) {
match = cell;
break;
}
}
});
});
return match;
}
使用 ES6:
const getCellByName = (worksheet, name) => {
let match
worksheet.eachRow(row => row.eachCell(cell => {
if (cell.names.find(n => n === name)) {
match = cell
}
}))
return match
}
对于非常大的工作sheet,这可能最终不可行,因为您必须遍历 sheet 中的每个 non-null 单元格。
如果您正在寻找具有该功能的东西 built-in,我还没有尝试过,但 xlsx-populate 看起来很有希望。
只是想建议另一种方式。
我使用 console.table() 检查工作表中的列名和键。
我没有任何键分配给列名。所以我们迭代第一行并将 cell.text 分配给 key.
console.table(worksheet.columns);
worksheet.getRow(1).eachCell((cell, colNumber) => {
worksheet.getColumn(colNumber).key = cell.text;
});
console.table(worksheet.columns);
worksheet.getRow(2).getCell("UserName").value;
现在,我必须像这样硬编码
var cell = worksheet.getCell('A1');
但我想按 data
之类的名称定义我的单元格,并通过以下方式访问单元格:
var cell = worksheet.getCell('data');
如何使用 exceljs 做到这一点? 非常感谢!
注意:似乎解决我的问题的唯一解决方案是添加 column/row headers 并定义密钥,但我不想在我的代码中这样做:
worksheet.columns = [
{ header: 'Id', key: 'id', width: 10 }
];
据我所知,似乎没有 built-in 方法。这是一个应该可以解决问题的函数:
function getCellByName(worksheet, name) {
var match;
worksheet.eachRow(function (row) {
row.eachCell(function (cell) {
for (var i = 0; i < cell.names.length; i++) {
if (cell.names[i] === name) {
match = cell;
break;
}
}
});
});
return match;
}
使用 ES6:
const getCellByName = (worksheet, name) => {
let match
worksheet.eachRow(row => row.eachCell(cell => {
if (cell.names.find(n => n === name)) {
match = cell
}
}))
return match
}
对于非常大的工作sheet,这可能最终不可行,因为您必须遍历 sheet 中的每个 non-null 单元格。
如果您正在寻找具有该功能的东西 built-in,我还没有尝试过,但 xlsx-populate 看起来很有希望。
只是想建议另一种方式。 我使用 console.table() 检查工作表中的列名和键。 我没有任何键分配给列名。所以我们迭代第一行并将 cell.text 分配给 key.
console.table(worksheet.columns);
worksheet.getRow(1).eachCell((cell, colNumber) => {
worksheet.getColumn(colNumber).key = cell.text;
});
console.table(worksheet.columns);
worksheet.getRow(2).getCell("UserName").value;