Создание диаграмм Excel C++

Диаграммы — отличный инструмент для краткого отображения данных. Кроме того, они представляют данные визуально, что упрощает использование больших объемов данных. Диаграммы могут оказаться полезными в ситуациях, когда вам нужно показать такие данные, как сравнение ежемесячного бюджета или скорость внедрения продукта. В свете этого в этой статье вы узнаете, как создавать диаграммы в файлах Excel с помощью C++.

C++ API для создания диаграмм Excel

Aspose.Cells for C++ — это собственная библиотека C++, которая позволяет создавать, читать и изменять файлы Excel, не требуя установки Microsoft Excel. API также поддерживает создание диаграмм в файлах Excel. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.

PM> Install-Package Aspose.Cells.Cpp

Создайте линейную диаграмму в Excel с помощью C++

Чтобы создать линейную диаграмму, используйте значение перечисления ChartType\Line при добавлении диаграммы. Ниже приведены шаги для создания линейной диаграммы в файле Excel.

Ниже приведен пример кода для создания линейной диаграммы в Excel с использованием C++.

// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");

// Путь к выходному файлу excel
StringPtr outputChartTypeLine = outDir->StringAppend(new String("outputChartTypeLine.xlsx"));

// Создать новую книгу
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Получить первый рабочий лист, созданный по умолчанию
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Добавление образцов значений в ячейки
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

// Добавление диаграммы на рабочий лист
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Line, 5, 0, 20, 8);

// Доступ к экземпляру вновь добавленной диаграммы
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// Добавление SeriesCollection (источника данных диаграммы) на диаграмму в диапазоне от ячейки "A1" до "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);

// Сохранение файла Excel
workbook->Save(outputChartTypeLine);
Линейный график

Линейная диаграмма, созданная по образцу кода

Создание пирамидальной диаграммы в Excel с использованием C++

Для создания пирамидальной диаграммы используйте значение перечисления ChartType\Pyramid, чтобы указать тип диаграммы при добавлении диаграммы. Ниже приведены шаги для создания пирамидальной диаграммы в файле Excel.

Ниже приведен пример кода для создания пирамидальной диаграммы в Excel с использованием C++.

// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");

// Путь к выходному файлу excel
StringPtr outputChartTypePyramid = outDir->StringAppend(new String("outputChartTypePyramid.xlsx"));

// Создать новую книгу
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Получить первый рабочий лист, созданный по умолчанию
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Добавление образцов значений в ячейки
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

// Добавление диаграммы на рабочий лист
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// Доступ к экземпляру вновь добавленной диаграммы
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// Добавление SeriesCollection (источника данных диаграммы) на диаграмму в диапазоне от ячейки "A1" до "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);

// Сохранение файла Excel
workbook->Save(outputChartTypePyramid);
Пирамидальная диаграмма

Пирамидальная диаграмма, созданная с помощью примера кода

Создать пузырьковую диаграмму в Excel с помощью C++

Чтобы создать пузырьковую диаграмму, передайте значение перечисления ChartType\Bubble методу IWorksheet->GetICharts()->Add(). Ниже приведены шаги для создания пузырьковой диаграммы в файле Excel.

Ниже приведен пример кода для создания пузырьковой диаграммы в Excel с использованием C++.

// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");

// Путь к выходному файлу excel
StringPtr outputChartTypeBubble = outDir->StringAppend(new String("outputChartTypeBubble.xlsx"));

// Создать новую книгу
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Получить первый рабочий лист, созданный по умолчанию
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Заполните данные для серии диаграммы
// Y значения
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("Y значения"));
worksheet->GetICells()->GetObjectByIndex(0, 1)->PutValue(2);
worksheet->GetICells()->GetObjectByIndex(0, 2)->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(0, 3)->PutValue(6);
// Размер пузыря
worksheet->GetICells()->GetObjectByIndex(1, 0)->PutValue((StringPtr)new String("Размер пузыря"));
worksheet->GetICells()->GetObjectByIndex(1, 1)->PutValue(2);
worksheet->GetICells()->GetObjectByIndex(1, 2)->PutValue(3);
worksheet->GetICells()->GetObjectByIndex(1, 3)->PutValue(1);
// Х значения
worksheet->GetICells()->GetObjectByIndex(2, 0)->PutValue((StringPtr)new String("Х значения"));
worksheet->GetICells()->GetObjectByIndex(2, 1)->PutValue(1);
worksheet->GetICells()->GetObjectByIndex(2, 2)->PutValue(2);
worksheet->GetICells()->GetObjectByIndex(2, 3)->PutValue(3);

// Установить ширину первого столбца
worksheet->GetICells()->SetColumnWidth(0, 12);

// Добавление диаграммы на рабочий лист
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Bubble, 5, 0, 20, 8);

// Доступ к экземпляру вновь добавленной диаграммы
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// Добавление SeriesCollection (источника данных диаграммы) на диаграмму в диапазоне от B1 до D1
chart->GetNISeries()->Add(new String("B1:D1"), true);

// Установить размеры пузырьков
chart->GetNISeries()->GetObjectByIndex(0)->SetBubbleSizes(new String("B2:D2"));

// Установите значения оси X
chart->GetNISeries()->GetObjectByIndex(0)->SetXValues(new String("B3:D3"));

// Установите значения оси Y
chart->GetNISeries()->GetObjectByIndex(0)->SetValues(new String("B1:D1"));

// Сохранение файла Excel
workbook->Save(outputChartTypeBubble);
Пузырьковая диаграмма

Пузырьковая диаграмма, созданная с помощью примера кода

Дополнительные поддерживаемые графики

Помимо диаграмм, показанных выше, Aspose.Cells для C++ поддерживает множество дополнительных типов диаграмм. Вы можете просмотреть полный список поддерживаемых диаграмм, просмотрев значения перечисления ChartType.

Получить бесплатную лицензию

Вы можете попробовать API без ограничений на пробную версию, запросив бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как создавать диаграммы в электронных таблицах Excel с помощью C++. В частности, вы увидели, как создавать линейные, пирамидальные и пузырьковые диаграммы с помощью Aspose.Cells for C++ API. Кроме того, вы видели, что API поддерживает большое количество других диаграмм, которые вы можете создавать в своих файлах Excel. Помимо диаграмм API предоставляет множество дополнительных возможностей для работы с файлами Excel. Вы можете подробно изучить API, посетив официальную документацию. Если у вас возникнут вопросы, свяжитесь с нами на нашем бесплатном форуме поддержки.

Смотрите также