예제 #1
0
        internal void ReadPivotTable(TOpenXmlReader DataStream, TXlsxPivotCacheList PivotCacheList)
        {
            /* Fields that need updating:
             * location
             * filter
             */
            LoadAtts(DataStream, false);
            long cid = DataStream.GetAttributeAsLong("cacheId", -1);

            if (cid >= 0)
            {
                FCache = PivotCacheList.FindCacheFromDisk(cid);
            }

            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return;
            }
            string StartElement = DataStream.RecordName();

            if (!DataStream.NextTag())
            {
                return;
            }

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "location":
                    ReadLocation(DataStream);
                    break;

                case "pivotFields":
                case "rowFields":
                case "rowItems":
                case "colFields":
                case "colItems":
                case "pageFields":
                case "dataFields":
                case "formats":
                case "conditionalFormats":
                case "chartFormats":
                case "pivotHierarchies":
                case "pivotTableStyleInfo":
                case "filters":
                case "rowHierarchiesUsage":
                case "colHierarchiesUsage":
                case "extLst":
                default:
                    FRecords.Add(new TXlsxPivotTableRecord(DataStream.GetXml()));
                    break;
                }
            }
        }
예제 #2
0
        private void ReadPivotCacheDefinition(TOpenXmlReader DataStream)
        {
            LoadAtts(DataStream, true);

            /* Fields that need updating:
             * cacheFields->formula
             * cacheSource.consolidation.rangeSets.rangeSet->ref
             * cacheSource.worksheetSource->ref
             * calculatedItems doesn't need it because formulas don't have cell refs.
             */

            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return;
            }
            string StartElement = DataStream.RecordName();

            if (!DataStream.NextTag())
            {
                return;
            }

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "cacheSource":
                    ReadCacheSource(DataStream);
                    break;

                case "cacheFields":
                //break;
                case "cacheHierarchies":
                case "kpis":
                case "tupleCache":
                case "calculatedItems":
                case "calculatedMembers":
                case "dimensions":
                case "measureGroups":
                case "maps":
                case "extLst":
                default:
                    FRecords.Add(new TXlsxPivotCacheRecord(DataStream.GetXml()));
                    break;
                }
            }
        }
예제 #3
0
        private void ReadCacheSource(TOpenXmlReader DataStream)
        {
            string SourceType = DataStream.GetAttribute("type");

            if (SourceType == "external")
            {
                FRecords.Add(new TXlsxPivotCacheRecord(DataStream.GetXml()));
                return;
            }

            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return;
            }
            string StartElement = DataStream.RecordName();

            if (!DataStream.NextTag())
            {
                return;
            }

            TCacheSourceRecord R = new TCacheSourceRecord(SourceType, DataStream.GetAttributeAsLong("connectionId", -1));

            FRecords.Add(R);

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "consolidation":
                    ReadConsolidation(DataStream, R);
                    break;

                case "worksheetSource":
                    ReadWorksheetSource(DataStream, R);
                    break;

                case "extLst":
                default:
                    TFutureStorage.Add(ref R.FutureStorage, new TFutureStorageRecord(DataStream.GetXml()));
                    break;
                }
            }
        }
예제 #4
0
 private void ReadLocation(TOpenXmlReader DataStream)
 {
     FRecords.Add(TXlsxPivotLocationRecord.Load(DataStream));
 }