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