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