Как удалить существующую строку рабочего листа в Excel с помощью XLSX в узле js?

Как удалить существующую строку рабочего листа книги в Excel с помощью XLSX из SheetJS в Node.js?

Код на данный момент:

const xlsx = require('xlsx');

// read the file
workBook = xlsx.readFile("todo-list.xlsx", {cellDates:true});

// read the worksheet
const shoppingList = workBook.Sheets["Do-Shopping"];

// delete a specific row
........ [here I dont know even how to start]

// write the data to the Excel file
xlsx.writeFile(workBook, 'todo-list.xlsx');

Желаемые результаты:

ДО: before ПОСЛЕ: после

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

Я пробовал искать в официальных документах и ​​стеке, но пока не нашел ответа. :( и я новичок в Node js

Не могли бы вы мне помочь ?


person Ariadne R.    schedule 16.12.2020    source источник


Ответы (1)


Ответ, найденный на сайте Github, очень хорошо работает в любой строке:

// delete a specific row
function ec(r, c){
    return xlsx.utils.encode_cell({r:r,c:c});
}
function delete_row(ws, row_index){
    var variable = xlsx.utils.decode_range(ws["!ref"])
    for(var R = row_index; R < variable.e.r; ++R){
        for(var C = variable.s.c; C <= variable.e.c; ++C){
            ws[ec(R,C)] = ws[ec(R+1,C)];
        }
    }
    variable.e.r--
    ws['!ref'] = xlsx.utils.encode_range(variable.s, variable.e);
}
delete_row(shoppingList, 1)
person Ariadne R.    schedule 16.12.2020