コード例 #1
0
        /// <summary>
        /// 运算
        /// </summary>
        /// <param name="standardColorDt">'标准色'DT</param>
        /// <param name="sampleColorDt">‘样品色’DT</param>
        public DataTable GenerateExcelSourceDt(DataTable standardColorDt, DataTable sampleColorDt)
        {
            //结果DT
            var resultdt = dbList.ExportDt();
            //计算同一个配方内各角度DE相关值
            var tempdt = dbList.GetTempDt();

            //初始化角度临时表
            OnInitializeTempRange();

            try
            {
                //获取‘样品色’的内部色号记录(注:唯一值)
                var tempheaddt = GetTempHeaddt(sampleColorDt);
                //循环tempheaddt,并利用它提供的‘内部色号’分别放到standardColorDt 及 sampleColorDt进行获取数据
                foreach (DataRow rows in tempheaddt.Rows)
                {
                    var standardrows = standardColorDt.Select("内部色号='" + Convert.ToString(rows[0]) + "'");
                    var samplerows   = sampleColorDt.Select("内部色号='" + Convert.ToString(rows[0]) + "'");

                    //使用‘角度’临时表循环获取'同一个内部色号'下的角度对应的L A B值
                    for (var i = 0; i < _temprangedt.Rows.Count; i++)
                    {
                        tempdt?.Merge(GetTempDt(standardrows, samplerows, Convert.ToString(_temprangedt.Rows[i][0])));
                    }
                    //最后将结果插入至resultdt内(注:需使用SUM(5个角度的DE值)/5)
                    resultdt.Merge(GenerateDeValueToDt(tempdt));
                    //最后将_tempdt临时表数据清空
                    if (tempdt?.Rows.Count >= 0)
                    {
                        tempdt.Rows.Clear();
                        tempdt.Columns.Clear();
                    }
                }
            }
            catch (Exception)
            {
                resultdt.Rows.Clear();
                resultdt.Columns.Clear();
            }

            //退出前将各TEMP临时表清空
            if (_temprangedt?.Rows.Count >= 0)
            {
                _temprangedt.Rows.Clear();
                _temprangedt.Columns.Clear();
            }
            if (tempdt?.Rows.Count >= 0)
            {
                tempdt.Rows.Clear();
                tempdt.Columns.Clear();
            }
            return(resultdt);
        }