コード例 #1
0
ファイル: DisplayValue.cs プロジェクト: ikvm/test
        public override object calculate()
        {
            if (base.paramList.Count != 1)
            {
                throw new ReportError("取单元格显示值函数的参数个数应该为1");
            }
            ExpParse parse = (ExpParse)base.paramList[0];

            if (parse == null)
            {
                throw new ReportError("取单元格显示值函数的第1个参数应该是单元格");
            }
            object obj2 = parse.calculate();

            if (obj2 == null)
            {
                return(new StringBuilder("").ToString());
            }
            if (!(obj2 is CSVar))
            {
                throw new ReportError("取单元格显示值函数的第1个参数应该是单元格");
            }
            CellExt ext = ((CSVar)obj2).getCell();

            if (ext == null)
            {
                return(null);
            }
            return(ext.GetValue(true));
        }
コード例 #2
0
ファイル: ICalcFlash.cs プロジェクト: ikvm/test
        private ArrayList getListValue(object obj, CellExt leftHead, CellExt topHead, bool dispValue)
        {
            ArrayList o = null;

            if (obj is ArrayList)
            {
                o = (ArrayList)obj;
            }
            else if (obj is CSVar)
            {
                CSVar   var    = (CSVar)obj;
                CellExt source = var.Source;
                CellExt ext2   = var.LeftHead;
                CellExt ext3   = var.TopHead;
                CellExt ext4   = ext2.Source;
                CellExt ext5   = ext3.Source;
                if (((leftHead == null) || !ext4.isLeftHeadOf(leftHead.Source)) || !leftHead.Source.isLeftHeadOf(source))
                {
                    leftHead = ext2;
                }
                if (((topHead == null) || !ext5.isTopHeadOf(topHead.Source)) || !topHead.Source.isTopHeadOf(source))
                {
                    topHead = ext3;
                }
                o = var.getCells(leftHead, topHead, null);
            }
            else
            {
                o = new ArrayList(1);
                o.Add(obj);
            }
            return((ArrayList)ConvertTool.getValue(o, dispValue));
        }
コード例 #3
0
ファイル: ICalcFlash.cs プロジェクト: ikvm/test
        public object calculate(CellExt1 cs, DataSet ds, Env env, string param)
        {
            UnitSet set;

            this.cs  = cs;
            this.ds  = ds;
            this.env = env;
            string str = (string)ConvertTool.getValue(new ExpParse(cs, ds, env, param).calculate());

            if ((str != null) && (str.Trim().Length > 0))
            {
                set = new UnitSet(Escape.removeEscAndQuote(str), true, '&');
            }
            else
            {
                set = new UnitSet("", true, '&');
            }
            string expStr = Escape.unescape(set["dataXml"]);
            object obj2   = ConvertTool.getValue(new ExpParse(cs, ds, env, expStr).calculate());

            this.pDataXml = (string)obj2;
            CellExt       current = cs.Current;
            StringBuilder sb      = new StringBuilder();
            object        obj3    = null;

            try
            {
                obj3 = this.cal(set, sb);
            }
            catch (Exception exception)
            {
                throw new ReportError("统计图计算异常:" + exception.Message.ToString().ToString(), exception);
            }
            return(obj3);
        }
コード例 #4
0
ファイル: ICalcFlash.cs プロジェクト: ikvm/test
        private int getCellHeight()
        {
            CellExt current = this.cs.Current;
            int     num     = 0;

            for (int i = current.Row; i < (current.Row + current.RowMerge); i++)
            {
                num += this.cs.getRowHeight(i);
            }
            return(num);
        }
コード例 #5
0
 private CellExt method_4(CellExt cellExt_0, CellExt cellExt_1, int int_3)
 {
     CellExt[] extCells;
     if (cellExt_0 == null)
     {
         return(null);
     }
     if (cellExt_0.Source == cellExt_1)
     {
         if (this.int_1 == 0)
         {
             return(cellExt_0);
         }
         extCells = cellExt_0.ExtCells;
         if ((extCells != null) && (extCells.Length != 1))
         {
             int position = cellExt_0.Position;
             int index    = position + int_3;
             if ((index >= 0) && (index < extCells.Length))
             {
                 return(extCells[index]);
             }
             if (int_3 <= 0)
             {
                 int_3 = (int_3 + position) + 1;
             }
             else
             {
                 int_3 -= extCells.Length - position;
             }
         }
         else
         {
             this.int_1 += (this.int_1 > 0) ? -1 : 1;
         }
         cellExt_0 = this.method_5(cellExt_0, int_3);
         return(this.method_4(cellExt_0, cellExt_1, int_3));
     }
     cellExt_0 = this.method_3(cellExt_0, cellExt_1);
     if (cellExt_0 == null)
     {
         return(null);
     }
     extCells = cellExt_0.ExtCells;
     if (extCells != null)
     {
         cellExt_0 = (int_3 <= 0) ? extCells[extCells.Length - 1] : extCells[0];
     }
     return(this.method_4(cellExt_0, cellExt_1, this.int_1));
 }
コード例 #6
0
        private CellExt method_3(CellExt cellExt_0, CellExt cellExt_1)
        {
            ArrayList subCells = cellExt_0.SubCells;

            for (int i = 0; i < subCells.Count; i++)
            {
                CellExt ext2 = (CellExt)subCells[i];
                if (ext2.Source.isLeftHeadOf(cellExt_1))
                {
                    return(ext2);
                }
            }
            return(null);
        }
コード例 #7
0
        private object method_0(CellExt cellExt_0, int int_3, int int_4)
        {
            CellExt current = base.cs.Current;

            if ((current.Col == 10) && (current.Row == 18))
            {
                Console.Out.WriteLine("current row: " + current.Row.ToString().ToString());
            }
            CellExt source = cellExt_0.getCommonLeftHead(current.Source);
            CellExt ext2   = current.getLeftHead(source);

            if (ext2 == current)
            {
                ext2 = current.getLeftHead();
            }
            CellExt ext4 = cellExt_0.getCommonTopHead(current.Source);
            CellExt ext3 = current.getTopHead(ext4);

            if (ext3 == current)
            {
                ext3 = current.getTopHead();
            }
            try
            {
                if (int_3 != 0)
                {
                    ext2 = this.method_1(ext2, ext2.Source, int_3);
                    if (ext2 == null)
                    {
                        return(null);
                    }
                }
                if (int_4 != 0)
                {
                    ext3 = this.method_4(ext3, ext3.Source, int_4);
                    if (ext3 == null)
                    {
                        return(null);
                    }
                }
            }
            catch (StackOverflowException exception)
            {
                Console.Out.WriteLine(new StringBuilder("current: ").Append(current.Row).Append(", ").Append(current.Col).ToString().ToString());
                throw exception;
            }
            ext2.testValue();
            ext3.testValue();
            return(new CSVar(cellExt_0, ext2, ext3));
        }
コード例 #8
0
ファイル: ColNo.cs プロジェクト: ikvm/test
        public override object calculate()
        {
            if (base.paramList.Count > 0)
            {
                throw new ReportError("col函数参数列表应该为空");
            }
            CellExt   current  = base.cs.Current;
            ArrayList subCells = current.getTopHead().SubCells;

            for (int i = 0; i < subCells.Count; i++)
            {
                CellExt ext = (CellExt)subCells[i];
                if (ext != current)
                {
                    ext.testValue();
                }
            }
            return(ConvertData.getInteger(base.cs.Current.Col));
        }
コード例 #9
0
ファイル: ICalcFlash.cs プロジェクト: ikvm/test
 public Head(ICalcFlash enclosingInstance, object catValue, object catCell, object seriesValue, object seriesCell)
 {
     this.InitBlock(enclosingInstance);
     this.leftHead = null;
     this.topHead  = null;
     if (catValue is CSVar)
     {
         CellExt ext        = (CellExt)catCell;
         int     extensible = ((CSVar)catValue).getCell().Extensible;
         if (PropertyDefine.CEX_VERTICAL.Equals(extensible))
         {
             this.leftHead = ext;
         }
         else if (PropertyDefine.CEX_HORIZONTAL.Equals(extensible))
         {
             this.topHead = ext;
         }
         else
         {
             this.leftHead = ext.getLeftHead();
             this.topHead  = ext.getTopHead();
         }
     }
     if (seriesValue is CSVar)
     {
         CellExt ext2 = (CellExt)seriesCell;
         int     num2 = ((CSVar)seriesValue).getCell().Extensible;
         if (PropertyDefine.CEX_VERTICAL.Equals(num2))
         {
             this.leftHead = (CellExt)seriesCell;
         }
         else if (PropertyDefine.CEX_HORIZONTAL.Equals(num2))
         {
             this.topHead = (CellExt)seriesCell;
         }
         else
         {
             this.leftHead = ext2.getLeftHead();
             this.topHead  = ext2.getTopHead();
         }
     }
 }
コード例 #10
0
ファイル: Select.cs プロジェクト: ikvm/test
        public override object calculate()
        {
            if (base.unit_0 == null)
            {
                throw new ReportError("单元格选择函数{}缺少左操作数");
            }
            object obj4 = base.unit_0.calculate();

            if (obj4 != null)
            {
                if (!(obj4 is CSVar))
                {
                    throw new ReportError("单元格选择函数{}的左操作数应为单元格");
                }
                ArrayList list = ((CSVar)obj4).getCells(null);
                if (base.paramList.Count > 0)
                {
                    ExpParse parse = (ExpParse)base.paramList[0];
                    base.cs.saveCurrent();
                    if (parse != null)
                    {
                        for (int i = 0; i < list.Count; i++)
                        {
                            CellExt ext = (CellExt)list[i];
                            base.cs.Current = ext;
                            object obj3 = ConvertTool.getValue(parse.calculate());
                            if (!(obj3 is bool))
                            {
                                throw new ReportError("单元格选择函数{}的条件参数应返回布尔值");
                            }
                            if (obj3.Equals(false))
                            {
                                list.RemoveAt(i--);
                            }
                        }
                    }
                    base.cs.resumeCurrent();
                }
                return(list);
            }
            return(new ArrayList(0));
        }
コード例 #11
0
ファイル: ICalcFlash.cs プロジェクト: ikvm/test
        private int getCellWidth()
        {
            CellExt current = this.cs.Current;
            int     num     = 0;

            for (int i = current.Col; i < (current.Col + current.ColMerge); i++)
            {
                object  obj2 = null;
                CellExt ext2 = this.cs.getCell(0, i);
                if (ext2 != null)
                {
                    obj2 = ext2.getPropValue(306);
                }
                if ((obj2 == null) || obj2.Equals(true))
                {
                    num += this.cs.getColWidth(i);
                }
            }
            return(num);
        }
コード例 #12
0
        private CellExt method_5(CellExt cellExt_0, int int_3)
        {
            int num2 = (int_3 > 0) ? 1 : -1;

            cellExt_0 = cellExt_0.getTopHead();
            while (cellExt_0 != null)
            {
                CellExt[] extCells = cellExt_0.ExtCells;
                if (extCells != null)
                {
                    int index = cellExt_0.Position + num2;
                    if ((index >= 0) && (index < extCells.Length))
                    {
                        return(extCells[index]);
                    }
                }
                cellExt_0 = cellExt_0.getTopHead();
            }
            return(null);
        }
コード例 #13
0
        private object method_0(CellExt cellExt_0)
        {
            CellExt current = base.cs.Current;
            CellExt source  = cellExt_0.Source;
            CellExt sub     = current.Source;

            if (!source.isLeftHeadOf(sub))
            {
                if (source.isTopHeadOf(sub))
                {
                    CellExt[] extCells = current.getTopHead(source).ExtCells;
                    if (extCells == null)
                    {
                        return(null);
                    }
                    for (int i = 0; i < extCells.Length; i++)
                    {
                        if (extCells[i].isTopHeadOf(current))
                        {
                            return(ConvertData.getInteger(i + 1));
                        }
                    }
                }
            }
            else
            {
                CellExt[] extArray2 = current.getLeftHead(source).ExtCells;
                if (extArray2 == null)
                {
                    return(null);
                }
                for (int j = 0; j < extArray2.Length; j++)
                {
                    if (extArray2[j].isLeftHeadOf(current))
                    {
                        return(ConvertData.getInteger(j + 1));
                    }
                }
            }
            throw new ReportError(new StringBuilder(source.SourceId.ToString().ToString()).Append("不是").Append(current.SourceId).Append("的主格").ToString().ToString());
        }
コード例 #14
0
ファイル: MaxWidth.cs プロジェクト: ikvm/test
        public override object calculate()
        {
            int col = base.cs.Current.Col;
            int i   = 0;

            for (int j = 1; j < base.cs.RowSize; j++)
            {
                CellExt ext2 = base.cs.getCell(j, col);
                if ((ext2 != null) && !ext2.MergeCell)
                {
                    object obj3 = ext2.GetValue(true);
                    if (obj3 is string)
                    {
                        int num4 = this.method_0((string)obj3);
                        if (num4 > i)
                        {
                            i = num4;
                        }
                    }
                }
            }
            return(ConvertData.getInteger(i));
        }
コード例 #15
0
        public override object calculate()
        {
            if (base.unit_0 == null)
            {
                throw new ReportError("冒号操作缺少左操作数");
            }
            object obj4    = base.unit_0.calculate();
            Region region2 = null;
            Region region  = null;

            if (!(obj4 is CSVar))
            {
                throw new ReportError("冒号操作的左操作数应为单元格");
            }
            region2 = ((CSVar)obj4).Region;
            object obj3 = base.unit_1.calculate();

            if (!(obj3 is CSVar))
            {
                throw new ReportError("冒号操作的右操作数应为单元格");
            }
            region = ((CSVar)obj3).Region;
            ArrayList list = new ArrayList();

            for (int i = region2.Top; i <= region.Bottom; i++)
            {
                for (int j = region2.Left; j <= region.Right; j++)
                {
                    CellExt ext = this.cellExt1_0.getCell(i, j);
                    if (ext != null)
                    {
                        list.Add(ext);
                    }
                }
            }
            return(list);
        }
コード例 #16
0
        public override object calculate()
        {
            if (base.unit_0 == null)
            {
                throw new ReportError("位移函数[]左操作数为空");
            }
            object obj3 = base.unit_0.calculate();

            if (!(obj3 is CSVar))
            {
                throw new ReportError("位移函数[]左操作数应为单元格");
            }
            CSVar   var    = (CSVar)obj3;
            CellExt source = var.Source;

            if (!this.bool_0)
            {
                int     num6     = this.arrayList_0.Count;
                int     num2     = this.arrayList_1.Count;
                CellExt current  = base.cs.Current;
                CellExt leftHead = current.getLeftHead();
                CellExt topHead  = current.getTopHead();
                for (int i = 0; i < num6; i++)
                {
                    GClass1 class3 = (GClass1)this.arrayList_0[i];
                    int     index  = 0;
                    if (class3.source == null)
                    {
                        if (source.ExtCells != null)
                        {
                            class3.source = source;
                        }
                        else
                        {
                            class3.source = source.getLeftHead();
                        }
                    }
                    CellExt ext6 = current.getLeftHead(class3.source);
                    switch (class3.type)
                    {
                    case 0:
                        index = class3.position;
                        break;

                    case 1:
                        if (ext6 == null)
                        {
                            throw new ReportError("位移对象超出范围");
                        }
                        index = ext6.Position + class3.position;
                        break;

                    case 2:
                        if (ext6 == null)
                        {
                            throw new ReportError("位移对象超出范围");
                        }
                        index = ext6.Position;
                        break;
                    }
                    if (class3.source.isLeftHeadOf(leftHead.Source))
                    {
                        leftHead = leftHead.getLeftHead(class3.source);
                    }
                    else
                    {
                        leftHead = leftHead.getSubCell(class3.source);
                    }
                    if (leftHead == null)
                    {
                        return(null);
                    }
                    leftHead.testValue();
                    leftHead = leftHead.getExtCell(index);
                    if (leftHead == null)
                    {
                        return(null);
                    }
                }
                for (int j = 0; j < num2; j++)
                {
                    GClass1 class2   = (GClass1)this.arrayList_1[j];
                    int     position = 0;
                    if (class2.source == null)
                    {
                        if (source.ExtCells == null)
                        {
                            class2.source = source.getTopHead();
                        }
                        else
                        {
                            class2.source = source;
                        }
                    }
                    CellExt ext4 = current.getTopHead(class2.source);
                    switch (class2.type)
                    {
                    case 0:
                        position = class2.position;
                        break;

                    case 1:
                        if (ext4 == null)
                        {
                            throw new ReportError("位移对象超出范围");
                        }
                        position = ext4.Position + class2.position;
                        break;

                    case 2:
                        if (ext4 == null)
                        {
                            throw new ReportError("位移对象超出范围");
                        }
                        position = ext4.Position;
                        break;
                    }
                    if (class2.source.isTopHeadOf(topHead.Source))
                    {
                        topHead = topHead.getTopHead(class2.source);
                    }
                    else
                    {
                        topHead = topHead.getSubCell(class2.source);
                    }
                    if (topHead == null)
                    {
                        return(null);
                    }
                    topHead.testValue();
                    topHead = topHead.getExtCell(position);
                    if (topHead == null)
                    {
                        return(null);
                    }
                }
                return(new CSVar(source, leftHead, topHead));
            }
            return(this.method_0(source, this.int_1, this.int_2));
        }
コード例 #17
0
ファイル: ICalcFlash.cs プロジェクト: ikvm/test
 public Head(ICalcFlash enclosingInstance)
 {
     this.InitBlock(enclosingInstance);
     this.leftHead = null;
     this.topHead  = null;
 }
コード例 #18
0
ファイル: ICalcChart.cs プロジェクト: ikvm/test
        private byte[] cal(UnitSet props, StringBuilder sb)
        {
            ChartParam servletrequest = new ChartParam(this, props);
            CellExt    current        = this.cs.Current;
            Chart      chart          = new Chart();
            string     str            = servletrequest.getParameter("skin");

            if ((str != null) && (str.Length > 0))
            {
                chart.BorderSkin.SkinStyle = (BorderSkinStyle)Enum.Parse(typeof(BorderSkinStyle), str);
            }
            chart.MapEnabled = true;
            chart.RenderType = RenderType.ImageTag;
            chart.ImageUrl   = @".\ChartPic_#SEQ(200,30)";
            chart.ChartAreas.Add("area1");
            if (servletrequest.getParameter("isxgrid") == "0")
            {
                chart.ChartAreas["area1"].AxisX.MajorGrid.Enabled = false;
                chart.ChartAreas["area1"].AxisX.MinorGrid.Enabled = false;
            }
            if (servletrequest.getParameter("isygrid") == "0")
            {
                chart.ChartAreas["area1"].AxisY.MajorGrid.Enabled = false;
                chart.ChartAreas["area1"].AxisY.MinorGrid.Enabled = false;
            }
            if (servletrequest.getParameter("is3d") == "0")
            {
                chart.ChartAreas["area1"].Area3DStyle.Enable3D = false;
            }
            else
            {
                chart.ChartAreas["area1"].Area3DStyle.Enable3D = true;
            }
            this.setColor(chart, servletrequest, "bgcolor");
            this.setColor(chart, servletrequest, "areabgcolor");
            this.setColor(chart, servletrequest, "bordercolor");
            this.setColor(chart, servletrequest, "areabordercolor");
            this.setColor(chart, servletrequest, "bgcolor2");
            this.setColor(chart, servletrequest, "areabgcolor2");
            this.setValue(chart, servletrequest, "title");
            this.calExpand(chart, servletrequest, "xlabel");
            this.setValue(chart, servletrequest, "xtitle");
            this.calExpand(chart, servletrequest, "ylabel");
            this.setValue(chart, servletrequest, "ytitle");
            for (int i = 10; i < 100; i++)
            {
                this.calExpand(chart, servletrequest, "s" + Convert.ToString(i) + "_value");
            }
            if (servletrequest.getParameter("islegend") == "0")
            {
                chart.Legends.Clear();
            }
            else
            {
                this.setFont(chart, servletrequest, "legendfont");
                this.setColor(chart, servletrequest, "legendcolor");
                this.setColor(chart, servletrequest, "legendbgcolor");
                this.setColor(chart, servletrequest, "legendbgcolor2");
            }
            this.cs.Current = current;
            int    num2 = 0;
            string s    = servletrequest.getParameter("width");

            if (s == null)
            {
                num2 = this.getCellWidth();
                servletrequest.setParameter("width", num2.ToString());
            }
            else
            {
                num2 = int.Parse(s);
            }
            int    num3 = 0;
            string str3 = servletrequest.getParameter("height");

            if (str3 == null)
            {
                num3 = this.getCellHeight();
                servletrequest.setParameter("height", num3.ToString());
            }
            else
            {
                num3 = int.Parse(str3);
            }
            chart.Width  = ((System.Web.UI.WebControls.Unit)num2);
            chart.Height = ((System.Web.UI.WebControls.Unit)num3);
            int    num4 = 0;
            string str4 = servletrequest.getParameter("ChartImageFormat");

            if ((str4 != null) && (str4.Length > 0))
            {
                num4 = Convert.ToInt32(str4);
            }
            MemoryStream imageStream = new MemoryStream();

            chart.Save(imageStream, (ChartImageFormat)num4);
            sb.Append(this.getMapStr(chart));
            return(imageStream.ToArray());
        }
コード例 #19
0
ファイル: ICalcFlash.cs プロジェクト: ikvm/test
        private string cal(UnitSet props, StringBuilder sb)
        {
            ChartParam servletrequest = new ChartParam(this, props);
            CellExt    current        = this.cs.Current;
            string     str            = Convert.ToString(idNo);

            idNo++;
            this.chartXml.Append("var chartJs" + str + " = new FusionCharts(\"../../fceformext/flash/");
            string str2 = servletrequest.getParameter("type");

            if (str2 == null)
            {
                str2 = "Column2D";
            }
            this.chartXml.Append(str2);
            this.chartXml.Append(".swf\",\"chart" + str + "Id\",");
            int    num  = 0;
            string str3 = servletrequest.getParameter("width");

            if (str3 == null)
            {
                num = this.getCellWidth();
                servletrequest.setParameter("width", num.ToString());
            }
            else
            {
                num = int.Parse(str3);
            }
            int    num2 = 0;
            string str4 = servletrequest.getParameter("height");

            if (str4 == null)
            {
                num2 = this.getCellHeight();
                servletrequest.setParameter("height", num2.ToString());
            }
            else
            {
                num2 = int.Parse(str4);
            }
            this.chartXml.Append(string.Concat(new object[] { "\"", num, "\",\"", num2, "\",\"0\",\"1\");\r\n" }));
            string pDataXml = this.pDataXml;

            if ((pDataXml != null) && (pDataXml.Length > 0))
            {
                XmlDocument oXml = new XmlDocument();
                oXml.LoadXml(pDataXml);
                if (oXml.DocumentElement == null)
                {
                    throw new Exception("不是合法的XML数据:" + pDataXml);
                }
                int    iSeriesCount = 1;
                string str6         = servletrequest.getParameter("seriesCount");
                if ((str6 != null) && (str6.Length > 0))
                {
                    iSeriesCount = Convert.ToInt32(str6);
                }
                this.calExpand(oXml, servletrequest, "xlabel", iSeriesCount);
                this.calExpand(oXml, servletrequest, "s10_value", iSeriesCount);
                for (int i = 0; i < (iSeriesCount - 1); i++)
                {
                    this.calExpand(oXml, servletrequest, "s" + Convert.ToString(i + 11) + "_value", iSeriesCount);
                    this.calExpand(oXml, servletrequest, "s" + Convert.ToString(i + 11) + "_link", iSeriesCount);
                    this.calExpand(oXml, servletrequest, "s" + Convert.ToString(i + 11) + "_name", iSeriesCount);
                }
                this.calExpand(oXml, servletrequest, "s10_link", iSeriesCount);
                if (iSeriesCount > 1)
                {
                    this.calExpand(oXml, servletrequest, "s10_name", iSeriesCount);
                }
                this.chartXml.Append("chartJs" + str + ".setDataXML('" + oXml.DocumentElement.OuterXml + "');");
            }
            this.chartXml.Append("chartJs" + str + ".render");
            return(this.chartXml.ToString());
        }