Я использовал getRangeByIndexes
, так как это лучший способ использовать числа для получения диапазонов в Office-JS. Проблема, с которой я сталкиваюсь, заключается в том, что когда мне нужно использовать всю строку/столбцы, я прибегаю к следующему. Я читаю и вижу, что количество строк/столбцов не менялось в течение длительного времени, но я знаю, что в vba я использовал rows.count
, чтобы убедиться, что код был динамическим, какая бы версия Excel не использовала количество строк в электронной таблице. .
Есть ли что-то подобное в Office-JS?
const Excel_Worksheet_Lengths_Obj = {
"total_rows": 1048576,
"total_cols": 16384,
}
var ws = context.workbook.worksheets.getActiveWorksheet()
var Method_Headers_Rng = ws.getRangeByIndexes(0,0,1,Excel_Worksheet_Lengths_Obj.total_cols)
Это сделает это за вас...
const sheet = context.workbook.worksheets.getActiveWorksheet();
let rangeRows = sheet.getRange("A:A").load(["rowCount"]);
let rangeColumns = sheet.getRange("1:1").load(["columnCount"]);
await context.sync();
console.info("Row Count = " + rangeRows.rowCount);
console.info("Column Count = " + rangeColumns.columnCount);
Все, что касается количества строк или столбцов, должно выполняться на уровне диапазона, а не на уровне рабочего листа.
Передача первого столбца для достижения количества строк и первой строки для достижения количества столбцов делает свое дело. Не идеал, но такова жизнь.
«... чтобы убедиться, что код был динамическим, какая бы версия Excel не использовала количество строк в электронной таблице» ... я дал вам ответ, и он вам не нравится, хорошо, но вы' Если вы стреляете в мессенджера, поговорите с Microsoft. Кроме того, сотни ответов SO каждый день отправляют OP по другому пути. Вы никогда ничего не говорили о том, что не хотите вызывать синхронизацию или что «НЕТ» было бы лучшим ответом. Слова «не идеальна, но такова жизнь» делают это довольно ясным, И я также предоставил подход для других, если они того пожелают. Опять же, если вы недовольны, обратитесь в Microsoft. Извините за попытку!
Я понимаю вашу позицию и прошу прощения, если я прозвучал грубо, но я думаю, что в вашем ответе будет сказано, что это хуже, чем мой нынешний подход, и что мне, вероятно, лучше, как я это делаю. Из того, что я прочитал, lrow/lcol не изменился с тех пор, как не был представлен Office-JS, поэтому я не вижу преимущества дополнительной синхронизации. Хотя синхронизация может быть пакетной... поэтому, вероятно, ею можно пренебречь. Вероятно, не буду использовать его, но стоит оставить для сообщества. Спасибо
Вы никогда не говорили, что хотите чего-то лучшего, вы спросили, как это сделать, и я дал вам ответ. Я согласен, это не «лучше», но если Excel изменится, это не будет означать, что вам нужно вернуться и перефразировать код. Кроме того, комментарий
console.info
— это шутка?!?