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

Электронная таблица диаграммы содержит имена элементов диаграммы (Category Name: Category1, Serie Name) и таблицу с числовыми данными, соответствующими этим категориям и сериям. По умолчанию при создании новой диаграммы в электронную таблицу помещаются стандартные данные. Затем вы можете изменить данные вручную в листе.
Обычно диаграмма представляет сложные данные (например, финансовые аналитики, научные аналитики), имея ячейки, вычисляемые из значений других ячеек или из динамических данных. Ручное вычисление значения ячейки и запись его в ячейку делает последующее изменение затруднительным. Если изменить значение определённой ячейки, все зависимые от неё ячейки также потребуют обновления. Более того, данные таблицы могут зависеть от данных других таблиц, создавая сложную схему данных презентации, требующую удобного и гибкого обновления.
Формула электронной таблицы диаграммы в презентации — это выражение для автоматического вычисления и обновления данных электронной таблицы диаграммы. Формула определяет логику вычисления данных для определённой ячейки или набора ячеек. Формула может быть математической или логической, используя ссылки на ячейки, математические функции, логические операторы, арифметические операторы, функции преобразования, строковые константы и т.д. Определение формулы записывается в ячейку, которая не содержит простое значение. Формула вычисляет значение и возвращает его, после чего это значение назначается ячейке. Формулы электронной таблицы диаграмм в презентациях фактически такие же, как формулы Excel, и поддерживают те же стандартные функции, операторы и константы.
В Aspose.Slides электронная таблица диаграммы представлена методом ChartData::get_ChartDataWorkbook() типа IChartDataWorkbook. Формула может быть назначена и изменена с помощью метода IChartDataCell::set_Formula(). В Aspose.Slides поддерживаются следующие возможности для формул:
- Логические константы
- Числовые константы
- Строковые константы
- Константы ошибок
- Арифметические операторы
- Операторы сравнения
- Ссылки на ячейки в стиле A1
- Ссылки на ячейки в стиле R1C1
- Предопределённые функции
Обычно электронные таблицы хранят последние вычисленные значения формул. Если после загрузки презентации данные диаграммы не изменялись, метод IChartDataCell.get_Value() возвращает эти значения при чтении. Но если данные электронной таблицы были изменены, при чтении метод ChartDataCell.get_Value() бросает CellUnsupportedDataException за неподдерживаемые формулы. Это происходит потому, что при успешном разборе формул определяются зависимости ячеек и проверяется корректность последних значений. Если формулу нельзя разобрать, корректность значения ячейки гарантировать нельзя.
Добавление формулы электронной таблицы диаграммы в презентацию
Сначала добавьте диаграмму на первый слайд новой презентации с помощью IShapeCollection::AddChart(). Лист диаграммы будет создан автоматически и доступен через метод ChartData::get_ChartDataWorkbook():
auto presentation = System::MakeObject<Presentation>();
auto chart = presentation->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::ClusteredColumn, 150.0f, 150.0f, 500.0f, 300.0f);
auto workbook = chart->get_ChartData()->get_ChartDataWorkbook();
// ...
Запишем некоторые значения в ячейки с помощью метода IChartDataCell.set_Value() объекта Object, что позволяет передать любое значение:
workbook->GetCell(0, u"F2")->set_Value(System::ObjectExt::Box<double>(-2.5));
workbook->GetCell(0, u"G3")->set_Value(System::ObjectExt::Box<double>(6.3));
workbook->GetCell(0, u"H4")->set_Value(System::ObjectExt::Box<int32_t>(3));
Теперь, чтобы записать формулу в ячейку, используйте метод IChartDataCell::set_Formula():
Примечание: метод IChartDataCell::set_Formula() используется для установки ссылок в стиле A1.
Чтобы задать ссылку R1C1Formula, используйте метод IChartDataCell::set_R1C1Formula():
Если затем попытаться прочитать значения из ячеек B2 и C2, они будут вычислены:
auto value1 = cell1->get_Value(); // 7.8
auto value2 = cell2->get_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"). Ссылки в стиле 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 в формуле:
Ссылки на ячейки в стиле 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 в формуле:
Предопределённые функции
Существуют предопределённые функции, которые можно использовать в формулах для упрощения их реализации. Эти функции инкапсулируют наиболее часто используемые операции, такие как:
- 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.