Я пытаюсь вставить несколько строк в лист Excel, который не содержит таблиц, но я могу вставлять только пустые строки.Попытка изменить значения этих пустых строк приводит к row.values
печати правильных данных, но строки в самом файле остаются пустыми, даже после context.sync()
.
Я пытался использовать insert
метод из Excel.Range
для успешной вставки пустой строки, выполнив:
let empty_space = sheet.getCell(index,0).getResizedRange(index, row.length)
empty_space.insert("Down")
Затем я попытался использовать ссылку на новый диапазон empty_space
, чтобы заменить его значения на значения в массиве с именем row
(длина которого использовалась для определения диапазона выше):
empty_space.load("values")
await context.sync()
empty_space.values[0] = row
Если я затем сделаю console.log(empty_space.values)
, я вижу правильные значения в списке, но строка в файле все еще пуста.
Я также попытался вставить строку в используемый диапазон листа с помощью сплайсинга:
full_range.values.splice(index, 0, row)
, который выполняет те же действия, что и выше, правильно печатая на консоли, но отображая пустойЯчейки.
Как вставить массив значений в новую строку в верхней части файла, используя Диапазоны.Я не могу преобразовать диапазон в таблицу, так как это создает много других проблем.
РЕДАКТИРОВАТЬ: Ниже приведено полное содержание функции, которую я использую, чтобы попытаться достичь этого:
insert_banner = async ( sheet_range, context ) => {
let banner_rows = this.state.sheet_content.banner.banner_rows
for (let r in banner_rows) {
let index = parseInt(r)
let row = banner_rows[r]
let empty_space = this.state.sheet.getCell(index,0).getResizedRange(index, row.length)
empty_space.insert("Down")
empty_space.values[0] = row
await context.sync()
}
}
banner_rows
- это двумерный массив.
РЕДАКТИРОВАТЬ 2: я пытался использовать set
метод Excel.Range
, например:
empty_space.set( {values: row} )
Но независимо отчто я пытаюсь, я получаю следующую ошибку:
"InvalidArgument: количество строк или столбцов во входном массиве не соответствует размеру или измерениям диапазона."
Четхотя во время отладки я вижу, что и row
и empty_space.values
имеют одинаковые размеры, 1x48.
РЕДАКТИРОВАТЬ 3: Вот другой подход, который я попробовал:
insert_banner = async ( sheet_range, context ) => {
let banner_rows = this.state.sheet_content.banner.banner_rows
let sheet_values = sheet_range.values
for (let r in banner_rows) {
let index = parseInt(r)
let row = banner_rows[r]
sheet_values.splice(index, 0, row)
}
return context.sync()
}
В этом случаеЕсли я добавлю точку останова после этой функции, я вижу, что значения sheet_range
s do содержат правильную информацию в соответствующих строках.Я не понимаю, почему это не отражается в самом файле.