コード例 #1
0
ファイル: SheetCellRangeUtility.cs プロジェクト: Daoting/dt
 public static SheetCellRange[] ExtractAllExternalReference(ICalcEvaluator evaluator, CalcExpression expression)
 {
     if (expression != null)
     {
         List <CalcReferenceExpression> nodes = new List <CalcReferenceExpression>();
         FormulaUtility.ExtractAllReferenceExpression(evaluator, expression, nodes);
         if (nodes.Count > 0)
         {
             List <SheetCellRange> list2 = new List <SheetCellRange>();
             foreach (CalcReferenceExpression expression2 in nodes)
             {
                 if (expression2 is CalcExternalRangeExpression)
                 {
                     CalcExternalRangeExpression expression3 = expression2 as CalcExternalRangeExpression;
                     SheetCellRange range = new SheetCellRange(expression3.Source as Worksheet, expression3.StartRow, expression3.StartColumn, (expression3.EndRow - expression3.StartRow) + 1, (expression3.EndColumn - expression3.StartColumn) + 1);
                     list2.Add(range);
                 }
                 else if (expression2 is CalcExternalCellExpression)
                 {
                     CalcExternalCellExpression expression4 = expression2 as CalcExternalCellExpression;
                     SheetCellRange             range2      = new SheetCellRange(expression4.Source as Worksheet, expression4.Row, expression4.Column, 1, 1);
                     list2.Add(range2);
                 }
                 else
                 {
                     return(null);
                 }
             }
             return(list2.ToArray());
         }
     }
     return(null);
 }
コード例 #2
0
ファイル: SeriesDataCollection!1.cs プロジェクト: Daoting/dt
 void UpdateDataProviders()
 {
     if (this._dataProviders != null)
     {
         foreach (ISeriesDataProvider provider in this._dataProviders)
         {
             if (provider != null)
             {
                 if (provider is WorksheetSeriesDataProvider)
                 {
                     (provider as WorksheetSeriesDataProvider).Worksheet = null;
                 }
                 provider.DataChanged -= new EventHandler(this.DataProvider_DataChanged);
             }
         }
     }
     this._dataProviders = null;
     if ((this.DataSeries != null) && (this.DataSeries.DataReference != null))
     {
         CalcReferenceExpression[] expressions = null;
         FormulaUtility.ExtractAllReferenceExpression(this._dataSeries.Evaluator, this._dataSeries.DataReference, out expressions);
         if ((expressions != null) && (expressions.Length > 0))
         {
             this._dataProviders = new List <ISeriesDataProvider>();
             foreach (CalcReferenceExpression expression in expressions)
             {
                 DataOrientation vertical = DataOrientation.Vertical;
                 if (this._dataSeries.DataOrientation.HasValue)
                 {
                     vertical = this._dataSeries.DataOrientation.Value;
                 }
                 else if (expression is CalcRangeExpression)
                 {
                     CalcRangeExpression expression2 = expression as CalcRangeExpression;
                     int num  = (expression2.EndColumn - expression2.StartColumn) + 1;
                     int num2 = (expression2.EndRow - expression2.StartRow) + 1;
                     vertical = (num > num2) ? DataOrientation.Horizontal : DataOrientation.Vertical;
                 }
                 WorksheetSeriesDataProvider provider2 = this.CreateSeriesDataProvider(new DefaultDataSeries(expression, vertical, this._dataSeries.DisplayHiddenData, this._dataSeries.EmptyValueStyle, null));
                 this._dataProviders.Add(provider2);
                 if (expression is CalcExternalExpression)
                 {
                     provider2.Worksheet = (expression as CalcExternalExpression).Source as Worksheet;
                 }
                 provider2.DataChanged += new EventHandler(this.DataProvider_DataChanged);
             }
         }
     }
 }