图表是简洁显示数据的绝佳工具。此外,它们可以直观地表示数据,从而更容易消耗大量数据。在需要显示每月预算比较或产品采用率等数据的情况下,您可能会发现图表很有帮助。有鉴于此,本文将教您如何使用 C++ 在 Excel 文件中创建图表。
- 用于创建 Excel 图表的 C++ API
- 使用 C++ 在 Excel 中创建折线图
- 使用 C++ 在 Excel 中创建金字塔图
- 使用 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 文件中创建折线图的步骤。
- 首先,创建一个 IWorkbook 类的实例。
- 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索要在其中添加图表的工作表。
- 插入图表的数据。
- 使用 IWorksheet->GetICharts()->Add (Aspose::Cells::Charts::ChartType type,Aspose::Cells::Systems::Int32 upperLeftRow, Aspose::Cells::Systems 将图表添加到工作表::Int32 upperLeftColumn, Aspose::Cells::Systems::Int32 lowerRightRow, Aspose::Cells::Systems::Int32 lowerRightColumn) 方法。
- 使用 IWorksheet->GetICharts()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法访问带有索引的图表。
- 使用 IChart->GetNISeries()->Add (intrusiveptrAspose::Cells::Systems::String area, bool isVertical) 方法。
- 最后,使用 IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下是使用 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 文件中创建金字塔图的步骤。
- 首先,创建一个 IWorkbook 类的实例。
- 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索要在其中添加图表的工作表。
- 插入图表的数据。
- 使用 IWorksheet->GetICharts()->Add (Aspose::Cells::Charts::ChartType type,Aspose::Cells::Systems::Int32 upperLeftRow, Aspose::Cells::Systems 将图表添加到工作表::Int32 upperLeftColumn, Aspose::Cells::Systems::Int32 lowerRightRow, Aspose::Cells::Systems::Int32 lowerRightColumn) 方法。
- 使用 IWorksheet->GetICharts()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法访问带有索引的图表。
- 使用 IChart->GetNISeries()->Add (intrusiveptrAspose::Cells::Systems::String area, bool isVertical) 方法。
- 最后,使用 IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下是使用 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 文件中创建气泡图的步骤。
- 首先,创建一个 IWorkbook 类的实例。
- 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法检索要在其中添加图表的工作表。
- 插入图表的数据。
- 使用 IWorksheet->GetICharts()->Add (Aspose::Cells::Charts::ChartType type,Aspose::Cells::Systems::Int32 upperLeftRow, Aspose::Cells::Systems 将图表添加到工作表::Int32 upperLeftColumn, Aspose::Cells::Systems::Int32 lowerRightRow, Aspose::Cells::Systems::Int32 lowerRightColumn) 方法。
- 使用 IWorksheet->GetICharts()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) 方法访问带有索引的图表。
- 使用 IChart->GetNISeries()->Add (intrusiveptr) 为图表添加数据源、气泡大小、X 值和 Y 值Aspose::Cells::Systems::Stringarea, bool isVertical), IChart->GetNISeries()->GetObjectByIndex(0)->SetBubbleSizes (intrusiveptrAspose::Cells::Systems::String value), IChart->GetNISeries()->GetObjectByIndex(0)->SetXValues (intrusiveptrAspose::Cells::Systems::String value), IChart->GetNISeries()->GetObjectByIndex(0)->SetValues (intrusiveptrAspose::Cells::Systems::String value) 方法。
- 最后,使用 IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下是使用 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。如有任何问题,请随时通过我们的 免费支持论坛 与我们联系。