ExcelJS - Как обрабатывать «вычисляемые столбцы» с помощью addRowsAsync - PullRequest
0 голосов
/ 21 ноября 2018

Я использую 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?Вы можете мне помочь?

Заранее спасибо, Андреа

...