예제 #1
0
        private void GainAccess()
        {
            if (ExcelParameterManager.AccessListDict.ContainsKey(ExcelName) && ExcelParameterManager.AccessDict.ContainsKey(ExcelName))
            {
                _accessList = ExcelParameterManager.AccessListDict[ExcelName];
                _dict       = ExcelParameterManager.AccessDict[ExcelName];
                return;
            }
            foreach (var entry in ExcelManager.Dict)
            {
                var array  = entry.Key.Split(',');
                var result = new List <FieldValue>();
                var value  = entry.Value;
                foreach (var field in Fields)
                {
                    var val = field.Indexs != null?GetValues(field, value) : GetValue(field, value);

                    if (val != null)
                    {
                        result.Add(val);
                    }
                }
                _accessList.AddRange(result);
                _dict.Add(array[1], result);
            }

            ExcelParameterManager.AddAccess(ExcelName, _accessList, _dict);
        }
예제 #2
0
        public void Program()
        {
            QuestionManager.Clear();
            LogManager.Init();
            ParameterManager.Init(Folder);
            DCDYTBManager.Init();
            ExcelParameterManager.Clear();
            if (!Init())
            {
                OutputMessage("00", "初始化失败,程序终止", ProgressResultTypeEnum.Fail);
                return;
            }
            OutputMessage("00", "成功初始化", ProgressResultTypeEnum.Pass);
            foreach (var id in _ruleIds)
            {
                var rule = _rules.FirstOrDefault(e => e.ID == id.ToString());
                if (rule != null)
                {
                    var sb     = new StringBuilder(rule.RuleName);
                    var result = ProgressResultTypeEnum.Pass;
                    try
                    {
                        rule.Check();
                    }
                    catch (AggregateException ae)
                    {
                        foreach (var exp in ae.InnerExceptions)
                        {
                            sb.Append(exp.Message + "\r\n");
                        }
                        result = ProgressResultTypeEnum.Fail;
                    }
                    catch (Exception ex)
                    {
                        result = ProgressResultTypeEnum.Fail;
                        sb.Append(ex.ToString());
                    }

                    if (result != ProgressResultTypeEnum.Pass)
                    {
                        QuestionManager.Add(new Question {
                            Code = rule.ID, Name = rule.RuleName, Description = sb.ToString()
                        });
                    }
                    if (OutputMessage(rule.ID, sb.ToString(), result) == true)
                    {
                        break;
                    }
                }
            }
            _reportPath = QuestionManager.Save(ReportPath);
            //PDFHelper.Save(_reportPath, ReportPDFPath);
            //PdfHelper2.SavePdf(_reportPath, ReportPDFPath);
            PdfHelper2.Convert(_reportPath, ReportPDFPath);
        }
예제 #3
0
        private void ExportExcelbutton_Click(object sender, EventArgs e)
        {
            var saveFile = DialogClass.SaveFile("2003Excel文件|*.xls", "请选择保存文件路径");

            if (string.IsNullOrEmpty(saveFile))
            {
                return;
            }
            var modelFile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Excels", System.Configuration.ConfigurationManager.AppSettings["Statistic"]);

            try
            {
                ExcelParameterManager.ExportExcel(modelFile, saveFile, this.dataGridView1);
            }
            catch (Exception ex)
            {
                MessageBox.Show("发生错误:" + ex.Message);
                return;
            }
            MessageBox.Show("成果导出!");
        }
예제 #4
0
        private void Analyze(ISheet sheet, int startLine)
        {
            IRow row  = null;
            var  info = string.Empty;

            for (var i = startLine; i <= sheet.LastRowNum; i++)
            {
                row = sheet.GetRow(i);
                if (row == null)
                {
                    break;
                }
                #region  核对乡镇代码与乡镇名称的正确性
                var xzc = GetXZC(row);
                if (string.IsNullOrEmpty(xzc.XZCDM) && string.IsNullOrEmpty(xzc.XZCMC))
                {
                    continue;
                }
                if (xzc.XZCDM == SM || xzc.XZCMC == SM)//合计
                {
                    //var totals = GetValues(row);
                    CheckTotal(row);//核对合计数值

                    break;
                }
                var entry = List.FirstOrDefault(e => e.XZCDM.ToLower() == xzc.XZCDM.ToLower());
                if (entry == null)
                {
                    info = string.Format("第{0}行:未找到行政区代码为{1}的乡镇信息,请核对", i + 1, xzc.XZCDM);
                    _paralleQuestions.Add(new Question
                    {
                        Code        = "6101",
                        Name        = Name,
                        TableName   = ExcelName,
                        Project     = CheckProject.汇总表与数据库图层逻辑一致性,
                        BSM         = (i + 1).ToString(),
                        Description = info
                    });
                    continue;
                }
                if (entry.XZCMC.ToLower() != xzc.XZCMC.ToLower())
                {
                    info = string.Format("第{0}行:当前乡镇代码【{1}】对应的乡镇名称【{2}】与数据库乡镇名称【{3}】不符,请核对", i + 1, xzc.XZCDM, xzc.XZCMC, entry.XZCMC);
                    _paralleQuestions.Add(new Question
                    {
                        Code        = "6101",
                        Name        = Name,
                        Project     = CheckProject.汇总表与数据库图层逻辑一致性,
                        BSM         = (i + 1).ToString(),
                        Description = info
                    });
                    continue;
                }
                #endregion


                #region
                //读取其他字段的数据值 并且核对数值的正确性
                var values = GetValues(row);
                foreach (var item in values)
                {
                    if (string.IsNullOrEmpty(item.Val.ToString()))
                    {
                        continue;
                    }
                    info = string.Empty;

                    switch (item.Type)
                    {
                    case ExcelType.Double:
                        var a = .0;
                        if (!double.TryParse(item.Val.ToString(), out a))
                        {
                            info = string.Format("乡镇代码【{0}】乡镇名称【{1}】中字段【{2}】的值与要求的格式不一致", xzc.XZCDM, xzc.XZCMC, item.Title);
                        }
                        break;

                    case ExcelType.Int:
                        var b = 0;
                        if (!int.TryParse(item.Val.ToString(), out b))
                        {
                            info = string.Format("乡镇代码【{0}】乡镇名称【{1}】中字段【{2}】的值与要求的格式不一致", xzc.XZCDM, xzc.XZCMC, item.Title);
                        }
                        break;
                    }
                    if (!string.IsNullOrEmpty(info))
                    {
                        _paralleQuestions.Add(new Question
                        {
                            Code        = "6101",
                            Name        = Name,
                            TableName   = ExcelName,
                            BSM         = (i + 1).ToString(),
                            Project     = CheckProject.汇总表与数据库图层逻辑一致性,
                            Description = info
                        });
                    }
                }
                #endregion

                if (_excelDict.ContainsKey(xzc.XZCDM))
                {
                    info = string.Format("乡镇代码【{0}】乡镇名称【{1}】存在重复数据,请核对", xzc.XZCDM, xzc.XZCMC);
                    _paralleQuestions.Add(new Question
                    {
                        Code        = "6101",
                        Name        = Name,
                        TableName   = ExcelName,
                        BSM         = (i + 1).ToString(),
                        Project     = CheckProject.汇总表与数据库图层逻辑一致性,
                        Description = info
                    });
                }
                else
                {
                    _excelList.AddRange(values);
                    _excelDict.Add(xzc.XZCDM, values);
                }
            }

            ExcelParameterManager.AddExcel(ExcelName, _excelList, _excelDict);
        }