Ejemplo n.º 1
0
 public static CT_Rst Parse(XmlNode xmlNode, XmlNamespaceManager namespaceManager)
 {
     CT_Rst rst = new CT_Rst();
     rst.r = new List<CT_RElt>();
     var rNodes = xmlNode.SelectNodes("d:r", namespaceManager);
     foreach (XmlNode rNode in rNodes)
     {
         CT_RElt relt = rst.AddNewR();
         var rPrNode = rNode.SelectSingleNode("d:rPr", namespaceManager);
         if (rPrNode != null)
         {
             CT_RPrElt rprelt = relt.AddNewRPr();
             foreach (XmlNode childNode in rPrNode.ChildNodes)
             {
                 switch (childNode.Name)
                 { 
                     case "b":
                         CT_BooleanProperty bprop= rprelt.AddNewB();
                         bprop.val = true;
                         break;
                     case "i":
                         CT_BooleanProperty iprop = rprelt.AddNewI();
                         iprop.val = true;
                         break;
                     case "u":
                         CT_UnderlineProperty uProp = rprelt.AddNewU();
                         uProp.val = (ST_UnderlineValues)Enum.Parse(typeof(ST_UnderlineValues), childNode.Attributes["val"].Value);
                         break;
                     case "color":
                         CT_Color color = rprelt.AddNewColor();
                         if(childNode.Attributes["theme"]!=null)
                             color.theme = uint.Parse(childNode.Attributes["theme"].Value);
                         if(childNode.Attributes["auto"]!=null)
                             color.auto = childNode.Attributes["auto"].Value=="1"?true:false;
                         if(childNode.Attributes["indexed"]!=null)
                             color.indexed = uint.Parse(childNode.Attributes["indexed"].Value);
                         if(childNode.Attributes["tint"]!=null)
                             color.tint = Double.Parse(childNode.Attributes["tint"].Value);
                         break;
                     case "rFont":
                         CT_FontName fontname = rprelt.AddNewRFont();
                         fontname.val = childNode.Attributes["val"].Value;
                         break;
                     case "family":
                         CT_IntProperty familyProp = rprelt.AddNewFamily();
                         familyProp.val = Int32.Parse(childNode.Attributes["val"].Value);
                         break;
                     case "charset":
                         CT_IntProperty charsetProp = rprelt.AddNewCharset();
                         charsetProp.val = Int32.Parse(childNode.Attributes["val"].Value);
                         break;
                     case "scheme":
                         CT_FontScheme schemeProp = rprelt.AddNewScheme();
                         schemeProp.val = (ST_FontScheme)Enum.Parse(typeof(ST_FontScheme), childNode.Attributes["val"].Value);
                         break;
                     case "sz":
                         CT_FontSize szProp = rprelt.AddNewSz();
                         szProp.val = Int32.Parse(childNode.Attributes["val"].Value);
                         break;
                     case "vertAlign":
                         CT_VerticalAlignFontProperty vertAlignProp = rprelt.AddNewVertAlign();
                         vertAlignProp.val = (ST_VerticalAlignRun)Enum.Parse(typeof(ST_VerticalAlignRun), childNode.Attributes["val"].Value);
                         break;
                 }
             }
         }
         var tNode = rNode.SelectSingleNode("d:t", namespaceManager);
         relt.t = tNode.InnerText.Replace("\r","");
     }
     return rst;
 }
Ejemplo n.º 2
0
        public void TestCreateNew()
        {
            SharedStringsTable sst = new SharedStringsTable();

            CT_Rst st;
            int idx;

            // Check defaults
            Assert.IsNotNull(sst.Items);
            Assert.AreEqual(0, sst.Items.Count);
            Assert.AreEqual(0, sst.Count);
            Assert.AreEqual(0, sst.UniqueCount);

            st = new CT_Rst();
            st.t = ("Hello, World!");

            idx = sst.AddEntry(st);
            Assert.AreEqual(0, idx);
            Assert.AreEqual(1, sst.Count);
            Assert.AreEqual(1, sst.UniqueCount);

            //add the same entry again
            idx = sst.AddEntry(st);
            Assert.AreEqual(0, idx);
            Assert.AreEqual(2, sst.Count);
            Assert.AreEqual(1, sst.UniqueCount);

            //and again
            idx = sst.AddEntry(st);
            Assert.AreEqual(0, idx);
            Assert.AreEqual(3, sst.Count);
            Assert.AreEqual(1, sst.UniqueCount);

            st = new CT_Rst();
            st.t = ("Second string");

            idx = sst.AddEntry(st);
            Assert.AreEqual(1, idx);
            Assert.AreEqual(4, sst.Count);
            Assert.AreEqual(2, sst.UniqueCount);

            //add the same entry again
            idx = sst.AddEntry(st);
            Assert.AreEqual(1, idx);
            Assert.AreEqual(5, sst.Count);
            Assert.AreEqual(2, sst.UniqueCount);

            st = new CT_Rst();
            CT_RElt r = st.AddNewR();
            CT_RPrElt pr = r.AddNewRPr();
            pr.AddNewColor().SetRgb(new byte[] { (byte)0xFF, 0, 0 }); //red
            pr.AddNewI().val = (true);  //bold
            pr.AddNewB().val = (true);  //italic
            r.t = ("Second string");

            idx = sst.AddEntry(st);
            Assert.AreEqual(2, idx);
            Assert.AreEqual(6, sst.Count);
            Assert.AreEqual(3, sst.UniqueCount);

            idx = sst.AddEntry(st);
            Assert.AreEqual(2, idx);
            Assert.AreEqual(7, sst.Count);
            Assert.AreEqual(3, sst.UniqueCount);

            //OK. the sst table is Filled, check the contents
            Assert.AreEqual(3, sst.Items.Count);
            Assert.AreEqual("Hello, World!", new XSSFRichTextString(sst.GetEntryAt(0)).ToString());
            Assert.AreEqual("Second string", new XSSFRichTextString(sst.GetEntryAt(1)).ToString());
            Assert.AreEqual("Second string", new XSSFRichTextString(sst.GetEntryAt(2)).ToString());
        }
Ejemplo n.º 3
0
 CT_Rst buildCTRst(String text, SortedDictionary<int, CT_RPrElt> formats)
 {
     if (text.Length != GetLastKey(formats.Keys))
     {
         throw new ArgumentException("Text length was " + text.Length +
                 " but the last format index was " + GetLastKey(formats.Keys));
     }
     CT_Rst st = new CT_Rst();
     int runStartIdx = 0;
     for (SortedDictionary<int, CT_RPrElt>.KeyCollection.Enumerator it = formats.Keys.GetEnumerator(); it.MoveNext(); )
     {
         int runEndIdx = it.Current;
         CT_RElt run = st.AddNewR();
         String fragment = text.Substring(runStartIdx, runEndIdx - runStartIdx);
         run.t = (fragment);
         PreserveSpaces(run.t);
         CT_RPrElt fmt = formats[runEndIdx];
         if (fmt != null)
             run.rPr = (fmt);
         runStartIdx = runEndIdx;
     }
     return st;
 }