A pivot table field.
Inheritance: XmlHelper
 internal ExcelPivotTablePageFieldSettings(XmlNamespaceManager ns, XmlNode topNode, ExcelPivotTableField field, int index)
     : base(ns, topNode)
 {
     Index = index;
     Hier = -1;
     _field = field;
 }
 internal ExcelPivotTableDataField(XmlNamespaceManager ns, XmlNode topNode,ExcelPivotTableField field)
     : base(ns, topNode)
 {
     Index = field.Index;
     BaseField = 0;
     BaseItem = 0;
     Field = field;
 }
 internal ExcelPivotTablePageFieldSettings(XmlNamespaceManager ns, XmlNode topNode, ExcelPivotTableField field, int index) :
     base(ns, topNode)
 {
     if (GetXmlNodeString("@hier")=="")
     {
         Hier = -1;
     }
     _field = field;
 }
 internal ExcelPivotTableDataField(XmlNamespaceManager ns, XmlNode topNode,ExcelPivotTableField field) :
     base(ns, topNode)
 {
     if (topNode.Attributes.Count == 0)
     {
         Index = field.Index;
         BaseField = 0;
         BaseItem = 0;
     }
     
     Field = field;
 }
        private ExcelPivotTableField AddField(eDateGroupBy groupBy,DateTime startDate, DateTime endDate,ref  bool firstField)
        {
            if (firstField == false)
            {
                //Pivot field
                var topNode = _table.PivotTableXml.SelectSingleNode("//d:pivotFields", _table.NameSpaceManager);
                var fieldNode = _table.PivotTableXml.CreateElement("pivotField", ExcelPackage.schemaMain);
                fieldNode.SetAttribute("compact", "0");
                fieldNode.SetAttribute("outline", "0");
                fieldNode.SetAttribute("showAll", "0");
                fieldNode.SetAttribute("defaultSubtotal", "0");
                topNode.AppendChild(fieldNode);

                var field = new ExcelPivotTableField(_table.NameSpaceManager, fieldNode, _table, _table.Fields.Count, Index);
                field.DateGrouping = groupBy;

                XmlNode rowColFields;
                if (IsRowField)
                {
                    rowColFields=TopNode.SelectSingleNode("../../d:rowFields", NameSpaceManager);
                }
                else
                {
                    rowColFields = TopNode.SelectSingleNode("../../d:colFields", NameSpaceManager);
                }

                int fieldIndex, index = 0;
                foreach (XmlElement rowfield in rowColFields.ChildNodes)
                {
                    if (int.TryParse(rowfield.GetAttribute("x"), out fieldIndex))
                    {
                        if (_table.Fields[fieldIndex].BaseIndex == BaseIndex)
                        {
                            var newElement = rowColFields.OwnerDocument.CreateElement("field", ExcelPackage.schemaMain);
                            newElement.SetAttribute("x", field.Index.ToString());
                            rowColFields.InsertBefore(newElement, rowfield);
                            break;
                        }
                    }
                    index++;
                }

                if (IsRowField)
                {
                    _table.RowFields.Insert(field, index);
                }
                else
                {
                    _table.ColumnFields.Insert(field, index);
                }

                _table.Fields.AddInternal(field);

                AddCacheField(field, startDate, endDate);
                return field;
            }
            else
            {
                firstField = false;
                DateGrouping = groupBy;
                Compact = false;
                SetDateGroup(groupBy, startDate, endDate);
                return this;
            }
        }
        private void AddCacheField(ExcelPivotTableField field, DateTime startDate, DateTime endDate)
        {
            //Add Cache definition field.
            var cacheTopNode = _table.CacheDefinition.CacheDefinitionXml.SelectSingleNode("//d:cacheFields", _table.NameSpaceManager);
            var cacheFieldNode = _table.CacheDefinition.CacheDefinitionXml.CreateElement("cacheField", ExcelPackage.schemaMain);

            cacheFieldNode.SetAttribute("name", field.DateGrouping.ToString());
            cacheFieldNode.SetAttribute("databaseField", "0");
            cacheTopNode.AppendChild(cacheFieldNode);
            field.SetCacheFieldNode(cacheFieldNode);

            field.SetDateGroup(field.DateGrouping, startDate, endDate);
        }
Example #7
0
        private void LoadFields()
        {
            //Fields.Clear();
            //int ix=0;
            //foreach(XmlElement fieldNode in PivotXml.SelectNodes("//d:pivotFields/d:pivotField",NameSpaceManager))
            //{
            //    Fields.AddInternal(new ExcelPivotTableField(NameSpaceManager, fieldNode, this, ix++));
            //}

            int index = 0;
            //Add fields.
            foreach (XmlElement fieldElem in TopNode.SelectNodes("d:pivotFields/d:pivotField", NameSpaceManager))
            {
                var fld = new ExcelPivotTableField(NameSpaceManager, fieldElem, this, index, index++);
                Fields.AddInternal(fld);
            }

            //Add fields.
            index = 0;
            foreach (XmlElement fieldElem in _cacheDefinition.TopNode.SelectNodes("d:cacheFields/d:cacheField", NameSpaceManager))
            {
                var fld = Fields[index++];
                fld.SetCacheFieldNode(fieldElem);
            }
        }
Example #8
0
 internal ExcelPivotTablePageFieldSettings(XmlNamespaceManager ns, XmlNode topNode, ExcelPivotTableField field, int index) :
     base(ns, topNode)
 {
     if (GetXmlNodeString("@hier") == "")
     {
         Hier = -1;
     }
     _field = field;
 }
 internal ExcelPivotTableFieldItem(XmlNamespaceManager ns, XmlNode topNode, ExcelPivotTableField field) :
     base(ns, topNode)
 {
    _field = field;
 }
Example #10
0
        private ExcelPivotTableField AddField(eDateGroupBy groupBy, DateTime startDate, DateTime endDate, ref bool firstField, int interval)
        {
            if (firstField == false)
            {
                //Pivot field
                var topNode   = _table.PivotTableXml.SelectSingleNode("//d:pivotFields", _table.NameSpaceManager);
                var fieldNode = _table.PivotTableXml.CreateElement("pivotField", ExcelPackage.schemaMain);
                fieldNode.SetAttribute("compact", "0");
                fieldNode.SetAttribute("outline", "0");
                fieldNode.SetAttribute("showAll", "0");
                fieldNode.SetAttribute("defaultSubtotal", "0");
                topNode.AppendChild(fieldNode);

                var field = new ExcelPivotTableField(_table.NameSpaceManager, fieldNode, _table, _table.Fields.Count, Index);
                field.DateGrouping = groupBy;

                XmlNode rowColFields;
                if (IsRowField)
                {
                    rowColFields = TopNode.SelectSingleNode("../../d:rowFields", NameSpaceManager);
                }
                else
                {
                    rowColFields = TopNode.SelectSingleNode("../../d:colFields", NameSpaceManager);
                }

                int fieldIndex, index = 0;
                foreach (XmlElement rowfield in rowColFields.ChildNodes)
                {
                    if (int.TryParse(rowfield.GetAttribute("x"), out fieldIndex))
                    {
                        if (_table.Fields[fieldIndex].BaseIndex == BaseIndex)
                        {
                            var newElement = rowColFields.OwnerDocument.CreateElement("field", ExcelPackage.schemaMain);
                            newElement.SetAttribute("x", field.Index.ToString());
                            rowColFields.InsertBefore(newElement, rowfield);
                            break;
                        }
                    }
                    index++;
                }

                if (IsRowField)
                {
                    _table.RowFields.Insert(field, index);
                }
                else
                {
                    _table.ColumnFields.Insert(field, index);
                }

                _table.Fields.AddInternal(field);

                AddCacheField(field, startDate, endDate, interval);
                return(field);
            }
            else
            {
                firstField   = false;
                DateGrouping = groupBy;
                Compact      = false;
                SetDateGroup(groupBy, startDate, endDate, interval);
                return(this);
            }
        }
 internal ExcelPivotTableFieldItemsCollection(ExcelPivotTableField field) : base()
 {
     _field = field;
     _cache = field.Cache;
 }
Example #12
0
        /// <summary>
        /// Creates an instance of a <see cref="ExcelPivotTableFieldItem"/>.
        /// </summary>
        /// <param name="namespaceManager">The namespace of the worksheet.</param>
        /// <param name="parentNode">The xml top node.</param>
        /// <param name="field">The pivot table field.</param>
        /// <param name="value">The value of the 'x' attribute.</param>
        internal ExcelPivotTableFieldItem(XmlNamespaceManager namespaceManager, XmlNode parentNode, ExcelPivotTableField field, int value) :
            base(namespaceManager, parentNode)
        {
            if (namespaceManager == null)
            {
                throw new ArgumentNullException(nameof(namespaceManager));
            }
            if (parentNode == null)
            {
                throw new ArgumentNullException(nameof(parentNode));
            }
            if (field == null)
            {
                throw new ArgumentNullException(nameof(field));
            }
            if (value < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(value));
            }
            myField      = field;
            base.TopNode = parentNode.OwnerDocument.CreateElement("item", parentNode.NamespaceURI);
            var attr = parentNode.OwnerDocument.CreateAttribute("x");

            base.TopNode.Attributes.Append(attr);
            this.X = value;
        }
Example #13
0
 /// <summary>
 /// Creates an instance of a <see cref="ExcelPivotTableFieldItem"/>.
 /// </summary>
 /// <param name="namespaceManager">The namespace of the worksheet.</param>
 /// <param name="topNode">The xml top node.</param>
 /// <param name="field">The pivot table field.</param>
 internal ExcelPivotTableFieldItem(XmlNamespaceManager namespaceManager, XmlNode topNode, ExcelPivotTableField field) :
     base(namespaceManager, topNode)
 {
     if (namespaceManager == null)
     {
         throw new ArgumentNullException(nameof(namespaceManager));
     }
     if (topNode == null)
     {
         throw new ArgumentNullException(nameof(topNode));
     }
     if (field == null)
     {
         throw new ArgumentNullException(nameof(field));
     }
     myField = field;
 }
 internal ExcelPivotTableFieldItem(XmlNamespaceManager ns, XmlNode topNode, ExcelPivotTableField field) :
     base(ns, topNode)
 {
     _field = field;
 }
Example #15
0
 /// <summary>
 /// Creates a new <see cref="PivotTableHeader"/> object.
 /// </summary>
 /// <param name="cacheRecordsUsed">The list of cache record indices the header uses.</param>
 /// <param name="recordIndices">The list tuple of cacheRecord indices and pivot field item index.</param>
 /// <param name="field">The pivot table field.</param>
 /// <param name="dataFieldCollectionIndex">The index of the data field in the collection.</param>
 /// <param name="isGrandTotal">A value indicating if it is a grand total.</param>
 /// <param name="isLeafNode">A value indicating if it is a leaf node.</param>
 /// <param name="isDataField">A value indicating if it is a data field node.</param>
 /// <param name="totalType">The itemType value of the <see cref="RowColumnItem"/>.</param>
 /// <param name="isAboveDataField">A value indicating if it is above a data field node.</param>
 /// <param name="indent">The level of indentation for the items that correspond to this header.</param>
 public PivotTableHeader(List <int> cacheRecordsUsed, List <Tuple <int, int> > recordIndices, ExcelPivotTableField field, int dataFieldCollectionIndex, bool isGrandTotal,
                         bool isLeafNode, bool isDataField, string totalType = null, bool isAboveDataField = false, int indent = 0)
 {
     this.UsedCacheRecordIndices   = cacheRecordsUsed;
     this.CacheRecordIndices       = recordIndices;
     this.PivotTableField          = field;
     this.DataFieldCollectionIndex = dataFieldCollectionIndex;
     this.IsGrandTotal             = isGrandTotal;
     this.IsLeafNode       = isLeafNode;
     this.IsDataField      = isDataField;
     this.IsAboveDataField = isAboveDataField;
     this.TotalType        = totalType;
     this.Indent           = indent;
 }
Example #16
0
 /// <summary>
 /// Creates an instance of a <see cref="ExcelPivotTableFieldCollection"/>.
 /// </summary>
 /// <param name="namespaceManager">The namespace manager.</param>
 /// <param name="topNode">The xml node.</param>
 /// <param name="table">The existing pivot table.</param>
 /// <param name="field">The <see cref="ExcelPivotTableField"/> of this collection.</param>
 public ExcelPivotTableFieldItemCollection(XmlNamespaceManager namespaceManager, XmlNode topNode, ExcelPivotTable table, ExcelPivotTableField field) : base(namespaceManager, topNode, table)
 {
     if (field == null)
     {
         throw new ArgumentNullException(nameof(field));
     }
     this.Field = field;
 }