创建 Excel 图表 C++

图表是简洁显示数据的绝佳工具。此外,它们可以直观地表示数据,从而更容易消耗大量数据。在需要显示每月预算比较或产品采用率等数据的情况下,您可能会发现图表很有帮助。有鉴于此,本文将教您如何使用 C++ 在 Excel 文件中创建图表。

用于创建 Excel 图表的 C++ API

Aspose.Cells for C++ 是一个原生 C++ 库,允许您创建、读取和修改 Excel 文件,而无需安装 Microsoft Excel。该 API 还支持在 Excel 文件中创建图表。您可以通过 NuGet 安装 API,也可以直接从 下载 部分下载。

PM> Install-Package Aspose.Cells.Cpp

使用 C++ 在 Excel 中创建折线图

要创建折线图,请在添加图表时使用 ChartTypeLine 枚举值。以下是在 Excel 文件中创建折线图的步骤。

以下是使用 C++ 在 Excel 中创建折线图的示例代码。

// 输出目录路径。
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);
折线图

示例代码生成的折线图

使用 C++ 在 Excel 中创建金字塔图

要创建金字塔图,请在添加图表时使用 ChartTypePyramid 枚举值指定图表类型。以下是在 Excel 文件中创建金字塔图的步骤。

以下是使用 C++ 在 Excel 中创建金字塔图的示例代码。

// 输出目录路径。
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);
金字塔图

示例代码生成的金字塔图

使用 C++ 在 Excel 中创建气泡图

为了创建气泡图,请将 ChartTypeBubble 枚举值传递给 IWorksheet->GetICharts()->Add() 方法。以下是在 Excel 文件中创建气泡图的步骤。

以下是使用 C++ 在 Excel 中创建气泡图的示例代码。

// 输出目录路径。
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);
// X 值
worksheet->GetICells()->GetObjectByIndex(2, 0)->PutValue((StringPtr)new String("X 值"));
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 for C++ 还支持许多其他图表类型。您可以通过查看 ChartType 枚举值来查看支持图表的完整列表。

获得免费许可证

您可以通过申请 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,您学习了如何使用 C++ 在 Excel 电子表格中创建图表。具体来说,您已经了解了如何使用 Aspose.Cells for C++ API 创建折线图、金字塔图和气泡图。此外,您已经看到 API 支持您可以在 Excel 文件中创建的大量其他图表。除了图表,API 还提供了许多用于处理 Excel 文件的附加功能。您可以通过访问 官方文档 来详细探索 API。如有任何问题,请随时通过我们的 免费支持论坛 与我们联系。

也可以看看