public static RuleWithDetail GetRuleFromExcelRecord(ExcelRuleWithDetailRecord rule)
 {
     return(new RuleWithDetail()
     {
         Condition = rule.Condition,
         Reliability = rule.Reliability,
         Consequence = rule.Consequence,
         SupportCount = rule.SupportCount
     });
 }
        //Получаем записи в "сыром" виде
        public List <ExcelRuleWithDetailRecord> ReadRecordsFromPath()
        {
            if (File.Exists(FileLocation) == false)
            {
                throw new FileNotFoundException();
            }

            FileStream fs = new FileStream(FileLocation, FileMode.Open, FileAccess.Read);

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            ExcelPackage package = new ExcelPackage(fs);

            //Берем первый лист
            var workSheet = package.Workbook.Worksheets[0];

            List <ExcelRuleWithDetailRecord> result = new List <ExcelRuleWithDetailRecord>(workSheet.Dimension.End.Row - 1);

            int start = WithHeader ? 2 : 1;

            //Проходимся по всем строкам
            for (var rowNumber = start; rowNumber <= workSheet.Dimension.End.Row; rowNumber++)
            {
                string idStr = workSheet.Cells[rowNumber, 1].Value.ToString().Trim();
                int    id;
                if (int.TryParse(idStr, out id) == false)
                {
                    throw new Exception();
                }

                string elementNumStr = workSheet.Cells[rowNumber, 2].Value.ToString().Trim();
                int    elementNum;
                if (int.TryParse(elementNumStr, out elementNum) == false)
                {
                    throw new Exception();
                }

                string       conditionStr = workSheet.Cells[rowNumber, 3].Value.ToString().Trim();
                DetailDefect condition    = RulesWithDetailHelper.DetailInfoFromStr(conditionStr, Parser);

                string       consequenceStr = workSheet.Cells[rowNumber, 4].Value.ToString().Trim();
                DetailDefect consequence    = RulesWithDetailHelper.DetailInfoFromStr(consequenceStr, Parser);

                string supportCountStr = workSheet.Cells[rowNumber, 5].Value.ToString().Trim();
                int    supportCount;
                if (int.TryParse(supportCountStr, out supportCount) == false)
                {
                    throw new Exception();
                }

                string supportPercStr = workSheet.Cells[rowNumber, 6].Value.ToString().Trim();
                float  supportPerc;
                if (float.TryParse(supportPercStr, out supportPerc) == false)
                {
                    throw new Exception();
                }

                string reliabilityStr = workSheet.Cells[rowNumber, 7].Value.ToString().Trim();
                float  reliability;
                if (float.TryParse(reliabilityStr, out reliability) == false)
                {
                    throw new Exception();
                }

                string liftStr = workSheet.Cells[rowNumber, 1].Value.ToString().Trim();
                float  lift;
                if (float.TryParse(liftStr, out lift) == false)
                {
                    throw new Exception();
                }

                ExcelRuleWithDetailRecord newRecord = new ExcelRuleWithDetailRecord()
                {
                    Id           = id,
                    ElementNum   = elementNum,
                    Condition    = condition,
                    Consequence  = consequence,
                    SupportCount = supportCount,
                    SupportPerc  = supportPerc,
                    Reliability  = reliability,
                    Lift         = lift
                };

                result.Add(newRecord);
            }

            return(result);
        }