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

Лист данных диаграммы содержит имена элементов диаграммы (Имя категории: Category1, Имя серии) и таблицу с числовыми данными, соответствующими этим категориям и сериям. По умолчанию, при создании новой диаграммы в листе данных диаграммы размещаются данные по умолчанию. Затем вы можете изменить данные листа вручную.
Обычно диаграмма представляет сложные данные (например, финансовые или научные анализы), где ячейки вычисляются из значений в других ячейках или из динамических данных. Ручное вычисление значения ячейки и фиксирование его в ячейке затрудняет последующее изменение. Если изменить значение определённой ячейки, все зависящие от неё ячейки также потребуют обновления. Более того, данные таблицы могут зависеть от данных других таблиц, создавая сложную схему данных презентации, которую необходимо легко и гибко обновлять.
Формула листа данных диаграммы в презентации — это выражение для автоматического вычисления и обновления данных листа. Формула определяет логику вычисления данных для конкретной ячейки или набора ячеек. Формула может быть математической или логической, используя ссылки на ячейки, математические функции, логические операторы, арифметические операторы, функции преобразования, строковые константы и т.д. Определение формулы записывается в ячейку, и эта ячейка не содержит простого значения. Формула вычисляет значение и возвращает его, после чего значение присваивается ячейке. Формулы листов данных в презентациях фактически такие же, как формулы Excel, и поддерживают те же функции, операторы и константы.
В Aspose.Slides лист данных диаграммы представлен свойством Chart.ChartData.ChartDataWorkbook типа IChartDataWorkbook. Формула листа может быть назначена и изменена через свойство formula. В Aspose.Slides поддерживается следующая функциональность формул:
- Логические константы
- Числовые константы
- Строковые константы
- Константы ошибок
- Арифметические операторы
- Операторы сравнения
- Ссылки на ячейки в стиле A1
- Ссылки на ячейки в стиле R1C1
- Предопределённые функции
Обычно листы хранят последние вычисленные значения формул. Если после загрузки презентации данные диаграммы не изменялись, свойство IChartDataCell.Value возвращает эти значения при чтении. Если данные листа были изменены, при чтении свойства ChartDataCell.Value генерируется CellUnsupportedDataException для неподдерживаемых формул. Это происходит потому, что при успешном разборе формул определяются зависимости ячеек и проверяется корректность последних значений. Если формулу не удаётся разобрать, корректность значения ячейки гарантировать нельзя.
Добавление формулы листа данных диаграммы в презентацию
Сначала добавьте диаграмму с образцовыми данными на первый слайд новой презентации с помощью add_chart. Лист диаграммы создаётся автоматически и доступен через свойство chart_data_workbook:
import aspose.slides.charts as charts
import aspose.slides as slides
with slides.Presentation() as presentation:
chart = presentation.slides[0].shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 150, 150, 500, 300)
workbook = chart.chart_data.chart_data_workbook
# ...
Запишем некоторые значения в ячейки с помощью свойства value типа Object, что означает возможность задать любое значение:
workbook.get_cell(0, "F2").value = -2.5
workbook.get_cell(0, "G3").value = 6.3
workbook.get_cell(0, "H4").value = 3
Теперь, чтобы записать формулу в ячейку, используйте свойство formula:
workbook.get_cell(0, "B2").formula = "F2+G3+H4+1"
Примечание: свойство IChartDataCell.Formula используется для задания ссылок в стиле A1.
Чтобы задать ссылку в стиле r1c1_formula, используйте свойство r1c1_formula:
workbook.get_cell(0, "C2").r1c1_formula = "R[1]C[4]/R[2]C[5]"
Затем вызовите метод calculate_formulas для вычисления всех формул в рабочей книге и обновления соответствующих значений ячеек:
workbook.calculate_formulas()
print(workbook.get_cell(0, "B2").value) # 7.8
print(workbook.get_cell(0, "C2").value) # 2.1
Логические константы
В формулах ячеек можно использовать логические константы FALSE и TRUE:
Числовые константы
Для создания формул листа данных диаграммы можно использовать числа в обычных или научных записях:
Строковые константы
Строковая (или литеральная) константа — это конкретное значение, которое используется «как есть» и не меняется. Строковые константы могут быть: даты, тексты, числа и т.д.:
Константы ошибок
Иногда результат формулы нельзя вычислить. В таком случае в ячейке вместо значения отображается код ошибки. Каждый тип ошибки имеет свой код:
- #DIV/0! — попытка деления на ноль.
- #GETTING_DATA — может появиться в ячейке, пока её значение ещё вычисляется.
- #N/A — информация отсутствует или недоступна (пустые ячейки, лишний пробел, опечатка и т.п.).
- #NAME? — не найден объект (ячейка или другая формула) по имени.
- #NULL! — ошибка в формуле, например использование (,) или пробела вместо двоеточия (:).
- #NUM! — некорректное числовое значение в формуле (слишком велико, слишком мало и т.п.).
- #REF! — недопустимая ссылка на ячейку.
- #VALUE! — неожиданный тип значения, например строка в числовой ячейке.
Арифметические операторы
Во всех формулах листа данных диаграммы можно использовать следующие арифметические операторы:
| Оператор | Значение | Пример |
|---|---|---|
| + (плюс) | Сложение или унарный плюс | 2 + 3 |
| - (минус) | Вычитание или отрицание | 2 - 3 -3 |
| * (звёздочка) | Умножение | 2 * 3 |
| / (слэш) | Деление | 2 / 3 |
| % (процент) | Процент | 30% |
| ^ (карет) | Возведение в степень | 2 ^ 3 |
Примечание: чтобы изменить порядок вычисления, заключите нужную часть формулы в скобки.
Операторы сравнения
С помощью операторов сравнения можно сравнивать значения ячеек. Результат сравнения — логическое значение TRUE или FALSE:
| Оператор | Значение | Пример |
|---|---|---|
| = (равно) | Равно | A2 = 3 |
| <> (не равно) | Не равно | A2 <> 3 |
| > (больше) | Больше | A2 > 3 |
| >= (больше или равно) | Больше или равно | A2 >= 3 |
| < (меньше) | Меньше | A2 < 3 |
| <= (меньше или равно) | Меньше или равно | A2 <= 3 |
Ссылки на ячейки в стиле A1
Ссылки в стиле A1 используются, когда столбец обозначается буквой (например, “A"), а строка — цифрой (например, “1"). Пример использования:
| Ссылка | Пример | ||
|---|---|---|---|
| Абсолютная | Относительная | Смешанная | |
| Ячейка | $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 в формуле:
Ссылки на ячейки в стиле 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 в формуле:
Предопределённые функции
Существует набор предопределённых функций, которые можно применять в формулах для упрощения их реализации. Эти функции охватывают наиболее часто используемые операции, такие как:
- 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.