优化 C++ 中演示文稿的图表计算
计算图表元素的实际值
Aspose.Slides for C++ 提供了一个简洁的 API 来获取这些属性。这将帮助您计算图表元素的实际值。实际值包括实现 IActualLayout 接口的元素的位置 (IActualLayout::get_ActualX(), IActualLayout::get_ActualY(), IActualLayout::get_ActualWidth(), IActualLayout::get_ActualHeight())以及实际坐标轴值 (IAxis::get_ActualMaxValue(), IAxis::get_ActualMinValue(), IAxis::get_ActualMajorUnit(), IAxis::get_ActualMinorUnit(), IAxis::get_ActualMajorUnitScale(), IAxis::get_ActualMinorUnitScale())。
auto pres = System::MakeObject<Presentation>(u"test.pptx");
auto chart = System::ExplicitCast<Chart>(pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::ClusteredColumn, 100.0f, 100.0f, 500.0f, 350.0f));
chart->ValidateChartLayout();
double x = chart->get_PlotArea()->get_ActualX();
double y = chart->get_PlotArea()->get_ActualY();
double w = chart->get_PlotArea()->get_ActualWidth();
double h = chart->get_PlotArea()->get_ActualHeight();
// 保存演示文稿
pres->Save(u"Result.pptx", SaveFormat::Pptx);
计算父图表元素的实际位置
Aspose.Slides for C++ 提供了一个简洁的 API 来获取这些属性。IActualLayout 的方法提供了父图表元素的实际位置信息。需要先调用 IChart::ValidateChartLayout() 方法以用实际值填充这些属性。
// 创建空演示文稿
auto pres = System::MakeObject<Presentation>();
auto chart = System::ExplicitCast<Chart>(pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::ClusteredColumn, 100.0f, 100.0f, 500.0f, 350.0f));
chart->ValidateChartLayout();
double x = chart->get_PlotArea()->get_ActualX();
double y = chart->get_PlotArea()->get_ActualY();
double w = chart->get_PlotArea()->get_ActualWidth();
double h = chart->get_PlotArea()->get_ActualHeight();
隐藏图表元素
本主题帮助您了解如何隐藏图表中的信息。使用 Aspose.Slides for C++,您可以隐藏图表的 标题、垂直坐标轴、水平坐标轴 和 网格线。下面的代码示例展示了如何使用这些属性。
为图表设置数据范围
Aspose.Slides for C++ 提供了最简便的 API 来设置图表的数据范围。设置图表的数据范围的步骤如下:
- 打开包含图表的 Presentation 类实例。
- 使用索引获取幻灯片的引用。
- 遍历所有形状以查找目标图表。
- 访问图表数据并设置范围。
- 将修改后的演示文稿另存为 PPTX 文件。
下面的代码示例展示了如何更新图表。
常见问题
外部 Excel 工作簿可以作为数据源吗?这会如何影响重新计算?
是的。图表可以引用外部工作簿:当您连接或刷新外部源时,公式和数值会从该工作簿获取,图表将在打开/编辑操作期间反映更新。该 API 允许您指定外部工作簿路径并管理链接的数据。
我可以在不自行实现回归的情况下计算并显示趋势线吗?
是的。趋势线(线性、指数等)由 Aspose.Slides 添加并自动更新;其参数会根据系列数据自动重新计算,因此您无需自行实现计算。
如果一个演示文稿有多个带外部链接的图表,我可以控制每个图表使用哪个工作簿进行计算吗?
是的。每个图表都可以指向其自己的外部工作簿,或者您可以为每个图表独立创建/替换外部工作簿,而不受其他图表影响。