在 .NET 中優化簡報的圖表計算
概觀
Aspose.Slides 提供用於在簡報中處理圖表計算與版面配置資料的 API。本篇文章說明如何取得圖表元素的實際值,包括實作 IActualLayout 的元素之真實位置與大小,以及圖表座標軸的實際值。亦說明這些值會在圖表版面配置驗證之後才會填入。
此外,本文還示範如何取得父圖表元素的實際位置,以及如何隱藏圖表元件(如標題、座標軸、圖例與格線)。透過這些範例,您可以程式化檢視 PowerPoint 簡報中圖表的版面資訊,並控制圖表元素的可見性。
計算圖表元素的實際值
Aspose.Slides for .NET 提供簡易的 API 以取得這些屬性。這將協助您 計算圖表元素的實際值。實際值包括實作 IActualLayout 介面的元素之位置(IActualLayout.ActualX、IActualLayout.ActualY、IActualLayout.ActualWidth、IActualLayout.ActualHeight)以及實際座標軸值(IAxis.ActualMaxValue、IAxis.ActualMinValue、IAxis.ActualMajorUnit、IAxis.ActualMinorUnit、IAxis.ActualMajorUnitScale、IAxis.ActualMinorUnitScale)。
using (Presentation pres = new Presentation("test.pptx"))
{
Chart chart = (Chart)pres.Slides[0].Shapes.AddChart(ChartType.ClusteredColumn, 100, 100, 500, 350);
chart.ValidateChartLayout();
double x = chart.PlotArea.ActualX;
double y = chart.PlotArea.ActualY;
double w = chart.PlotArea.ActualWidth;
double h = chart.PlotArea.ActualHeight;
// 儲存簡報
pres.Save("Result.pptx", SaveFormat.Pptx);
}
計算父圖表元素的實際位置
Aspose.Slides for .NET 提供簡易的 API 以取得這些屬性。IActualLayout 的屬性提供父圖表元素的實際位置資訊。必須先呼叫 IChart.ValidateChartLayout() 方法,以在屬性中填入實際值。
// 建立空白簡報
using (Presentation pres = new Presentation())
{
Chart chart = (Chart)pres.Slides[0].Shapes.AddChart(ChartType.ClusteredColumn, 100, 100, 500, 350);
chart.ValidateChartLayout();
double x = chart.PlotArea.ActualX;
double y = chart.PlotArea.ActualY;
double w = chart.PlotArea.ActualWidth;
double h = chart.PlotArea.ActualHeight;
}
隱藏圖表元素
本主題說明如何隱藏圖表中的資訊。使用 Aspose.Slides for .NET,您可以隱藏圖表的 標題、垂直座標軸、水平座標軸 與 格線。以下程式碼範例示範如何使用這些屬性。
using (Presentation pres = new Presentation())
{
ISlide slide = pres.Slides[0];
IChart chart = slide.Shapes.AddChart(ChartType.LineWithMarkers, 140, 118, 320, 370);
//隱藏圖表標題
chart.HasTitle = false;
///隱藏數值座標軸
chart.Axes.VerticalAxis.IsVisible = false;
//類別座標軸可見性
chart.Axes.HorizontalAxis.IsVisible = false;
//隱藏圖例
chart.HasLegend = false;
//隱藏主要格線
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.FillFormat.FillType = FillType.NoFill;
for (int i = 0; i < chart.ChartData.Series.Count; i++)
{
chart.ChartData.Series.RemoveAt(i);
}
IChartSeries series = chart.ChartData.Series[0];
series.Marker.Symbol = MarkerStyleType.Circle;
series.Labels.DefaultDataLabelFormat.ShowValue = true;
series.Labels.DefaultDataLabelFormat.Position = LegendDataLabelPosition.Top;
series.Marker.Size = 15;
//設定系列線條顏色
series.Format.Line.FillFormat.FillType = FillType.Solid;
series.Format.Line.FillFormat.SolidFillColor.Color = Color.Purple;
series.Format.Line.DashStyle = LineDashStyle.Solid;
pres.Save("HideInformationFromChart.pptx", SaveFormat.Pptx);
}
常見問題
外部 Excel 活頁簿可以作為資料來源嗎?這會如何影響重新計算?
是。圖表可以參照外部活頁簿:當您連接或重新整理外部來源時,公式與值會從該活頁簿取得,圖表在開啟/編輯時會反映更新。API 讓您指定外部活頁簿路徑並管理已連結的資料。
我能在不自行實作回歸的情況下計算並顯示趨勢線嗎?
是。趨勢線(線性、指數等)由 Aspose.Slides 自動新增與更新;其參數會根據系列資料自動重新計算,您不必自行實作計算。
如果簡報中有多個圖表帶有外部連結,我可以控制每個圖表使用哪一本活頁簿來計算值嗎?
是。每個圖表都可以指向自己的外部活頁簿,或您可以針對每個圖表獨立建立/取代外部活頁簿,而不受其他圖表影響。