internal ExcelPivotTableCacheField AddFormula(string name, string formula)
        {
            ExcelPivotTableCacheField cacheField = CreateField(name, _fields.Count, false);

            cacheField.Formula = formula;
            Fields.Add(cacheField);
            return(cacheField);
        }
        internal ExcelPivotTableCacheField AddDateGroupField(ExcelPivotTableField field, eDateGroupBy groupBy, DateTime startDate, DateTime endDate, int interval)
        {
            ExcelPivotTableCacheField cacheField = CreateField(groupBy.ToString(), field.Index, false);

            cacheField.SetDateGroup(field, groupBy, startDate, endDate, interval);

            Fields.Add(cacheField);
            return(cacheField);
        }
Esempio n. 3
0
        internal void RefreshFields()
        {
            var fields = new List <ExcelPivotTableCacheField>();
            var r      = SourceRange;

            for (int col = r._fromCol; col <= r._toCol; col++)
            {
                var ix = col - r._fromCol;
                if (_fields != null && col < _fields.Count && _fields[col].Grouping != null)
                {
                    fields.Add(_fields[ix]);
                }
                else
                {
                    var ws   = r.Worksheet;
                    var name = ws.GetValue(r._fromRow, col).ToString();
                    ExcelPivotTableCacheField field;
                    if (_fields == null || ix >= _fields?.Count)
                    {
                        field = CreateField(name, ix);
                        field.TopNode.InnerXml = "<sharedItems/>";
                        foreach (var pt in _pivotTables)
                        {
                            pt.Fields.AddField(ix);
                        }
                    }
                    else
                    {
                        field = _fields[ix];
                        field.SharedItems.Clear();
                    }
                    field.Name = name;
                    var hs = new HashSet <object>();
                    for (int row = r._fromRow + 1; row <= r._toRow; row++)
                    {
                        ExcelPivotTableCacheField.AddSharedItemToHashSet(hs, ws.GetValue(row, col));
                    }
                    field.SharedItems._list = hs.ToList();
                    fields.Add(field);
                }
            }
            for (int i = fields.Count; i < _fields.Count; i++)
            {
                fields.Add(_fields[i]);
            }
            _fields = fields;


            RefreshPivotTableItems();
        }
Esempio n. 4
0
        internal void UpdateGroupItems(ExcelPivotTableCacheField cacheField, bool addTypeDefault)
        {
            XmlElement itemsNode = CreateNode("d:items") as XmlElement;

            _items = new ExcelPivotTableFieldItemsCollection(this);
            itemsNode.RemoveAll();
            for (int x = 0; x < cacheField.GroupItems.Count; x++)
            {
                _items.AddInternal(new ExcelPivotTableFieldItem()
                {
                    X = x, Value = cacheField.GroupItems[x]
                });
            }
            if (addTypeDefault)
            {
                _items.AddInternal(new ExcelPivotTableFieldItem()
                {
                    Type = eItemType.Default
                });
            }
        }
 internal ExcelPivotTableFieldItemsCollection(ExcelPivotTableField field) : base()
 {
     _field = field;
     _cache = field.Cache;
 }