Применение формул листа диаграммы в презентациях на Android

О формулах листов диаграмм в презентациях

Лист диаграммы (или лист данных диаграммы) в презентации является источником данных диаграммы. Лист диаграммы содержит данные, которые отображаются на диаграмме графически. Когда вы создаёте диаграмму в PowerPoint, связанный с ней лист автоматически также создаётся. Лист диаграммы создаётся для всех типов диаграмм: линейной, гистограммы, солнечного всплеска, круговой и т.д. Чтобы увидеть лист диаграммы в PowerPoint, нужно дважды щелкнуть по диаграмме:

todo:image_alt_text

Лист диаграммы содержит названия элементов диаграммы (Имя категории: Category1, Имя серии) и таблицу с числовыми данными, соответствующими этим категориям и сериям. По умолчанию, когда вы создаёте новую диаграмму, данные листа диаграммы заполняются стандартными данными. Затем вы можете вручную изменить данные листа в таблице.

Обычно диаграмма представляет сложные данные (например, финансовые аналитики, научные аналитики), имеющие ячейки, вычисляемые из значений в других ячейках или из других динамических данных. Вычислять значение ячейки вручную и делать его «жёстким», затрудняет последующее изменение. Если вы измените значение определённой ячейки, все ячейки, зависящие от неё, также потребуют обновления. Более того, данные таблицы могут зависеть от данных из других таблиц, создавая сложную схему данных презентации, которую необходимо обновлять легко и гибко.

Формула листа диаграммы в презентации — это выражение для автоматического вычисления и обновления данных листа диаграммы. Формула листа задаёт логику вычисления данных для определённой ячейки или набора ячеек. Формула листа — это математическая или логическая формула, использующая ссылки на ячейки, математические функции, логические операторе, арифметические операторе, функции преобразования, строковые константы и т.д. Определение формулы записывается в ячейку, которая не содержит простого значения. Формула вычисляет значение и возвращает его, после чего оно присваивается ячейке. Формулы листов диаграмм в презентациях фактически такие же, как формулы Excel, и поддерживают те же функции, операторы и константы по умолчанию.

В Aspose.Slides лист диаграммы представлен методом Chart.getChartData.getChartDataWorkbook типа IChartDataWorkbook. Формула листа может быть назначена и изменена с помощью IChartDataCell.setFormula метода. Для формул в Aspose.Slides поддерживается следующая функциональность:

  • Логические константы
  • Числовые константы
  • Строковые константы
  • Константы ошибок
  • Арифметические операторы
  • Операторы сравнения
  • Ссылки на ячейки в стиле A1
  • Ссылки на ячейки в стиле R1C1
  • Предустановленные функции

Обычно листы сохраняют последние вычисленные значения формул. Если после загрузки презентации данные диаграммы не изменялись, метод IChartDataCell.getValue возвращает эти значения при чтении. Однако если данные листа были изменены, при чтении свойства ChartDataCell.Value выбрасывается CellUnsupportedDataException для неподдерживаемых формул. Это происходит потому, что при успешном разборе формул определяются зависимости ячеек и проверяется корректность последних значений. Если формулу нельзя разобрать, корректность значения ячейки гарантировать нельзя.

Добавление формулы листа диаграммы в презентацию

Сначала добавьте диаграмму на первый слайд новой презентации с помощью IShapeCollection.getShapes.addChart. Лист диаграммы автоматически создаётся и к нему можно получить доступ через метод Chart.getChartData.getChartDataWorkbook :

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 150, 150, 500, 300);

    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();

    // ...
} finally {
    if (pres != null) pres.dispose();
}

Запишем некоторые значения в ячейки с помощью свойства IChartDataCell.setValue типа Object, что означает возможность задать любое значение:

workbook.getCell(0, "F2").setValue(-2.5);

workbook.getCell(0, "G3").setValue(6.3);

workbook.getCell(0, "H4").setValue(3);

Для записи формулы в ячейку используйте метод IChartDataCell.setFormula :

Note: Метод IChartDataCell.setFormula применяется для установки ссылок в стиле A1.

Чтобы установить ссылку типа R1C1Formula используйте метод IChartDataCell.setR1C1Formula :

Затем, если вы попытаетесь считать значения из ячеек B2 и C2, они будут вычислены:

Object value1 = cell1.getValue(); // 7.8

Object value2 = cell2.getValue(); // 2.1

Логические константы

Можно использовать логические константы, такие как FALSE и TRUE, в формулах ячеек:

workbook.getCell(0, "A2").setValue(false);
IChartDataCell cell = workbook.getCell(0, "B2");
cell.setFormula("A2 = TRUE");
Object value = cell.getValue(); // значение содержит логическое "false"

Числовые константы

Числа могут использоваться в обычной или научной нотации для создания формул листа диаграммы:

workbook.getCell(0, "A2").setFormula("1 + 0.5");
workbook.getCell(0, "B2").setFormula(".3 * 1E-2");

Строковые константы

Строковая (или буквальная) константа — это фиксированное значение, которое используется как есть и не меняется. Строковые константы могут быть: датами, текстами, числами и т.д.:

workbook.getCell(0, "A2").setFormula("\"abc\"");
workbook.getCell(0, "B2").setFormula("\"2/3/2020 12:00\"");

Константы ошибок

Иногда формула не может вычислить результат. В этом случае в ячейке отображается код ошибки вместо значения. Каждый тип ошибки имеет свой код:

  • #DIV/0! - формула пытается разделить на ноль.
  • #GETTING_DATA - может отображаться в ячейке, пока её значение ещё вычисляется.
  • #N/A - информация отсутствует или недоступна. Причины: пустые ячейки, лишний пробел, опечатка и т.п.
  • #NAME? - определённый объект формулы не найден по имени.
  • #NULL! - может появиться при ошибке в формуле, например (,) или пробел вместо двоеточия (:).
  • #NUM! - число в формуле недопустимо, слишком велико или слишком мало.
  • #REF! - недопустимая ссылка на ячейку.
  • #VALUE! - неожиданный тип значения, например строка в числовую ячейку.
IChartDataCell cell = workbook.getCell(0, "A2");
cell.setFormula("2 / 0");
Object value = cell.getValue(); // значение содержит строку "#DIV/0!"

Арифметические операторы

Можно использовать все арифметические операторы в формулах листа диаграммы:

Оператор Значение Пример
+ (плюс) Сложение или унарный плюс 2 + 3
- (минус) Вычитание или отрицание 2 - 3
-3
* (звёздочка) Умножение 2 * 3
/ (слеш) Деление 2 / 3
% (процент) Процент 30%
^ (каретка) Возведение в степень 2 ^ 3

Note: Чтобы изменить порядок вычисления, заключите нужную часть формулы в круглые скобки.

Операторы сравнения

Можно сравнивать значения ячеек с помощью операторов сравнения. При их использовании результатом является логическое значение TRUE или FALSE:

Оператор Значение Значение
= (равно) Равно A2 = 3
<> (не равно) Не равно A2 <> 3
> (больше) Больше A2 > 3
>= (больше или равно) Больше или равно A2 >= 3
< (меньше) Меньше A2 < 3
<= (меньше или равно) Меньше или равно A2 <= 3

Ссылки на ячейки в стиле A1

Ссылки на ячейки в стиле A1 используются для листов, где столбец обозначается буквой (например, “A"), а строка — числом (например, “1"). Ссылки в стиле A1 могут применяться следующим образом:

Ссылка на ячейку Пример
Абсолютный Относительный Смешанный
Ячейка $A$2 A2

A$2

$A2

Строка $2:$2 2:2 -
Столбец $A:$A A:A -
Диапазон $A$2:$C$4 A2:C4

$A$2:C4

A$2:$C4

Пример использования ссылки в стиле A1 в формуле:

workbook.getCell(0, "A2").setFormula("C3 + SUM(F2:H5)");

Ссылки на ячейки в стиле R1C1

Ссылки на ячейки в стиле R1C1 используются для листов, где и строка, и столбец имеют числовые идентификаторы. Ссылки в стиле R1C1 могут применяться следующим образом:

Ссылка на ячейку Пример
Абсолютный Относительный Смешанный
Ячейка R2C3 R[2]C[3] R2C[3]
R[2]C3
Строка R2 R[2] -
Столбец C3 C[3] -
Диапазон R2C3:R5C7 R[2]C[3]:R[5]C[7] R2C3:R[5]C[7]
R[2]C3:R5C[7]

Пример использования ссылки в стиле R1C1 в формуле:

workbook.getCell(0, "A2").setR1C1Formula("R2C4 + SUM(R5C6:R7C9)");

Предустановленные функции

Существует набор предустановленных функций, которые могут использоваться в формулах для упрощения их реализации. Эти функции инкапсулируют часто используемые операции, такие как:

  • ABS
  • AVERAGE
  • CEILING
  • CHOOSE
  • CONCAT
  • CONCATENATE
  • DATE (система дат 1900)
  • DAYS
  • FIND
  • FINDB
  • IF
  • INDEX (форма ссылки)
  • LOOKUP (векторная форма)
  • MATCH (векторная форма)
  • MAX
  • SUM
  • VLOOKUP

FAQ

Поддерживаются ли внешние файлы Excel в качестве источника данных для диаграммы с формулами?

Да. Aspose.Slides поддерживает внешние книги как источник данных диаграммы, что позволяет использовать формулы из XLSX вне презентации.

Могут ли формулы диаграммы ссылаться на листы внутри той же книги по имени листа?

Да. Формулы следуют стандартной модели ссылок Excel, поэтому можно ссылаться на другие листы в той же книге или во внешней книге. Для внешних ссылок указывайте путь и имя книги, используя синтаксис Excel.