ExcelJS - How to handle “computed columns” with addRowsAsync
I'm using the ExcelJs API with addRowsAsync()
and deleteAllDataValuesAsync()
. (reference)
If the user creates some "computed columns" in the Excel sheet, which enlarge the size of the table (e.g.: a new column with the value of the first column + 1), when I want add new data to the table, how should I handle the "computed" column/s?
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()
})
Using Excel for Windows, the new rows aren't added to the table.
Differenly happens if I use Excel Online: the rows are added and the computed column is correctly left "untouched".
Is it a bug of the API?
Can you help me?
Thanks in advance,
Andrea
excel excel-addins exceljs
add a comment |
I'm using the ExcelJs API with addRowsAsync()
and deleteAllDataValuesAsync()
. (reference)
If the user creates some "computed columns" in the Excel sheet, which enlarge the size of the table (e.g.: a new column with the value of the first column + 1), when I want add new data to the table, how should I handle the "computed" column/s?
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()
})
Using Excel for Windows, the new rows aren't added to the table.
Differenly happens if I use Excel Online: the rows are added and the computed column is correctly left "untouched".
Is it a bug of the API?
Can you help me?
Thanks in advance,
Andrea
excel excel-addins exceljs
add a comment |
I'm using the ExcelJs API with addRowsAsync()
and deleteAllDataValuesAsync()
. (reference)
If the user creates some "computed columns" in the Excel sheet, which enlarge the size of the table (e.g.: a new column with the value of the first column + 1), when I want add new data to the table, how should I handle the "computed" column/s?
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()
})
Using Excel for Windows, the new rows aren't added to the table.
Differenly happens if I use Excel Online: the rows are added and the computed column is correctly left "untouched".
Is it a bug of the API?
Can you help me?
Thanks in advance,
Andrea
excel excel-addins exceljs
I'm using the ExcelJs API with addRowsAsync()
and deleteAllDataValuesAsync()
. (reference)
If the user creates some "computed columns" in the Excel sheet, which enlarge the size of the table (e.g.: a new column with the value of the first column + 1), when I want add new data to the table, how should I handle the "computed" column/s?
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()
})
Using Excel for Windows, the new rows aren't added to the table.
Differenly happens if I use Excel Online: the rows are added and the computed column is correctly left "untouched".
Is it a bug of the API?
Can you help me?
Thanks in advance,
Andrea
excel excel-addins exceljs
excel excel-addins exceljs
edited Nov 26 at 9:31
asked Nov 21 at 8:12
ATrogolo
364
364
add a comment |
add a comment |
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53407704%2fexceljs-how-to-handle-computed-columns-with-addrowsasync%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53407704%2fexceljs-how-to-handle-computed-columns-with-addrowsasync%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown