Я использую ExcelJs API с addRowsAsync()
и deleteAllDataValuesAsync()
.( ссылка )
Если пользователь создает несколько «вычисляемых столбцов» на листе Excel, которые увеличивают размер таблицы (например, новый столбец со значением первого столбца +1) Когда я хочу добавить новые данные в таблицу, как мне обработать «вычисленные» столбцы / столбцы?
let excelTable = currentWorksheet.tables.getItemOrNullObject(tableName)
excelTable.rows.load("values")
excelTable.columns.load("values")
return context.sync().then(() => {
if (excelTable.isNullObject) {
excelTable = currentWorksheet.tables.add(tableRange, true)
excelTable.name = tableName
excelTable.getHeaderRowRange().values = [excelHeaders]
return context.sync().then(() => {
Office.context.document.bindings.addFromNamedItemAsync(
tableName,
Office.BindingType.Table,
{ id: tableName },
function(result) {
if (result.status === Office.AsyncResultStatus.Succeeded) {
Office.context.document.bindings.getByIdAsync(
tableName,
null,
(asyncResult: any) => {
var binding = asyncResult.value
binding.addRowsAsync(_excelData)
}
)
} else {
Debug.error("Error:", result.error.message)
}
}
)
})
} else {
const tableRows = excelTable.rows.items.length
const tableColumns = excelTable.columns.items.length
const dataRows = _excelData.length
const dataColumns = _excelData[0].length
Office.context.document.bindings.getByIdAsync(
tableName,
null,
(asyncResult: any) => {
var binding = asyncResult.value
binding.deleteAllDataValuesAsync()
binding.addRowsAsync(_excelData)
}
)
}
excelTable.getRange().format.autofitColumns()
excelTable.getRange().format.autofitRows()
return context.sync()
})
Используя Excel для Windows , новые строки не отображаютсяt добавляется в таблицу.
Если я использую Excel Online , то происходит иначе: строки добавляются, и вычисляемый столбец правильно остается "нетронутым".
Этоошибка API?Вы можете мне помочь?
Заранее спасибо, Андреа