/** * 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); }
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); } } }
/** * 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); }
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); }
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); } } }
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); }
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); } } }
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); }