Excel Javascript API - выбор диапазона или сложного диапазона - PullRequest
0 голосов
/ 01 июня 2018

В макросе Excel вы можете сделать что-то простое, например:

Range("C8:G8,C12:H12,C19:I19").Value = 1

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

Но когда я делаю

const range = activeWorkSheet.getRange("C8:G8,C12:H12,C19:I19");       
range.format.fill.color = "yellow";

, я получаю

InvalidArgument: аргумент недействителен или отсутствует или имеет неправильный формат.

Также нет getJoinRange или getUnionRange, которые я мог бы использовать.

Есть ли обходной путь?У меня возникают проблемы с производительностью, такие как форматирование строки, основанное на нечетном / четном.

1 Ответ

0 голосов
/ 01 июня 2018

В ближайшее время появится бета-версия, которая позволит использовать разные зоны.Его синтаксис все еще TBD, это может быть именно то, что вы написали (с диапазоном, который может быть многообластным диапазоном), или, возможно, мы оставим Range одним смежным объектом и будем иметь параллельные методы, такие как worksheet.getMultiAreaRange("C8:G8, C12:H12, C19:I19), чтобы делать то, чтовам бы хотелось.

Кроме того, какая версия Office у вас есть и вы случайно не работаете в Insider Fast?

Re.производительность, вы можете опубликовать свой точный вариант использования в качестве минимального фрагмента?Вы можете выполнить некоторые оптимизации, даже за исключением нескольких областей.

Обновление

Если все, что вы делаете, это 3x3 или 5x5 (т.е.не что-то супер-огромное), вам не нужна поддержка нескольких областей.Вы можете просто сделать:

await Excel.run(async (context) => {
    const sheet = context.workbook.worksheets.getActiveWorksheet();
    const rowCount = 5;
    const columnCount = 5;
    const range = sheet.getRangeByIndexes(0, 0, rowCount, columnCount);
    for (let row = 0; row < rowCount; row = row + 2) {
        range.getRow(row).format.fill.color = "purple";
    }

    await context.sync()
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...