Удаление пустых строк в таблице в Excel с помощью Office.js

Извините за то, что кажется действительно основным вопросом. Я пытаюсь перебрать таблицу Excel и удалить все пустые строки, используя новую модель надстройки. Я новичок в javascript, и вся асинхронность и обратные вызовы связывают меня в узлы!

Поскольку я думаю, что это просто, я подумал, может ли кто-нибудь быть достаточно любезным, чтобы опубликовать быстрый пример кода или предложить самый чистый способ сделать это? Извините, если я пропустил это в документах.

Спасибо заранее.

Тим


person Tim Hill    schedule 28.11.2015    source источник


Ответы (2)


Следующий код должен делать то, что вы ищете.

Excel.run(function(ctx) {
    var rows = ctx.workbook.tables.getItem('YourTableName').rows;
    rows.load("values"); // We'll need the rows values to check if they're empty.
    return ctx.sync().then(function() {
        // Important to go through the items in reverse fashion as deleting a row shifts the rest up.
        rows.items.reverse().forEach(function(row) {
            // row.values is a double array. Although, we know it can only contain one row.
            var isEmpty = row.values[0].every(function(col) {
                return col === "";
            });

            if (isEmpty) {
                row.delete();
            }
        });
    }).then(ctx.sync);
}).catch(function(error) {
    console.log("Error: " + error);
    if (error instanceof OfficeExtension.Error) {
        console.log("Debug info: " + JSON.stringify(error.debugInfo));
    }
});

Надеюсь, это поможет,

Габриэль Ройер — разработчик в группе расширения Office, MSFT

person Gab Royer    schedule 01.12.2015

Я предлагаю вам использовать средство записи макросов для выполнения основной работы. Затем используйте это в базовом цикле For Each Cell с тестом пустой строки, чтобы выполнить свою работу.

person gssi    schedule 30.11.2015
comment
Спасибо за это, но я думаю, что это приведет к записи макроса VBA? Я стремился сделать это в javascript, используя office.js. Пожалуйста, поправьте меня, если я ошибаюсь. - person Tim Hill; 02.12.2015