Esempio n. 1
0
        private static ChangeableDictionary <int> Setup()
        {
            var d = new ChangeableDictionary <int>();

            d.Add(2, 20);
            d.Add(8, 80);
            d.Add(5, 50);
            d.Add(0, 0);
            d.Add(3, 30);
            d.Add(6, 60);
            d.Add(4, 40);
            d.Add(7, 70);
            d.Add(9, 90);
            return(d);
        }
Esempio n. 2
0
        public void Insert()
        {
            ChangeableDictionary <int> d = Setup();

            d.InsertAndShift(5, 1);
            d.Add(5, 500);
            Assert.AreEqual(500, d[5]);
            Assert.AreEqual(50, d[6]);
            Assert.AreEqual(80, d[9]);
            Assert.AreEqual(90, d[10]);
        }
Esempio n. 3
0
        internal void ReindexWorksheetDictionary()
        {
            var index      = 0;
            var worksheets = new ChangeableDictionary <ExcelWorksheet>();

            foreach (var entry in _worksheets)
            {
                entry.PositionId = index + _pck._worksheetAdd;
                worksheets.Add(index++, entry);
            }
            _worksheets = worksheets;
        }
Esempio n. 4
0
        internal ExcelWorksheets(ExcelPackage pck, XmlNamespaceManager nsm, XmlNode topNode) :
            base(nsm, topNode)
        {
            _pck = pck;
            _namespaceManager = nsm;
            int ix = 0;

            _worksheets = new ChangeableDictionary <ExcelWorksheet>();

            foreach (XmlNode sheetNode in topNode.ChildNodes)
            {
                if (sheetNode.NodeType == XmlNodeType.Element)
                {
                    string name = sheetNode.Attributes["name"].Value;
                    //Get the relationship id
                    string relId   = sheetNode.Attributes.GetNamedItem("id", ExcelPackage.schemaRelationships).Value;
                    int    sheetID = Convert.ToInt32(sheetNode.Attributes["sheetId"].Value);

                    if (!String.IsNullOrEmpty(relId))
                    {
                        var sheetRelation = pck.Workbook.Part.GetRelationship(relId);
                        Uri uriWorksheet  = UriHelper.ResolvePartUri(pck.Workbook.WorkbookUri, sheetRelation.TargetUri);

                        //add the worksheet
                        int positionID = ix + _pck._worksheetAdd;
                        if (sheetRelation.RelationshipType.EndsWith("chartsheet"))
                        {
                            _worksheets.Add(ix, new ExcelChartsheet(_namespaceManager, _pck, relId, uriWorksheet, name, sheetID, positionID, null));
                        }
                        else
                        {
                            _worksheets.Add(ix, new ExcelWorksheet(_namespaceManager, _pck, relId, uriWorksheet, name, sheetID, positionID, null));
                        }
                        ix++;
                    }
                }
            }
        }
Esempio n. 5
0
        private ExcelWorksheet AddSheet(string Name, bool isChart, eChartType?chartType, ExcelPivotTable pivotTableSource = null)
        {
            lock (_worksheets)
            {
                Name = ValidateFixSheetName(Name);
                if (GetByName(Name) != null)
                {
                    throw (new InvalidOperationException(ERR_DUP_WORKSHEET + " : " + Name));
                }
                GetSheetURI(ref Name, out int sheetID, out Uri uriWorksheet, isChart);
                Packaging.ZipPackagePart worksheetPart = _pck.ZipPackage.CreatePart(uriWorksheet, isChart ? CHARTSHEET_CONTENTTYPE : WORKSHEET_CONTENTTYPE, _pck.Compression);

                //Create the new, empty worksheet and save it to the package
                StreamWriter streamWorksheet = new StreamWriter(worksheetPart.GetStream(FileMode.Create, FileAccess.Write));
                XmlDocument  worksheetXml    = CreateNewWorksheet(isChart);
                worksheetXml.Save(streamWorksheet);
                _pck.ZipPackage.Flush();

                string rel = CreateWorkbookRel(Name, sheetID, uriWorksheet, isChart);

                int            positionID = _worksheets.Count + _pck._worksheetAdd;
                ExcelWorksheet worksheet;
                if (isChart)
                {
                    worksheet = new ExcelChartsheet(_namespaceManager, _pck, rel, uriWorksheet, Name, sheetID, positionID, eWorkSheetHidden.Visible, (eChartType)chartType, pivotTableSource);
                }
                else
                {
                    worksheet = new ExcelWorksheet(_namespaceManager, _pck, rel, uriWorksheet, Name, sheetID, positionID, eWorkSheetHidden.Visible);
                }

                _worksheets.Add(_worksheets.Count, worksheet);
                if (_pck.Workbook.VbaProject != null)
                {
                    var name = _pck.Workbook.VbaProject.GetModuleNameFromWorksheet(worksheet);
                    _pck.Workbook.VbaProject.Modules.Add(new ExcelVBAModule(worksheet.CodeNameChange)
                    {
                        Name = name, Code = "", Attributes = _pck.Workbook.VbaProject.GetDocumentAttributes(Name, "0{00020820-0000-0000-C000-000000000046}"), Type = eModuleType.Document, HelpContext = 0
                    });
                    worksheet.CodeModuleName = name;
                }

                return(worksheet);
            }
        }
Esempio n. 6
0
        private void UpdateFrom_ <T>(Network.IXenConnection connection, ChangeableDictionary <XenRef <T>, T> target, ObjectChange source) where T : XenObject <T>, new()
        {
            XenRef <T> xenref = source.xenref as XenRef <T>;

            if (xenref == null)
            {
                xenref = new XenRef <T>((string)source.xenref);
            }

            if (source.value != null)
            {
                T to_update = null;
                lock (target)
                {
                    if (!target.TryGetValue(xenref, out to_update))
                    {
                        // add
                        T obj = new T();
                        obj.Connection = connection;
                        obj.UpdateFrom((T)source.value);
                        obj.opaque_ref = xenref.opaque_ref;
                        target.Add(xenref, obj);
                    }
                }

                // Update the object that we found above.  Note that this needs to be done out of the
                // scope of the lock(target), as UpdateFrom is going to fire events.
                if (to_update != null)
                {
                    to_update.UpdateFrom((T)source.value);
                }
            }
            else
            {
                // delete the source object from our model
                lock (target)
                {
                    target.Remove(xenref);
                }
            }
        }