TXLSXCharts 是 TXLSXWorksheet.Charts 公開的內嵌圖表集合,而 TXLSXChart 負責圖表位置、座標軸與數列
宣告
function TXLSXCharts.Add: TXLSXChart; overload;
function TXLSXCharts.Add(AChartType: TXLSXChartType; const ATitle: WideString; AFromRow, AFromCol, AToRow, AToCol: Integer): TXLSXChart; overload;
function TXLSXChart.AddSeries(const AName, ACategories, AValues: WideString): TXLSXChartSeries;
function TXLSXChart.AddPlotGroup(AChartType: TXLSXChartType; AAxisGroup: TXLSXChartAxisGroup = xlsxAxisPrimary): TXLSXChartPlotGroup;
procedure TXLSXChart.ClearSeries;
procedure TXLSXChart.ClearPlotGroups;
procedure TXLSXChart.ClearPreservedXml;
property TXLSXChart.ChartType: TXLSXChartType;
property TXLSXChart.HasPreservedXml: Boolean;
property TXLSXChart.CategoryAxis, ValueAxis: TXLSXChartAxis;
property TXLSXChart.SecondaryCategoryAxis, SecondaryValueAxis: TXLSXChartAxis;
property TXLSXChart.SeriesAxis: TXLSXChartAxis;
property TXLSXChart.TitleTextStyle, LegendTextStyle: TXLSXChartTextStyle;
property TXLSXChart.PlotAreaLayout, TitleLayout, LegendLayout: TXLSXChartLayout;
property TXLSXChart.ShowLegend, TitleOverlay, LegendOverlay: Boolean;
property TXLSXChart.LegendPosition: TXLSXChartLegendPosition;
property TXLSXChart.Series[Index: Integer]: TXLSXChartSeries;
property TXLSXChart.PlotGroups[Index: Integer]: TXLSXChartPlotGroup;
property TXLSXChart.RadarStyle: TXLSXChartRadarStyle;
property TXLSXChart.HoleSize, FirstSliceAng: Integer;
property TXLSXChart.OfPieType: TXLSXChartOfPieType;
property TXLSXChart.OfPieSplitType: TXLSXChartOfPieSplitType;
property TXLSXChart.OfPieSplitPos, OfPieSecondPieSize, OfPieGapWidth: Integer;
property TXLSXChart.RoundedCorners, AutoTitleDeleted: Boolean;
property TXLSXChart.ChartBackgroundColor, ChartBorderColor, PlotAreaBackgroundColor: LongWord;
property TXLSXChart.ProtectionEnabled: Boolean;
property TXLSXChart.ProtectedChartObjects, ProtectedDataEditing, ProtectedFormatting, ProtectedSelection, ProtectedUserInterface: Boolean;
property TXLSXChart.ShowDataTableHorzBorder, ShowDataTableVertBorder, ShowDataTableOutline: Boolean;
property TXLSXChart.HasDropLines, HasSeriesLines: Boolean;
property TXLSXChart.OwnerSheet: TXLSXWorksheet;
圖表成員
| Title, CategoryAxisTitle and ValueAxisTitle | 圖表與主要座標軸的標題文字 |
| TitleTextStyle and TitleLayout | 強型別的圖表標題字型、色彩、強調、旋轉、覆蓋與手動位置 |
| ShowLegend, LegendPosition, LegendTextStyle and LegendLayout | 圖例的顯示、位置、覆蓋、字型與手動位置 |
| PlotAreaLayout | 以正規化的 ChartML 座標手動指定內部或外部繪圖矩形 |
| FromRow, FromCol, ToRow and ToCol | 以 1 為基數的工作表錨定矩形 |
| CategoryAxis and ValueAxis | 主要類別軸(或 X 軸)與主要數值軸(或 Y 軸) |
| SecondaryCategoryAxis and SecondaryValueAxis | 次要繪圖群組使用的頂部與右側座標軸 |
| SeriesAxis | 三維類別圖表使用的深度軸 |
| PlotGroups | 有序的圖表家族群組,讓組合圖得以實現,而 Series 仍維持扁平化的相容性檢視 |
| HasPreservedXml | 回報圖表是否保留原始 ChartML,以利進行擴充安全的往返讀寫 |
| ShowDataTable and ShowDataTableKeys | 資料表的顯示控制 |
| ShowDataTableHorzBorder, ShowDataTableVertBorder and ShowDataTableOutline | 各自獨立的資料表框線開關,分別寫出 c:showHorzBorder、c:showVertBorder 與 c:showOutline;三者預設都是 True |
| HasDropLines and HasSeriesLines | 折線圖的跌落線會把每個資料點連到類別軸;數列線則連接堆疊直條或折線數列的區段 |
| HasUpDownBars, UpDownGapWidth and HasHiLowLines | 折線圖與股票圖的顯示控制 |
| Rotation3DX, Rotation3DY, Elevation3D, Perspective3D and RightAngleAxes3D | 三維圖表的視角控制 |
| HeightPercent3D, DepthPercent3D and GapDepth3D | 三維繪圖的高度、深度與數列間距百分比 |
| RadarStyle | 目前圖表類型可選用的雷達圖家族變體 |
| HoleSize and FirstSliceAng | 圓環圖的內半徑百分比(10..90),以及圓餅圖與圓環圖的起始角度(度) |
| OfPieType, OfPieSplitType, OfPieSplitPos, OfPieSecondPieSize and OfPieGapWidth | 圓餅圖中的圓餅與圓餅圖中的直條的版面配置、分割規則,以及主要與次要繪圖的大小 |
| RoundedCorners | 切換圖表空間是否使用圓角 |
| AutoTitleDeleted | 抑制由單一數列名稱衍生的自動標題,並寫出 c:autoTitleDeleted |
| ChartBackgroundColor, ChartBorderColor and PlotAreaBackgroundColor | 圖表與繪圖區的填滿和框線色彩,以 $RRGGBB 值表示;0 表示保留佈景主題預設值 |
| ProtectionEnabled, ProtectedChartObjects, ProtectedDataEditing, ProtectedFormatting, ProtectedSelection and ProtectedUserInterface | 圖表保護開關,以及它以 c:protection 寫出的各項編輯限制 |
| OwnerSheet | 擁有此圖表之工作表的唯讀參考 |
圖表類型與組合群組
TXLSXChartType 涵蓋直條圖、橫條圖、折線圖、圓餅圖、區域圖、圓環圖、散佈圖、泡泡圖、雷達圖、股票圖、圓餅圖中的圓餅、曲面圖、3D 曲面圖、3D 直條圖、3D 橫條圖、3D 折線圖、3D 圓餅圖與 3D 區域圖等家族
第一個繪圖群組是由 ChartType 與 AddSeries 控制的相容性群組;其他群組用 AddPlotGroup 加入,可指定 xlsxAxisPrimary 或 xlsxAxisSecondary
數列、趨勢線與誤差線
function TXLSXChartSeries.AddTrendline(AType: TXLSXChartTrendlineType): TXLSXChartTrendline;
function TXLSXChartSeries.AddErrorBar(ADir: TXLSXChartErrDir): TXLSXChartErrBar;
property TXLSXChartSeries.Trendlines[Index: Integer]: TXLSXChartTrendline;
property TXLSXChartSeries.ErrBarX, ErrBarY: TXLSXChartErrBar;
property TXLSXChartTrendline.TrendlineType: TXLSXChartTrendlineType;
property TXLSXChartTrendline.DispEq, DispRSqr: Boolean;
property TXLSXChartTrendline.Order, Period: Integer;
property TXLSXChartErrBar.ValueType: TXLSXChartErrValType;
property TXLSXChartErrBar.Value, PlusValue, MinusValue: Double;
| TrendlineType | 線性、指數、對數、多項式、冪次或移動平均趨勢線 |
| DispEq and DispRSqr | 在圖表上顯示公式與 R 平方值 |
| Order and Period | 對應趨勢線類型的多項式階數或移動平均期數 |
| ValueType | 固定、百分比、標準差、標準誤或自訂的誤差量 |
| NoEndCap | 隱藏誤差線兩端的端帽 |
座標軸與資料標籤成員
| LogBase and Orientation | 對數刻度的基數,以及正向或反向的座標軸排序 |
| MajorGridlines and MinorGridlines | 格線的顯示控制 |
| MinValue, MaxValue, MajorUnit and MinorUnit | 在支援的情況下明確指定縮放界限與刻度間距 |
| CrossesAt, TickLblPos and DispUnits | 座標軸交叉位置、標籤放置與顯示單位 |
ShowValue, ShowCategoryName, ShowSeriesName, ShowLegendKey, ShowPercent and ShowBubbleSize | 每個數列各自的資料標籤元件 |
| Separator | 多個資料標籤元件同時顯示時使用的分隔文字 |
保留不支援的 ChartML
啟用 TXLSXWorkbook.PreserveUnsupportedParts(這是預設值)時,匯入的圖表會保留原始 ChartML。未經更動的圖表會原樣重播這份 XML、不做正規化;而強型別屬性的修改,則會把 HotXLS 產生的模型疊加到原始樹上
編輯已知屬性時,未知命名空間、markup-compatibility AlternateContent、擴充功能清單、自訂樣式與未建模的格式,都會繼續附著在原本的圖表物件上。呼叫 ClearPreservedXml 可捨棄單一圖表保留的 XML,改為只從強型別屬性重新產生
範例
var
Chart: TXLSXChart;
Secondary: TXLSXChartPlotGroup;
begin
Chart := Sheet.Charts.Add(xlsxChartLine, 'Monthly sales', 2, 5, 18, 12);
Chart.AddSeries('Sales', 'Sheet1!$A$2:$A$13', 'Sheet1!$B$2:$B$13');
Chart.ValueAxisTitle := 'Amount';
Chart.TitleTextStyle.Name := 'Aptos Display';
Chart.TitleTextStyle.Size := 18;
Chart.TitleTextStyle.Bold := True;
Chart.PlotAreaLayout.Target := xlsxChartLayoutInner;
Chart.PlotAreaLayout.SetPositionAndSize(0.12, 0.18, 0.72, 0.64);
Chart.ShowLegend := True;
Chart.LegendPosition := xlsxChartLegendBottom;
Chart.LegendTextStyle.Size := 10;
Secondary := Chart.AddPlotGroup(xlsxChartColumn, xlsxAxisSecondary);
Secondary.AddSeries('Margin', 'Sheet1!$A$2:$A$13', 'Sheet1!$C$2:$C$13');
Chart.SecondaryValueAxis.Title := 'Margin percent';
Chart.Series[0].AddTrendline(xlsxTrendLinear).DispRSqr := True;
Chart.Series[0].ShowValue := True;
end;另請參閱