Search Results for

    Show / Hide Table of Contents

    TExcelFile.ChartCount Property

    Returns the count of charts on this sheet. Please take note that this method will not return the number of embedded objects with charts inside in a sheet, but just the number of charts in the sheet. In simpler terms, this method will return 0 for all worksheets, and 1 for all chart sheets. This is not a very useful method, but it needs to be this way to be consistent with GetChart. So, looping like this:

      for i := 1 to xls.ChartCount do
      begin
        xls.GetChart(i, '');
      end;
    

    will loop 0 times for worksheets and 1 time for workbooks.

    Syntax

    Unit: FlexCel.Core

    property TExcelFile.ChartCount: Integer

    Examples

    The following example will retrieve all charts that are inserted as objects in a sheet, along with the chart sheets.

    procedure ProcessAllCharts;
    var
      xls: TXlsFile;
      iSheet: Int32;
      iChart: Int32;
      props: IShapeProperties;
      chart: IExcelChart;
    begin
      xls := TXlsFile.Create(true);
      try
        xls.Open('filewithcharts.xls');
        for iSheet := 1 to xls.SheetCount do
        begin
          xls.ActiveSheet := iSheet;
           //Process charts embedded as objects in worksheets.
          for iChart := 1 to xls.ObjectCount do
          begin
            props := xls.GetObjectProperties(iChart, true);
            ProcessChart(xls, iChart, props);  //We need to process it even if it is not a chart, since it might be a group with a chart inside.
          end;
    
           //Process chart sheets.
          if xls.SheetType = TSheetType.Chart then
          begin
            chart := xls.GetChart(1, '');
            DoSomething(xls, chart);
          end;
    
        end;
    
        xls.Save('changedfilewithcharts.xls');
      finally
        xls.Free;
      end;
    end;
    
    procedure ProcessChart(const xls: TExcelFile; const iChart: Int32; const props: IShapeProperties);
    var
      chart: IExcelChart;
      i: Int32;
      childProp: IShapeProperties;
    begin
      if props.ObjectType = TObjectType.Chart then
      begin
        chart := xls.GetChart(iChart, props.ObjectPath);
        DoSomething(xls, chart);
      end;
    
      for i := 1 to props.ChildrenCount do
      begin
        childProp := props.Children(i);
        ProcessChart(xls, i, childProp);
      end;
    end;
    

    See also

    • TExcelFile
    In This Article
    Back to top FlexCel Studio for VCL and FireMonkey v7.24
    © 2002 - 2025 tmssoftware.com