XLSX JS получает заголовок столбца на основе адреса ячейки

Я использую xlsx-js с nodejs и пытаюсь прочитать лист xlsx в формате календаря. Где 1 означает, что активность произошла в течение этого дня. Я могу пройтись по каждой строке, чтобы увидеть, является ли она неопределенной или нет, но как мне выполнить цикл, чтобы обнаружить заголовок этой ячейки?

Вот пример листа формата календаря, который я пытаюсь прочитать

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

Лист в JSON

Код:

       let fileName = `example.xlsx`;

        try {
          let workbook = XLSX.readFile(`./excel/${fileName}`, {cellDates:true});
        } catch (err) {
          logger.log('error', err);
        }
        let first_sheet_name = workbook.SheetNames[0];
        /* Get worksheet */
        var worksheet = workbook.Sheets[first_sheet_name];
        var jsonWorksheet = XLSX.utils.sheet_to_json(worksheet);
        console.log(jsonWorksheet);

2 ответа

Что я делаю, чтобы сделать это для JSON:

var file = "D:/excel.xlsx";
const workbook = XLSX.readFile(file, { cellDates:true, cellNF:false});
const sheet_name_list = workbook.SheetNames;
var va=  XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]])

Вы можете получить значения заголовка, используя regex и sheet_to_formulae :

      function getSheetHeaders(sheet: WorkSheet) {
    const headerRegex = new RegExp('^([A-Za-z]+)1=\'(.*)$');

    const cells = XLSX.utils.sheet_to_formulae(sheet);
    return cells.filter(item => headerRegex.test(item)).map(item => item.split("='")[1]);
}
Другие вопросы по тегам