圖表是簡潔顯示數據的絕佳工具。此外,它們通過可視化表示更容易使用大量數據。在展示公司增長趨勢或產品採用率等數據時,將圖表添加到演示文稿中可能會有所幫助。為此,本文將教您如何使用 C++ 在 PowerPoint 演示文稿中創建圖表。
- 用於在 PowerPoint 演示文稿中創建圖表的 C++ API
- 使用 C++ 在 PowerPoint 演示文稿中創建柱形圖
- 使用 C++ 在 PowerPoint 演示文稿中創建餅圖
- 使用 C++ 在 PowerPoint 演示文稿中創建散點圖
- 在 PowerPoint 演示文稿中創建直方圖
- 額外支持的圖表
- 獲得免費許可證
用於在 PowerPoint 演示文稿中創建圖表的 C++ API
Aspose.Slides for C++ 是一個原生 C++ 庫,支持創建、讀取和操作 PowerPoint 文件。 API 還支持在 PowerPoint 演示文稿中創建圖表。您可以通過 NuGet 安裝 API 或直接從 下載 部分下載。
PM> Install-Package Aspose.Slides.Cpp
使用 C++ 在 PowerPoint 演示文稿中創建柱形圖
以下是在 PowerPoint 演示文稿中創建柱形圖的步驟。
- 首先,創建 Presentation 類的一個實例。
- 使用 Presentation->getSlides()->idxget (int32t index) 訪問要在其上添加柱形圖的幻燈片。
- 使用 ISlide->getShapes()->AddChart (Charts::ChartType type, float x, float y, float width, float height) 方法將 ClusteredColumn 圖表添加到幻燈片。
- 使用 IChart->getChartData()->getChartDataWorkbook() 方法訪問圖表數據工作簿。
- 使用 IChart->getChartTitle()->AddTextFrameForOverriding (System::String text) 方法設置圖表的標題。
- 使用 IChart->getChartData()->getSeries()->Clear() 和 [IChart->getChartData()->getCategories()->Clear()] 清除圖表數據中的默認系列和類別10方法分別。
- 使用 IChart->getChartData()->getSeries()->Add (System::SharedPtr cellWithSeriesName, ChartType 類型) 和 IChart->getChartData()->getCategories()->Add (System::SharedPtr chartDataCell) 方法。
- 使用 IChart->getChartData()->getSeries()->idxget (int32t index) 方法訪問每個系列。
- 為每個系列添加數據點、填充顏色和標籤。
- 最後,使用 Presentation->Save (System::String name, Export::SaveFormat format) 方法保存包含柱形圖的演示文稿。
以下是使用 C++ 在 PowerPoint 演示文稿中添加柱形圖的示例代碼。
// 輸出文件路徑。
const String outputFilePath = u"OutputDirectory\\column_chart.pptx";
// 實例化表示 PPTX 文件的 Presentation 類
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// 訪問第一張幻燈片
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// 添加具有默認數據的圖表
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);
// 設置圖表數據表索引
int defaultWorksheetIndex = 0;
// 獲取圖表數據工作簿
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();
// 設置圖表標題
chart->get_ChartTitle()->AddTextFrameForOverriding(u"Sample Title");
chart->get_ChartTitle()->get_TextFrameForOverriding()->get_TextFrameFormat()->set_CenterText(NullableBool::True);
chart->get_ChartTitle()->set_Height(20);
chart->set_HasTitle(true);
// 刪除默認生成的系列和類別
chart->get_ChartData()->get_Series()->Clear();
chart->get_ChartData()->get_Categories()->Clear();
int s = chart->get_ChartData()->get_Series()->get_Count();
s = chart->get_ChartData()->get_Categories()->get_Count();
// 添加系列
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 2, ObjectExt::Box<System::String>(u"Series 2")), chart->get_Type());
// 添加類別
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 1, 0, ObjectExt::Box<System::String>(u"Category 1")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 2, 0, ObjectExt::Box<System::String>(u"Category 2")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 3, 0, ObjectExt::Box<System::String>(u"Category 3")));
// 獲取第一個圖表系列
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);
// 填充系列數據
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<double>(20)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(50)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(30)));
// 設置系列的填充顏色
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());
// 採取第二個圖表系列
series = chart->get_ChartData()->get_Series()->idx_get(1);
// 填充系列數據
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 2, ObjectExt::Box<double>(30)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(10)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(60)));
// 設置系列的填充顏色
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Orange());
// 第一個標籤將顯示類別名稱
SharedPtr<IDataLabel> lbl = series->get_DataPoints()->idx_get(0)->get_Label();
lbl->get_DataLabelFormat()->set_ShowCategoryName(true);
lbl = series->get_DataPoints()->idx_get(1)->get_Label();
lbl->get_DataLabelFormat()->set_ShowSeriesName(true);
// 顯示第三個標籤的值
lbl = series->get_DataPoints()->idx_get(2)->get_Label();
lbl->get_DataLabelFormat()->set_ShowValue(true);
lbl->get_DataLabelFormat()->set_ShowSeriesName(true);
lbl->get_DataLabelFormat()->set_Separator(u"/");
// 保存 PPTX 文件
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);
下面是示例代碼生成的柱狀圖的圖片。
使用 C++ 在 PowerPoint 演示文稿中創建餅圖
以下是將餅圖添加到 PowerPoint 幻燈片的步驟。
- 首先,創建 Presentation 類的一個實例。
- 使用 Presentation->getSlides()->idxget (int32t index) 訪問要在其上添加餅圖的幻燈片。
- 使用 ISlide->getShapes()->AddChart (Charts::ChartType type, float x, float y, float width, float height) 方法將餅圖添加到幻燈片。
- 使用 IChart->getChartTitle()->AddTextFrameForOverriding (System::String text) 方法設置圖表的標題。
- 使用 IChart->getChartData()->getSeries()->Clear() 和 [IChart->getChartData()->getCategories()->Clear()] 清除圖表數據中的默認系列和類別20方法分別。
- 使用 IChart->getChartData()->getChartDataWorkbook() 方法訪問圖表數據工作簿。
- 使用 IChart->getChartData()->getSeries()->Add (System::SharedPtr cellWithSeriesName, ChartType 類型) 和 IChart->getChartData()->getCategories()->Add (System::SharedPtr chartDataCell) 方法。
- 使用 IChart->getChartData()->getSeries()->idxget (int32t index) 方法訪問每個系列。
- 使用 IChartSeries->getDataPoints()->AddDataPointForPieSeries (System::SharedPtr值) 方法。
- 格式化數據點,添加引出線,並設置旋轉角度。
- 最後,使用 Presentation->Save (System::String name, Export::SaveFormat format) 方法保存包含餅圖的演示文稿。
以下是使用 C++ 在 PowerPoint 幻燈片中添加餅圖的示例代碼。
// 輸出文件路徑。
const String outputFilePath = u"OutputDirectory\\pie_chart.pptx";
// 實例化表示 PPTX 文件的 Presentation 類
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// 訪問第一張幻燈片
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// 添加具有默認數據的圖表
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Pie, 0, 0, 500, 500);
// 設置圖表標題
chart->get_ChartTitle()->AddTextFrameForOverriding(u"Sample Title");
chart->get_ChartTitle()->get_TextFrameForOverriding()->get_TextFrameFormat()->set_CenterText(NullableBool::True);
chart->get_ChartTitle()->set_Height(20);
chart->set_HasTitle(true);
// 刪除默認生成的系列和類別
chart->get_ChartData()->get_Series()->Clear();
chart->get_ChartData()->get_Categories()->Clear();
// 設置圖表數據表索引
int defaultWorksheetIndex = 0;
// 獲取圖表數據工作簿
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();
// 添加類別
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 1, 0, ObjectExt::Box<System::String>(u"First Qtr")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 2, 0, ObjectExt::Box<System::String>(u"2nd Qtr")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 3, 0, ObjectExt::Box<System::String>(u"3rd Qtr")));
// 添加系列
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());
// 獲取第一個圖表系列
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);
// 填充系列數據
series->get_DataPoints()->AddDataPointForPieSeries(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<double>(20)));
series->get_DataPoints()->AddDataPointForPieSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(50)));
series->get_DataPoints()->AddDataPointForPieSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(30)));
chart->get_ChartData()->get_SeriesGroups()->idx_get(0)->set_IsColorVaried(true);
SharedPtr<IChartDataPoint> point = series->get_DataPoints()->idx_get(0);
point->get_Format()->get_Fill()->set_FillType(FillType::Solid);
point->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Orange());
// 設置扇區邊界
point->get_Format()->get_Line()->get_FillFormat()->set_FillType(FillType::Solid);
point->get_Format()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Gray());
point->get_Format()->get_Line()->set_Width(3.0);
SharedPtr<IChartDataPoint> point1 = series->get_DataPoints()->idx_get(1);
point1->get_Format()->get_Fill()->set_FillType(FillType::Solid);
point1->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_BlueViolet());
// 設置扇區邊界
point1->get_Format()->get_Line()->get_FillFormat()->set_FillType(FillType::Solid);
point1->get_Format()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());
point1->get_Format()->get_Line()->set_Width(3.0);
SharedPtr<IChartDataPoint> point2 = series->get_DataPoints()->idx_get(2);
point2->get_Format()->get_Fill()->set_FillType(FillType::Solid);
point2->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_YellowGreen());
// 設置扇區邊界
point2->get_Format()->get_Line()->get_FillFormat()->set_FillType(FillType::Solid);
point2->get_Format()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
point2->get_Format()->get_Line()->set_Width(2.0);
// 為系列中的每個類別創建自定義標籤
SharedPtr<IDataLabel> lbl1 = series->get_DataPoints()->idx_get(0)->get_Label();
// lbl.ShowCategoryName = true;
lbl1->get_DataLabelFormat()->set_ShowValue(true);
SharedPtr<IDataLabel> lbl2 = series->get_DataPoints()->idx_get(1)->get_Label();
lbl2->get_DataLabelFormat()->set_ShowValue(true);
lbl2->get_DataLabelFormat()->set_ShowLegendKey(true);
lbl2->get_DataLabelFormat()->set_ShowPercentage(true);
SharedPtr<IDataLabel> lbl3 = series->get_DataPoints()->idx_get(2)->get_Label();
lbl3->get_DataLabelFormat()->set_ShowSeriesName(true);
lbl3->get_DataLabelFormat()->set_ShowPercentage(true);
// 顯示圖表的引導線
series->get_Labels()->get_DefaultDataLabelFormat()->set_ShowLeaderLines(true);
// 設置餅圖扇區的旋轉角度
chart->get_ChartData()->get_SeriesGroups()->idx_get(0)->set_FirstSliceAngle(180);
// 保存 PPTX 文件
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);
下面是示例代碼生成的餅圖圖片。
使用 C++ 在 PowerPoint 演示文稿中創建散點圖
以下是將散點圖添加到 PowerPoint 幻燈片的步驟。
- 首先,創建 Presentation 類的一個實例。
- 使用 Presentation->getSlides()->idxget (int32t index) 訪問要在其上添加散點圖的幻燈片。
- 使用 ISlide->getShapes()->AddChart (Charts::ChartType type, float x, float y, float width, float height) 方法將 ScatterWithSmoothLines 圖表添加到幻燈片。
- 使用 IChart->getChartData()->getSeries()->Clear() 方法從圖表數據中清除默認系列。
- 使用 IChart->getChartData()->getChartDataWorkbook() 方法訪問圖表數據工作簿。
- 使用 IChart->getChartData()->getSeries()->Add (System::SharedPtr cellWithSeriesName, ChartType 類型) 方法。
- 使用 IChart->getChartData()->getSeries()->idxget (int32t index) 方法訪問每個系列。
- 使用 IChartSeries->getDataPoints()->AddDataPointForScatterSeries (System::SharedPtr xValue, System::SharedPtr yValue) 方法。
- 設置系列的標記。
- 最後,使用 Presentation->Save (System::String name, Export::SaveFormat format) 方法保存包含散點圖的演示文稿。
下面是使用C++向PowerPoint幻燈片添加散點圖的示例代碼。
// 輸出文件路徑。
const String outputFilePath = u"OutputDirectory\\scattered_chart.pptx";
// 實例化表示 PPTX 文件的 Presentation 類
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// 訪問第一張幻燈片
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// 添加具有默認數據的圖表
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ScatterWithSmoothLines, 0, 0, 500, 500);
// 刪除默認生成的系列
chart->get_ChartData()->get_Series()->Clear();
// 設置圖表數據表索引
int defaultWorksheetIndex = 0;
// 獲取圖表數據工作簿
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();
// 添加系列
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 1, 3, ObjectExt::Box<System::String>(u"Series 2")), chart->get_Type());
// 獲取第一個圖表系列
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);
// 在那裡添加新點 (1:3)。
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(1)), fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(3)));
// 添加新點 (2:10)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(10)));
// 編輯系列類型
series->set_Type(ChartType::ScatterWithStraightLinesAndMarkers);
// 更改圖表系列標記
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Star);
// 採取第二個圖表系列
series = chart->get_ChartData()->get_Series()->idx_get(1);
// 在那裡添加新點 (5:2)。
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 2, 4, ObjectExt::Box<double>(2)));
// 添加新點 (3:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 3, ObjectExt::Box<double>(3)), fact->GetCell(defaultWorksheetIndex, 3, 4, ObjectExt::Box<double>(1)));
// 添加新點 (2:2)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 4, 3, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 4, 4, ObjectExt::Box<double>(2)));
// 添加新點 (5:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 5, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 5, 4, ObjectExt::Box<double>(1)));
// 更改圖表系列標記
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Circle);
// 保存 PPTX 文件
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);
下面是示例代碼生成的散點圖圖片。
在 PowerPoint 演示文稿中創建直方圖
以下是在 PowerPoint 演示文稿中創建直方圖的步驟。
- 首先,創建 Presentation 類的一個實例。
- 使用 Presentation->getSlides()->idxget (int32t index) 訪問要在其上添加直方圖圖表的幻燈片。
- 使用 ISlide->getShapes()->AddChart (Charts::ChartType type, float x, float y, float width, float height) 方法將直方圖添加到幻燈片。
- 使用 IChart->getChartData()->getSeries()->Clear() 和 [IChart->getChartData()->getCategories()->Clear()] 清除圖表數據中的默認系列和類別40方法分別。
- 使用 IChart->getChartData()->getChartDataWorkbook() 方法訪問圖表數據工作簿。
- 使用 IChart->getChartData()->getSeries()->Add (ChartType type) 方法添加新系列。
- 使用 IChartSeries->getDataPoints()->AddDataPointForHistogramSeries (System::SharedPtr值) 方法。
- 使用 IChart->getAxes()->getHorizontalAxis()->setAggregationType (AxisAggregationType value) 方法設置圖表軸的聚合類型。
- 最後,使用 Presentation->Save (System::String name, Export::SaveFormat format) 方法保存包含直方圖的演示文稿。
以下是使用 C++ 在 PowerPoint 演示文稿中創建直方圖圖表的示例代碼。
// 輸出文件路徑。
const String outputFilePath = u"OutputDirectory\\histogram_chart.pptx";
// 實例化表示 PPTX 文件的 Presentation 類
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// 訪問第一張幻燈片
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// 添加具有默認數據的圖表
System::SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Histogram, 50, 50, 500, 400);
// 刪除默認生成的系列和類別
chart->get_ChartData()->get_Categories()->Clear();
chart->get_ChartData()->get_Series()->Clear();
// 獲取圖表數據工作簿
System::SharedPtr<IChartDataWorkbook> wb = chart->get_ChartData()->get_ChartDataWorkbook();
wb->Clear(0);
// 添加系列
System::SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->Add(Aspose::Slides::Charts::ChartType::Histogram);
// 填充系列數據
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A1", System::ObjectExt::Box<int32_t>(15)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A2", System::ObjectExt::Box<int32_t>(-41)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A3", System::ObjectExt::Box<int32_t>(16)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A4", System::ObjectExt::Box<int32_t>(10)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A5", System::ObjectExt::Box<int32_t>(-23)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A6", System::ObjectExt::Box<int32_t>(16)));
// 設置軸聚合類型
chart->get_Axes()->get_HorizontalAxis()->set_AggregationType(Aspose::Slides::Charts::AxisAggregationType::Automatic);
// 保存 PPTX 文件
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);
下面是示例代碼生成的柱狀圖的圖像。
額外支持的圖表
除了上面顯示的圖表,Aspose.Slides for C++ 支持更多的圖表類型。您可以通過閱讀 this 文檔文章查看支持的圖表類型的完整列表和示例代碼。
獲得免費許可證
您可以申請免費的臨時許可證 來試用沒有評估限制的 API。
結論
在本文中,您了解瞭如何使用 C++ 在 PowerPoint 幻燈片中添加圖表。具體來說,您已經學習瞭如何在 PowerPoint 演示文稿中添加柱狀圖、散點圖、餅圖和直方圖。此外,您已經看到 Aspose.Slides for C++ API 提供了更多的圖表類型供您在 PowerPoint 演示文稿中使用。除了圖表之外,API 還提供了一系列功能來增強您的 PowerPoint 演示文稿。您可以使用 官方文檔 詳細探索 API。如有任何疑問,請隨時通過 免費支持論壇 與我們聯繫。