Пример #1
0
        internal void LoadXlsx(TOpenXmlReader DataStream)
        {
            AutoPage = DataStream.GetAttributeAsBool("autoPage", false);

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

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

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "pages":
                    Pages = DataStream.GetXml();
                    break;

                case "rangeSets":
                    ReadRangeSets(DataStream);
                    break;

                default:
                    DataStream.GetXml();     //Shouldn't happen.
                    break;
                }
            }
        }
Пример #2
0
        private static Dictionary <string, TShapeGeom> ReadShapes()
        {
            Dictionary <string, TShapeGeom> Result = new Dictionary <string, TShapeGeom>();

            using (Stream PresetStream = GetPresetStream())
            {
                using (TOpenXmlReader DataStream = TOpenXmlReader.CreateFromSimpleStream(PresetStream))
                {
                    DataStream.DefaultNamespace = "";
                    DataStream.NextTag();
                    Debug.Assert(DataStream.RecordName() == "presetShapeDefinitons", DataStream.RecordName());

                    string StartElement = DataStream.RecordName();
                    if (!DataStream.NextTag())
                    {
                        FlxMessages.ThrowException(FlxErr.ErrInternal);
                    }

                    TXlsxShapeReader ShapeReader = new TXlsxShapeReader(DataStream);
                    while (!DataStream.AtEndElement(StartElement))
                    {
                        Result[DataStream.RecordName()] = ShapeReader.ReadShapeDef(DataStream.RecordName());
                    }
                }
            }

            return(Result);
        }
Пример #3
0
        private void ReadRangeSets(TOpenXmlReader DataStream)
        {
            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return;
            }
            string StartElement = DataStream.RecordName();

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

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "rangeSet":
                    RangeSets.Add(TRangeSet.LoadFromXlsx(DataStream));
                    break;

                default:
                    DataStream.GetXml();     //Shouldn't happen.
                    break;
                }
            }
        }
Пример #4
0
        internal void Load(TOpenXmlReader DataStream)
        {
            TXlsxPivotCache Pivot = TXlsxPivotCache.Load(DataStream);

            List.Add(Pivot);
            FCacheIdsOnDisk[Pivot.CacheId] = Pivot;
        }
Пример #5
0
        internal static TXlsxPivotCache Load(TOpenXmlReader DataStream)
        {
            TXlsxPivotCache Result = new TXlsxPivotCache();

            Result.FCacheId = DataStream.GetAttributeAsLong("cacheId", -1);
            Result.ReadPivotCache(DataStream, DataStream.GetRelationship("id"));
            DataStream.FinishTagAndIgnoreChildren();
            return(Result);
        }
Пример #6
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;
                }
            }
        }
Пример #7
0
        internal static TXlsxPivotTableRecord Load(TOpenXmlReader DataStream)
        {
            TXlsxPivotLocationRecord Result = new TXlsxPivotLocationRecord();

            Result.Refe           = DataStream.GetAttributeAsRange("ref", true);
            Result.firstHeaderRow = DataStream.GetAttributeAsInt("firstHeaderRow", 0);
            Result.firstDataRow   = DataStream.GetAttributeAsInt("firstDataRow", 0);
            Result.firstDataCol   = DataStream.GetAttributeAsInt("firstDataCol", 0);
            Result.rowPageCount   = DataStream.GetAttributeAsInt("rowPageCount", 0);
            Result.colPageCount   = DataStream.GetAttributeAsInt("colPageCount", 0);
            DataStream.FinishTag();
            return(Result);
        }
Пример #8
0
        internal static TRangeSet LoadFromXlsx(TOpenXmlReader DataStream)
        {
            TRangeSet Result = new TRangeSet();

            for (int i = 0; i < Result.ix.Length; i++)
            {
                Result.ix[i] = DataStream.GetAttributeAsInt("i" + (i + 1).ToString(CultureInfo.InvariantCulture), -1);
            }
            Result.Source = new TWorksheetSource();
            Result.Source.LoadAttsFromXlsx(DataStream);
            DataStream.FinishTag();
            return(Result);
        }
Пример #9
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;
                }
            }
        }
Пример #10
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;
                }
            }
        }
Пример #11
0
        protected void LoadAtts(TOpenXmlReader DataStream, bool AddInvalid)
        {
            List <TXlsxAttribute> TmpAtt = new List <TXlsxAttribute>();

            if (AddInvalid)
            {
                TmpAtt.Add(new TXlsxAttribute("", "invalid", "true"));             //as we won't save id, this is the first one.
            }
            TXlsxAttribute[] Atts = DataStream.GetAttributes();
            foreach (TXlsxAttribute att in Atts)
            {
                if (att.Name != "id" && att.Name != "invalid" && att.Name != "refreshOnLoad" && att.Name != "upgradeOnRefresh")
                {
                    TmpAtt.Add(att);
                }
            }

            Attributes = TmpAtt.ToArray();
        }
Пример #12
0
        internal void ReadPivotCache(TOpenXmlReader DataStream, string relId)
        {
            DataStream.SelectFromCurrentPartAndPush(relId, TOpenXmlManager.MainNamespace, false);

            while (DataStream.NextTag())
            {
                switch (DataStream.RecordName())
                {
                case "pivotCacheDefinition":
                    ReadPivotCacheDefinition(DataStream);
                    break;

                default:     //shouldn't happen
                    DataStream.GetXml();
                    break;
                }
            }

            DataStream.PopPart();
        }
Пример #13
0
 public TXlsxShapeReader(TOpenXmlReader aDataStream)
 {
     DataStream = aDataStream;
 }
Пример #14
0
 internal TXlsxChartReader(TOpenXmlReader aDataStream, ExcelFile axls)
 {
     DataStream = aDataStream;
     xls        = axls;
 }
Пример #15
0
 private void ReadLocation(TOpenXmlReader DataStream)
 {
     FRecords.Add(TXlsxPivotLocationRecord.Load(DataStream));
 }
Пример #16
0
 internal void LoadAttsFromXlsx(TOpenXmlReader DataStream)
 {
     Refe  = DataStream.GetAttributeAsRange("ref", true);
     Name  = DataStream.GetAttribute("name");
     Sheet = DataStream.GetAttribute("sheet");
 }
Пример #17
0
 internal void LoadXlsx(TOpenXmlReader DataStream)
 {
     LoadAttsFromXlsx(DataStream);
     DataStream.FinishTag();
 }
Пример #18
0
 private void ReadWorksheetSource(TOpenXmlReader DataStream, TCacheSourceRecord R)
 {
     R.WorksheetSource = new TWorksheetSource();
     R.WorksheetSource.LoadXlsx(DataStream);
 }
Пример #19
0
 private void ReadConsolidation(TOpenXmlReader DataStream, TCacheSourceRecord R)
 {
     R.Consolidation = new TConsolidation();
     R.Consolidation.LoadXlsx(DataStream);
 }