Example #1
0
            public static Point?findGroupPosition(Worksheet worksheet, Xml_Equal_Group group)
            {
                if (group.Rules.Count < 1)
                {
                    throw new ArgumentException("В группе должно быть по меньшей мере одно условие!", nameof(group.Rules));
                }

                if ((!group.X.HasValue && group.Y.HasValue) || (!group.Y.HasValue && group.X.HasValue))
                {
                    throw new ArgumentException("Несогласованность: X и Y должны находиться в одинаковом состоянии!");
                }

                if (group.X.HasValue && group.Y.HasValue)
                {
                    return(new Point(group.X.Value, group.Y.Value));
                }

                var firstRule = group.Rules[0];

                Logger.debug($"Поиск динамического значения: {firstRule.Text}");
                var result = worksheet.UsedRange.Find(firstRule.Text);

                if (result == null)
                {
                    Logger.info("Не удалось найти динамическое значение!");
                    return(null);
                }

                Logger.debug($"Найдено значение '{firstRule.Text}' по адресу 'Y={result.Row},X={result.Column}'!");
                int Y = result.Row - firstRule.Y.Value;
                int X = result.Column - firstRule.X.Value;

                return(new Point(X, Y));
            }
Example #2
0
        public void GroupSearch()
        {
            string[] values       = { "Hello", "world", "!", "Again" };
            int      startY       = 5;
            int      startYoffset = 5;

            ws.Cells[startY, 2]     = values[0];
            ws.Cells[startY, 3]     = values[1];
            ws.Cells[startY, 5]     = values[2];
            ws.Cells[startY + 1, 1] = values[3];

            Xml_Form form = new Xml_Form
            {
                Name   = "Test",
                Rules  = new List <Xml_Equal_Base>(),
                Fields = new Xml_Form_Fields()
                {
                    StartY = new Xml_Start_Y
                    {
                        group = new Xml_Start_Y_Group
                        {
                            name     = "group1",
                            position = "after",
                            Y        = startYoffset
                        }
                    }
                }
            };
            var rule = new Xml_Equal_Group
            {
                Name  = "group1",
                Rules = new List <Xml_Equal>
                {
                    new Xml_Equal {
                        Text = values[1], X = 1, Y = 0
                    },
                    new Xml_Equal {
                        Text = values[0], X = 0, Y = 0
                    },
                }
            };

            form.Rules.Add(rule);

            Work work = new Work(ws, form, 1);

            Assert.AreEqual(startY + startYoffset, work.StartY);
        }
Example #3
0
        public void GroupSearch()
        {
            string[] values = { "Hello", "world", "!", "Again" };
            ws.Cells[5, 2] = values[0];
            ws.Cells[5, 3] = values[1];
            ws.Cells[5, 5] = values[2];
            ws.Cells[6, 1] = values[3];

            Xml_Form form = new Xml_Form
            {
                Name  = "Test",
                Rules = new List <Xml_Equal_Base>()
            };
            var rule = new Xml_Equal_Group
            {
                Rules = new List <Xml_Equal>
                {
                    new Xml_Equal {
                        Text = values[1], X = 1, Y = 0
                    },
                    new Xml_Equal {
                        Text = values[0], X = 0, Y = 0
                    },
                }
            };

            form.Rules.Add(rule);
            var finded = XmlTools.findCorrectForm(ws, new List <Xml_Form> {
                form
            });

            Assert.AreEqual(form, finded);

            rule.Rules.Insert(0, new Xml_Equal {
                Text = values[3], X = -1, Y = 1
            });
            finded = XmlTools.findCorrectForm(ws, new List <Xml_Form> {
                form
            });
            Assert.AreEqual(form, finded);
        }