SpreadSheet позволяет выполнять операции с простым содержимым ячейки (numbers, strings) и операторами (арифметика, сравнения), а также со встроенными и пользовательскими функциями. Кроме того, можно объединить простые операнды и функции в более сложные формулы. Компонент обрабатывает их и отображает результат в соответствующих ячейках.
Синтаксис формул в SpreadSheet такой же, как и в Excel.
"data": [
[ 3, 2, "=A1+B2",""],
[ 4, 2, "=7+8",""],
[ 5, 2, "=7+B2",""],
[ 6, 2, "=SUM(A3+D7)",""]
...
]
4 . Существует два способа записи формулы, в зависимости от выбранного способа вы можете получить разные результаты:
"data": [
[ 7, 2, "=SUM(A3,D7)",""]
]
"data": [
[ 7, 2, "=SUM(A3:D7)",""]
]
Вы можете конкатенировать содержимое ячеек в строках. Для этого существует три способа:
1 . оператор & со строками или ссылки на необходимые ячейки: "=nice"&"trip" или =A1&B2
2 . оператор + с теми же операндами: ="nice"+"trip" или =A1+B2. Оператор "+" ведет себя так же, как обычный оператор сложения JS (например ="nice"+12).
3 . функция CONCATENATE(): =CONCATENATE("nice","trip" или A1,B2). Также можно соединить строки из диапазона ячеек, чтобы получить один непрерывный текст: =CONCATENATE(C2:D4)
Вы можете задать имя определенному диапазону ячеек и затем использовать его в своих формулах. Диапазоны могут быть глобальными или же пренадлежать определённому листу.
Таким образом, формула становится понятнее и удобнее в работе.
Вы можете добавлять диапазоны и работать с ними через специальный модуль ranges.
Метод используется для добавления диапазона глобально или же к активному/указанному листу. Метод принимает следующие параметры:
Чтобы добавить локальный диапазон текущему листу, не передавайте параметр scope.
// добавляем дапазон "MYRANGE" листу "Sheet 1"
$$("ssheet").ranges.add("MYRANGE", "B2:C2", "Sheet 1");
Вы можете слинковать данные нескольких листов и использовать эти перекрестные ссылки в формулах.
Правила создания ссылки на внутренний лист просты:
Несколько кейсов, которые продемонстрируют как вы можете использовать перекрестные ссылки:
Related sample: Spreadsheet: Multiple Sheets
В Spreadsheet есть продвинутый редактор формул. Его основные функции:
Чтобы выключить редактор формул, задайте значение false
свойству liveEditor в конфигурации Spreadsheet:
webix.ui({
view: "spreadsheet",
data: base_data,
liveEditor: false
});
В редакторе формул есть встроенные подсказки для параметров вводимой формулы.
Тултип с подсказками доступен при включенном свойстве liveEditor.
Описания параметров формул хранятся в локали, которая называется webix.i18n.spreadsheet.liveEditor["functions-syntax"]. Вы можете перевести их на нужный язык. Описание формул в локали имеет следующую структуру:
{
methodName: [
[parameter, description],
...
]
}
В случае, если вы добавили свою формулу, вы можете добавить подсказки для ее параметров, обновив локаль.
Например:
const ssheet = webix.ui({
view:"spreadsheet",
toolbar:"full"
});
ssheet.registerMathMethod("RANDOM", function(value){ value = value || 100; return Math.round(Math.random()*value); });
webix.i18n.spreadsheet.liveEditor["functions-syntax"].RANDOM = [ ["Digit", "Optional. The number digit."] ];
ssheet.setCellValue(1,1,"=RANDOM(100)")
Чтобы получить доступ к всплывающему окну с подсказками для формул, используйте следующий синтаксис: ssheet.$$("liveEditor").paramsPopup. Например, если вы хотите скрыть всплывающее окно, можно добавить соответствующий обработчик, и вернуть false из колбэк-функции события onBeforeShow:
ssheet.$$("liveEditor").paramsPopup.attachEvent("onBeforeShow", ()=> false);
или просто удалить все методы из локали следующим образом:
webix.i18n.spreadsheet.liveEditor["functions-syntax"] = {};
Наверх