Example #1
0
        /**
         * Initialize a new Speadsheet VML Drawing
         */
        private void newDrawing()
        {
            CT_ShapeLayout layout = new CT_ShapeLayout();

            layout.ext = (ST_Ext.edit);
            CT_IdMap idmap = layout.AddNewIdmap();

            idmap.ext  = (ST_Ext.edit);
            idmap.data = ("1");
            _items.Add(layout);

            CT_Shapetype shapetype = new CT_Shapetype();

            _shapeTypeId        = COMMENT_SHAPE_TYPE_ID;
            shapetype.id        = _shapeTypeId;// "_x0000_t" + _shapeTypeId;
            shapetype.coordsize = "21600,21600";
            shapetype.spt       = 202;
            //_shapeTypeId = 202;
            shapetype.path2 = ("m,l,21600r21600,l21600,xe");
            shapetype.AddNewStroke().joinstyle = (ST_StrokeJoinStyle.miter);
            CT_Path path = shapetype.AddNewPath();

            path.gradientshapeok = NPOI.OpenXmlFormats.Vml.ST_TrueFalse.t;
            path.connecttype     = (ST_ConnectType.rect);
            _items.Add(shapetype);
        }
Example #2
0
        internal void Read(Stream is1)
        {
            StreamReader sr   = new StreamReader(is1);
            string       data = sr.ReadToEnd().Replace("<br>", "");
            XDocument    doc  = XDocument.Load(new StringReader(data));

            //InflaterInputStream iis = (InflaterInputStream)is1;

            //Stream vmlsm = new EvilUnclosedBRFixingInputStream(is1); --TODO:: add later

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable());

            nsmgr.AddNamespace("o", "urn:schemas-microsoft-com:office:office");
            nsmgr.AddNamespace("x", "urn:schemas-microsoft-com:office:excel");
            nsmgr.AddNamespace("v", "urn:schemas-microsoft-com:vml");
            _items = new ArrayList();
            var nodes = doc.XPathSelectElements("/xml/*", nsmgr);

            foreach (XElement nd in nodes)
            {
                string xmltext = nd.OuterXml();
                if (nd.Name.LocalName == QNAME_SHAPE_LAYOUT.Name)
                {
                    CT_ShapeLayout sl = CT_ShapeLayout.Parse(nd, nsmgr);
                    _items.Add(sl);
                }
                else if (nd.Name.LocalName == QNAME_SHAPE_TYPE.Name)
                {
                    CT_Shapetype st     = CT_Shapetype.Parse(nd, nsmgr);
                    String       typeid = st.id;
                    if (typeid != null)
                    {
                        MatchCollection m = ptrn_shapeTypeId.Matches(typeid);
                        if (m.Count > 0)
                        {
                            _shapeTypeId = Math.Max(_shapeTypeId, int.Parse(m[0].Groups[1].Value));
                        }
                    }
                    _items.Add(st);
                }
                else if (nd.Name.LocalName == QNAME_SHAPE.Name)
                {
                    CT_Shape shape = CT_Shape.Parse(nd, nsmgr);
                    String   id    = shape.id;
                    if (id != null)
                    {
                        MatchCollection m = ptrn_shapeId.Matches(id);
                        if (m.Count > 0)
                        {
                            _shapeId = Math.Max(_shapeId, int.Parse(m[0].Groups[1].Value));
                        }
                    }
                    _items.Add(shape);
                }
                else
                {
                    _items.Add(nd);
                }
            }
        }
Example #3
0
        /**
         * Initialize a new Speadsheet VML Drawing
         */
        private void newDrawing()
        {
            CT_ShapeLayout layout = new CT_ShapeLayout();

            layout.ext = (ST_Ext.edit);
            CT_IdMap idmap = layout.AddNewIdmap();

            idmap.ext  = (ST_Ext.edit);
            idmap.data = ("1");
            _items.Add(layout);

            CT_Shapetype shapetype = new CT_Shapetype();

            _shapeTypeId        = "_xssf_cell_comment";
            shapetype.id        = _shapeTypeId;
            shapetype.coordsize = "21600,21600";
            shapetype.spt       = 202;
            shapetype.path2     = ("m,l,21600r21600,l21600,xe");
            shapetype.AddNewStroke().joinstyle = (ST_StrokeJoinStyle.miter);
            CT_Path path = shapetype.AddNewPath();

            path.gradientshapeok = ST_TrueFalse.t;
            path.connecttype     = (ST_ConnectType.rect);
            _items.Add(shapetype);
        }
Example #4
0
        public void TestNew()
        {
            XSSFVMLDrawing vml = new XSSFVMLDrawing();
            ArrayList items = vml.GetItems();
            Assert.AreEqual(2, items.Count);
            Assert.IsTrue(items[0] is CT_ShapeLayout);
            CT_ShapeLayout layout = (CT_ShapeLayout)items[0];
            Assert.AreEqual(ST_Ext.edit, layout.ext);
            Assert.AreEqual(ST_Ext.edit, layout.idmap.ext);
            Assert.AreEqual("1", layout.idmap.data);

            Assert.IsTrue(items[1] is CT_Shapetype);
            CT_Shapetype type = (CT_Shapetype)items[1];
            Assert.AreEqual("21600,21600", type.coordsize);
            Assert.AreEqual(202.0f, type.spt);
            Assert.AreEqual("m,l,21600r21600,l21600,xe", type.path2);
            Assert.AreEqual("_xssf_cell_comment", type.id);
            Assert.AreEqual(ST_TrueFalse.t, type.path.gradientshapeok);
            Assert.AreEqual(ST_ConnectType.rect, type.path.connecttype);

            CT_Shape shape = vml.newCommentShape();
            Assert.AreEqual(3, items.Count);
            Assert.AreSame(items[2], shape);
            Assert.AreEqual("#_xssf_cell_comment", shape.type);
            Assert.AreEqual("position:absolute; visibility:hidden", shape.style);
            Assert.AreEqual("#ffffe1", shape.fillcolor);
            Assert.AreEqual(ST_InsetMode.auto, shape.insetmode);
            Assert.AreEqual("#ffffe1", shape.fill.color);
            CT_Shadow shadow = shape.shadow;
            Assert.AreEqual(ST_TrueFalse.t, shadow.on);
            Assert.AreEqual("black", shadow.color);
            Assert.AreEqual(ST_TrueFalse.t, shadow.obscured);
            Assert.AreEqual(ST_ConnectType.none, shape.path.connecttype);
            Assert.AreEqual("mso-direction-alt:auto", shape.textbox.style);
            CT_ClientData cldata = shape.GetClientDataArray(0);
            Assert.AreEqual(ST_ObjectType.Note, cldata.ObjectType);
            Assert.AreEqual(1, cldata.SizeOfMoveWithCellsArray());
            Assert.AreEqual(1, cldata.SizeOfSizeWithCellsArray());
            Assert.AreEqual("1, 15, 0, 2, 3, 15, 3, 16", cldata.anchor);
            Assert.AreEqual(ST_TrueFalseBlank.@false, cldata.autoFill);
            Assert.AreEqual(0, cldata.GetRowArray(0));
            Assert.AreEqual(0, cldata.GetColumnArray(0));

            //serialize and read again
            MemoryStream out1 = new MemoryStream();
            vml.Write(out1);

            XSSFVMLDrawing vml2 = new XSSFVMLDrawing();
            vml2.Read(new MemoryStream(out1.ToArray()));
            ArrayList items2 = vml2.GetItems();
            Assert.AreEqual(3, items2.Count);
            Assert.IsTrue(items2[0] is CT_ShapeLayout);
            Assert.IsTrue(items2[1] is CT_Shapetype);
            Assert.IsTrue(items2[2] is CT_Shape);
        }
Example #5
0
        internal void Read(Stream is1)
        {
            XmlDocument xmlDocument = new XmlDocument();
            string      end         = new StreamReader(is1).ReadToEnd();

            xmlDocument.LoadXml(end.Replace("<br>", ""));
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDocument.NameTable);

            nsmgr.AddNamespace("o", "urn:schemas-microsoft-com:office:office");
            nsmgr.AddNamespace("x", "urn:schemas-microsoft-com:office:excel");
            nsmgr.AddNamespace("v", "urn:schemas-microsoft-com:vml");
            this._items = new ArrayList();
            foreach (XmlNode selectNode in xmlDocument.SelectNodes("/xml/*", nsmgr))
            {
                string outerXml = selectNode.OuterXml;
                if (selectNode.LocalName == XSSFVMLDrawing.QNAME_SHAPE_LAYOUT.Name)
                {
                    this._items.Add((object)CT_ShapeLayout.Parse(outerXml));
                }
                else if (selectNode.LocalName == XSSFVMLDrawing.QNAME_SHAPE_TYPE.Name)
                {
                    CT_Shapetype ctShapetype = CT_Shapetype.Parse(outerXml);
                    this._shapeTypeId = ctShapetype.id;
                    this._items.Add((object)ctShapetype);
                }
                else if (selectNode.LocalName == XSSFVMLDrawing.QNAME_SHAPE.Name)
                {
                    CT_Shape ctShape = CT_Shape.Parse(outerXml);
                    string   id      = ctShape.id;
                    if (id != null)
                    {
                        MatchCollection matchCollection = XSSFVMLDrawing.ptrn_shapeId.Matches(id);
                        if (matchCollection.Count > 0)
                        {
                            this._shapeId = Math.Max(this._shapeId, int.Parse(matchCollection[0].Groups[1].Value));
                        }
                    }
                    this._items.Add((object)ctShape);
                }
                else
                {
                    this._items.Add((object)selectNode);
                }
            }
        }
Example #6
0
        private void newDrawing()
        {
            CT_ShapeLayout ctShapeLayout = new CT_ShapeLayout();

            ctShapeLayout.ext = ST_Ext.edit;
            CT_IdMap ctIdMap = ctShapeLayout.AddNewIdmap();

            ctIdMap.ext  = ST_Ext.edit;
            ctIdMap.data = "1";
            this._items.Add((object)ctShapeLayout);
            CT_Shapetype ctShapetype = new CT_Shapetype();

            this._shapeTypeId     = "_xssf_cell_comment";
            ctShapetype.id        = this._shapeTypeId;
            ctShapetype.coordsize = "21600,21600";
            ctShapetype.spt       = 202f;
            ctShapetype.path2     = "m,l,21600r21600,l21600,xe";
            ctShapetype.AddNewStroke().joinstyle = ST_StrokeJoinStyle.miter;
            CT_Path ctPath = ctShapetype.AddNewPath();

            ctPath.gradientshapeok = ST_TrueFalse.t;
            ctPath.connecttype     = ST_ConnectType.rect;
            this._items.Add((object)ctShapetype);
        }
Example #7
0
        internal void Read(Stream is1)
        {
            XmlDocument doc = new XmlDocument();

            //InflaterInputStream iis = (InflaterInputStream)is1;
            StreamReader sr   = new StreamReader(is1);
            string       data = sr.ReadToEnd();

            //Stream vmlsm = new EvilUnclosedBRFixingInputStream(is1); --TODO:: add later

            doc.LoadXml(
                data.Replace("<br>", "")
                );

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);

            nsmgr.AddNamespace("o", "urn:schemas-microsoft-com:office:office");
            nsmgr.AddNamespace("x", "urn:schemas-microsoft-com:office:excel");
            nsmgr.AddNamespace("v", "urn:schemas-microsoft-com:vml");
            _items = new ArrayList();
            XmlNodeList nodes = doc.SelectNodes("/xml/*", nsmgr);

            foreach (XmlNode nd in nodes)
            {
                string xmltext = nd.OuterXml;
                if (nd.LocalName == QNAME_SHAPE_LAYOUT.Name)
                {
                    CT_ShapeLayout sl = CT_ShapeLayout.Parse(nd, nsmgr);
                    _items.Add(sl);
                }
                else if (nd.LocalName == QNAME_SHAPE_TYPE.Name)
                {
                    CT_Shapetype st = CT_Shapetype.Parse(nd, nsmgr);
                    _items.Add(st);
                    _shapeTypeId = st.id;
                }
                else if (nd.LocalName == QNAME_SHAPE.Name)
                {
                    CT_Shape shape = CT_Shape.Parse(nd, nsmgr);
                    String   id    = shape.id;
                    if (id != null)
                    {
                        MatchCollection m = ptrn_shapeId.Matches(id);
                        if (m.Count > 0)
                        {
                            _shapeId = Math.Max(_shapeId, int.Parse(m[0].Groups[1].Value));
                        }
                    }
                    _items.Add(shape);
                }
                else
                {
                    /// How to port following java code??
                    //Document doc2;
                    //try
                    //{
                    //    InputSource is2 = new InputSource(new StringReader(obj.xmlText()));
                    //    doc2 = DocumentHelper.readDocument(is2);
                    //}
                    //catch (SAXException e)
                    //{
                    //    throw new XmlException(e.getMessage(), e);
                    //}

                    _items.Add(nd);
                }
            }
        }
Example #8
0
        public void TestNew()
        {
            XSSFVMLDrawing vml   = new XSSFVMLDrawing();
            ArrayList      items = vml.GetItems();

            Assert.AreEqual(2, items.Count);
            Assert.IsTrue(items[0] is CT_ShapeLayout);
            CT_ShapeLayout layout = (CT_ShapeLayout)items[0];

            Assert.AreEqual(ST_Ext.edit, layout.ext);
            Assert.AreEqual(ST_Ext.edit, layout.idmap.ext);
            Assert.AreEqual("1", layout.idmap.data);

            Assert.IsTrue(items[1] is CT_Shapetype);
            CT_Shapetype type = (CT_Shapetype)items[1];

            Assert.AreEqual("21600,21600", type.coordsize);
            Assert.AreEqual(202.0f, type.spt);
            Assert.AreEqual("m,l,21600r21600,l21600,xe", type.path2);
            Assert.AreEqual("_x0000_t202", type.id);
            Assert.AreEqual(NPOI.OpenXmlFormats.Vml.ST_TrueFalse.t, type.path.gradientshapeok);
            Assert.AreEqual(ST_ConnectType.rect, type.path.connecttype);

            CT_Shape shape = vml.newCommentShape();

            Assert.AreEqual(3, items.Count);
            Assert.AreSame(items[2], shape);
            Assert.AreEqual("#_x0000_t202", shape.type);
            Assert.AreEqual("position:absolute; visibility:hidden", shape.style);
            Assert.AreEqual("#ffffe1", shape.fillcolor);
            Assert.AreEqual(ST_InsetMode.auto, shape.insetmode);
            Assert.AreEqual("#ffffe1", shape.fill.color);
            CT_Shadow shadow = shape.shadow;

            Assert.AreEqual(NPOI.OpenXmlFormats.Vml.ST_TrueFalse.t, shadow.on);
            Assert.AreEqual("black", shadow.color);
            Assert.AreEqual(NPOI.OpenXmlFormats.Vml.ST_TrueFalse.t, shadow.obscured);
            Assert.AreEqual(ST_ConnectType.none, shape.path.connecttype);
            Assert.AreEqual("mso-direction-alt:auto", shape.textbox.style);
            CT_ClientData cldata = shape.GetClientDataArray(0);

            Assert.AreEqual(ST_ObjectType.Note, cldata.ObjectType);
            Assert.AreEqual(1, cldata.SizeOfMoveWithCellsArray());
            Assert.AreEqual(1, cldata.SizeOfSizeWithCellsArray());
            Assert.AreEqual("1, 15, 0, 2, 3, 15, 3, 16", cldata.anchor);
            Assert.AreEqual(ST_TrueFalseBlank.@false, cldata.autoFill);
            Assert.AreEqual(0, cldata.GetRowArray(0));
            Assert.AreEqual(0, cldata.GetColumnArray(0));

            //each of the properties of CT_ClientData should occurs 0 or 1 times, and CT_ClientData has multiple properties.
            //Assert.AreEqual("[]", cldata.GetVisibleList().ToString());
            Assert.AreEqual(ST_TrueFalseBlank.NONE, cldata.visible);
            cldata.visible = (ST_TrueFalseBlank)Enum.Parse(typeof(ST_TrueFalseBlank), "true");
            Assert.AreEqual(ST_TrueFalseBlank.@true, cldata.visible);
            //serialize and read again
            MemoryStream out1 = new MemoryStream();

            vml.Write(out1);

            XSSFVMLDrawing vml2 = new XSSFVMLDrawing();

            vml2.Read(new MemoryStream(out1.ToArray()));
            ArrayList items2 = vml2.GetItems();

            Assert.AreEqual(3, items2.Count);
            Assert.IsTrue(items2[0] is CT_ShapeLayout);
            Assert.IsTrue(items2[1] is CT_Shapetype);
            Assert.IsTrue(items2[2] is CT_Shape);
        }