#javascript #excel #api
Вопрос:
Я активно работаю над надстройками в Excel, используя Javascript/TypeScript Angular.
Я пытался просто добавить формулу с помощью кнопки (здесь мои надстройки окна Excel) в новую таблицу строк, используя свой код здесь :
public Somme(infoType:string, infoName:string, sheetSource?:Excel.Worksheet) {
// Initialisation du nom (max 31 - 5 (Table) char)
var operationName = "SOMME";
// Initialisation des pages Source et Direction
Excel.run(function(context:Excel.RequestContext) {
// Feuille Excel de données IFC Elements
if(!sheetSource) {
sheetSource = context.workbook.worksheets.getFirst();
}
var sheetDirection = context.workbook.worksheets.getItemOrNullObject(operationName);
// Verification qu'une opération identique n'a pas déjà été effectué.
return context.sync().then(
function () {
if (sheetDirection.isNullObject) sheetDirection = context.workbook.worksheets.add(operationName);
sheetDirection.activate();
sheetDirection.load("name");
return context.sync();
}
).then(
function () {
var table = sheetDirection.tables.getItemOrNullObject(sheetDirection.name "Table");
sheetSource.load("name");
return context.sync(table);
}
).then(
function(table) {
if(table.isNullObject) {
table = sheetDirection.tables.add("A1:B1",true);
table.getHeaderRowRange().values = [["QUERY","RESULT"]]
table.name = sheetDirection.name "Table";
}
console.log('=SOMME.SI.ENS(Sheet1!F:F;Sheet1!D:D;"' infoName '";Sheet1!E:E;"' infoType '")');
// Ajout des formules
var newRow = table.rows.add(null,[[infoName "->" infoType,'']]);
newRow.getRange().getLastCell().formulasLocal = [['=SOMME.SI.ENS(' sheetSource.name '!F:F;' sheetSource.name '!D:D;"' infoName '";Sheet1!E:E;"' infoType '")']];
// AutoFit
if (Office.context.requirements.isSetSupported("ExcelApi", "1.2")) {
sheetDirection.getUsedRange().format.autofitColumns();
sheetDirection.getUsedRange().format.autofitRows();
}
return context.sync();
}
).catch(function (error) {console.log(error)});
}.bind(this));
}
но проблема в том, что когда я пытаюсь выполнить функцию в другой раз, чтобы добавить новую строку в свою таблицу, все формулы обновляются с помощью новой : после добавления второй строки с помощью функции
я не знаю, почему и что не так в моем коде, я новичок в API Office и рад любой помощи !
Спасибо, что прочитали меня.