Настройка таблиц данных диаграмм в презентациях с помощью C++

Обзор

Aspose.Slides для C++ позволяет отображать таблицу данных диаграммы и настраивать форматирование текста, границы и ключи легенды. В этой статье объясняется, как включить таблицу, отформатировать её текст, управлять каждым типом границы и показывать или скрывать ключи легенды. Примеры сохраняют сконфигурированные диаграммы в файлы PPTX.

Установить свойства шрифта

Чтобы отобразить таблицу данных диаграммы, передайте true в IChart::set_HasDataTable. Используйте IChart::get_ChartDataTable , чтобы получить доступ к таблице и настроить её форматирование текста.

  1. Загрузите презентацию, используя класс Presentation.
  2. Добавьте сгруппированную столбчатую диаграмму на первый слайд.
  3. Включите таблицу данных диаграммы.
  4. Включите полужирный текст с помощью IBasePortionFormat::set_FontBold и передайте 20 в IBasePortionFormat::set_FontHeight для текста размером 20 пунктов.
  5. Сохраните изменённую презентацию.

Следующий пример требует файл test.pptx в рабочем каталоге, содержащий по крайней мере один слайд. Он добавляет диаграмму с данными по умолчанию в позицию (50, 50) с шириной 600 пунктов и высотой 400 пунктов. Сохранённый output.pptx содержит диаграмму с включённой таблицей данных и применёнными указанными параметрами шрифта.

#include <DOM/Chart/ChartType.h>
#include <DOM/Chart/IChartPortionFormat.h>
#include <DOM/Chart/IChartTextFormat.h>
#include <DOM/Chart/IDataTable.h>
#include <DOM/IChart.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/NullableBool.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Charts;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>(u"test.pptx");
auto slide = presentation->get_Slide(0);

auto chart = slide->get_Shapes()->AddChart(ChartType::ClusteredColumn, 50.0f, 50.0f, 600.0f, 400.0f);
chart->set_HasDataTable(true);

auto portionFormat = chart->get_ChartDataTable()->get_TextFormat()->get_PortionFormat();
portionFormat->set_FontBold(NullableBool::True);
portionFormat->set_FontHeight(20.0f);

presentation->Save(u"output.pptx", SaveFormat::Pptx);

Настроить границы таблицы данных

Включите таблицу с помощью IChart::set_HasDataTable и получите к ней доступ через IChart::get_ChartDataTable. Вы можете управлять тремя типами границ независимо:

Передайте true каждому сеттеру, чтобы отобразить соответствующие границы, или false, чтобы скрыть их. Следующий пример создаёт сгруппированную столбчатую диаграмму с данными по умолчанию, отображает горизонтальные границы и внешнюю границу, а вертикальные границы скрывает. Входной файл не требуется. Позиция и размер диаграммы указаны в пунктах.

#include <DOM/Chart/ChartType.h>
#include <DOM/Chart/IChartPortionFormat.h>
#include <DOM/Chart/IChartTextFormat.h>
#include <DOM/Chart/IDataTable.h>
#include <DOM/IChart.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/NullableBool.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Charts;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto chart = slide->get_Shapes()->AddChart(ChartType::ClusteredColumn, 50.0f, 50.0f, 600.0f, 400.0f);
chart->set_HasDataTable(true);

auto dataTable = chart->get_ChartDataTable();
dataTable->set_HasBorderHorizontal(true);
dataTable->set_HasBorderVertical(false);
dataTable->set_HasBorderOutline(true);

presentation->Save(u"data-table-borders.pptx", SaveFormat::Pptx);

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

Таблицы данных диаграмм со всеми включёнными границами, без горизонтальных границ, без вертикальных границ и без внешней границы

Показать или скрыть ключи легенды

Ключи легенды — небольшие цветные маркеры рядом с названиями рядов в таблице данных. Они помогают читателям сопоставлять каждую строку таблицы с рядом диаграммы. Передайте true в IDataTable::set_ShowLegendKey, чтобы показать эти маркеры, или false, чтобы скрыть их.

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

Следующий пример создаёт диаграмму с данными по умолчанию, включает её таблицу данных и показывает ключи легенды внутри неё, одновременно скрывая отдельную легенду. Все границы таблицы явно включены. Входная презентация не требуется. Чтобы скрыть только ключи таблицы, передайте false в IDataTable::set_ShowLegendKey.

#include <DOM/Chart/ChartType.h>
#include <DOM/Chart/IChartPortionFormat.h>
#include <DOM/Chart/IChartTextFormat.h>
#include <DOM/Chart/IDataTable.h>
#include <DOM/IChart.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/NullableBool.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Charts;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto chart = slide->get_Shapes()->AddChart(ChartType::ClusteredColumn, 50.0f, 50.0f, 600.0f, 400.0f);
chart->set_HasDataTable(true);
chart->set_HasLegend(false);

auto dataTable = chart->get_ChartDataTable();
dataTable->set_HasBorderHorizontal(true);
dataTable->set_HasBorderVertical(true);
dataTable->set_HasBorderOutline(true);
dataTable->set_ShowLegendKey(true);

presentation->Save(u"data-table-legend-keys.pptx", SaveFormat::Pptx);

Сравнение ниже показывает одну и ту же таблицу с включенными и отключёнными ключами легенды. Все границы остаются включёнными, а отдельная легенда диаграммы скрыта в обоих случаях.

Таблицы данных диаграмм с показанными слева ключами легенды и скрытыми справа

FAQ

Могу ли я показывать ключи легенды в таблице данных диаграммы?

Да. Передайте true в IDataTable::set_ShowLegendKey, чтобы отобразить ключи легенды, или false, чтобы скрыть их.

Сохраняется ли таблица данных при экспорте презентации в PDF, HTML или изображения?

Да. Aspose.Slides рендерит диаграмму и её отображаемую таблицу данных как часть слайда при экспорте в PDF, HTML или images.

Можно ли работать с таблицами данных в диаграммах, загруженных из шаблона?

Да. Для диаграммы, загруженной из существующей презентации или шаблона, используйте IChart::get_HasDataTable, чтобы проверить, отображается ли её таблица данных, и IChart::set_HasDataTable, чтобы изменить её видимость.

Как найти диаграммы, у которых включена таблица данных?

Итерируйте формы на каждом слайде, определяйте диаграммы и проверяйте результат IChart::get_HasDataTable. Значение true указывает, что таблица данных включена.