Как получить ячейку по имени с exceljs? - PullRequest
1 голос
/ 14 июня 2019

На данный момент я должен жестко закодировать, как это

var cell = worksheet.getCell('A1');

Но я хочу определить свою ячейку по имени, например data, и получить доступ к ячейке с помощью:

var cell = worksheet.getCell('data');

a busy cat

Как я могу сделать это с exceljs? Большое спасибо!

Примечание. Единственное решение, по-видимому, решающее мою проблему, - это добавить заголовки столбцов / строк и определить ключ, но я не хочу делать это в своем коде:

worksheet.columns = [
  { header: 'Id', key: 'id', width: 10 }
];

1 Ответ

0 голосов
/ 16 июня 2019

Насколько я могу судить, встроенного метода не существует. Вот функция, которая должна добиться цели:

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
}

Это может оказаться невозможным при работе с очень большими рабочими листами, поскольку вам придется перебирать каждую ненулевую ячейку на листе.

Если вы ищете что-то со встроенной функциональностью, я еще не пробовал, но xlsx-populate выглядит многообещающе.

...