using DevExpress.XtraReports.UI; using OTSIncAReportApp.OTSTemplateDesigner; using OTSIncAReportGrids; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using static OTSIncAReportApp.OTSReport_Export; namespace OTSIncAReportApp.ReportTemplate { public partial class GBReport : DevExpress.XtraReports.UI.XtraReport { string typeface = "微软雅黑"; public OTSReport_Export m_otsreport_export; float LowPlace = 1000f; Hashtable table; GBData m_export_reporttemplate; string logName = ""; public GBReport(OTSReport_Export in_export, Hashtable a_table) { m_otsreport_export = in_export; m_export_reporttemplate = new GBData(in_export); InitializeComponent(); table = a_table; } private void setXRLabelData(XRLabel cell, string str) { cell.Text = str; cell.Font = new Font(typeface, cell.Font.Size); } private string GetlanguageData(string strName, string TextName) { string str = TextName; try { str = table[strName].ToString(); } catch { } return str; } //国际化 public void International_language() { setXRLabelData(GB_dev_ym, GetlanguageData("gb_dev_ym", "GB30834"));//表头 setXRLabelData(GB_bt, GetlanguageData("gb_bt", "标准评级"));//标题 setXRLabelData(GB_dev_ypsm, GetlanguageData("gb_dev_ypsm", "样品说明"));//样品说明 setXRLabelData(GB_dev_jcjgwj, GetlanguageData("gb_dev_jcjgwj", "测量结果名称:"));//测量结果名称: setXRLabelData(GB_dev_cljggk, GetlanguageData("gb_dev_cljggk", "测量结果概况"));//测量结果概况 setXRLabelData(GB_dev_yxsj, GetlanguageData("gb_dev_yxsj", "运行时间:"));//运行时间: setXRLabelData(GB_dev_flfa, GetlanguageData("gb_dev_flfa", "分类方案:"));//分类方案: setXRLabelData(GB_dev_scmj, GetlanguageData("gb_dev_scmj", "总视场面积:"));//视场面积: setXRLabelData(GB_dev_sczs, GetlanguageData("gb_dev_sczs", "视场总数:"));//视场总数: setXRLabelData(GB_dev_yjctz, GetlanguageData("gb_dev_yjctz", "已检查特征:"));//已检查特征: setXRLabelData(GB_dev_ckbz, GetlanguageData("GB_dev_ckbz", "参考标准:"));//参考标准: } public void set_GB_Method(List GB_List,List GB1_NameList,string GBName) { XRPageBreak xRPage = new XRPageBreak(); xRPage.LocationF = new PointF(0, LowPlace + 2); this.Detail.Controls.Add(xRPage); LowPlace = LowPlace + 4; XRLabel GBNameLabel = new XRLabel(); GBNameLabel.SizeF = new SizeF(640, 0); GBNameLabel.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; GBNameLabel.Text = GBName; GBNameLabel.LocationF = new PointF(5, LowPlace); GBNameLabel.Font = new Font(typeface, 24); this.Detail.Controls.Add(GBNameLabel); LowPlace = LowPlace + GBNameLabel.SizeF.Height; GB_NameData(out DataTable HeaderData, out DataTable HeaderData_DS);//获取标准表头 XRTable Template = new XRTable(); List listStr = new List(); for (int a = 0; a < GB_List.Count - 1; a++) { XRTableRow Template_Rows_A_Class = new XRTableRow(); XRTableCell Template_Rows_A_cell = new XRTableCell(); Template_Rows_A_cell.WidthF = 640f; Template_Rows_A_cell.Text = GB1_NameList[a]; Template_Rows_A_Class.Controls.Add(Template_Rows_A_cell); Template_Rows_A_Class.BackColor = Color.DarkGray; Template.Rows.Add(Template_Rows_A_Class); Template.Rows.Add(GB_Class_dataRow(HeaderData, 0)); for (int i = 0; i < GB_List[a].Rows.Count; i++) { Template.Rows.Add(GB_Class_dataRow(GB_List[a], i)); } if(DetermineWhetherImprovementIsNeeded(GB1_NameList[a], GB_List[a])) { string srt = GB1_NameList[a] + logName; listStr.Add(srt); } } if (listStr.Count==0) { xrTable1.Rows.Add(GB_fpt(GBName+":此样品所有指标低于国标2.0,不需要优化冶炼工艺",Color.Black)); } else { string str = GBName+ ":此样品"; for (int i=0;i< listStr.Count;i++) { str = str + listStr[i]; } str = str + "指标超过国标2.0:钢中夹杂物控制不佳,可尝试在工艺上改进。具体改进措施可以咨询我公司软件售后服务炼钢工艺专家团队。"; xrTable1.Rows.Add(GB_fpt(str,Color.Red)); } XRTableRow Template_Rows_A_Class_DS = new XRTableRow(); XRTableCell Template_Rows_A_cell_DS = new XRTableCell(); Template_Rows_A_cell_DS.WidthF = 640f; Template_Rows_A_cell_DS.Text = GB1_NameList[GB1_NameList.Count - 1]; Template_Rows_A_Class_DS.Controls.Add(Template_Rows_A_cell_DS); Template_Rows_A_Class_DS.BackColor= Color.DarkGray; Template.Rows.Add(Template_Rows_A_Class_DS); Template.Rows.Add(GB_Class_dataRows_DS(HeaderData_DS, 0)); for (int i = 0; i < GB_List[GB_List.Count - 1].Rows.Count; i++) { Template.Rows.Add(GB_Class_dataRows_DS(GB_List[GB_List.Count - 1], i)); } Template.Borders = DevExpress.XtraPrinting.BorderSide.All; Template.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter; Template.LocationF = new PointF(5, LowPlace); Template.SizeF = new SizeF(640, 0); Template.Font = new Font(typeface, Template.Font.Size); this.Detail.Controls.Add(Template); LowPlace = LowPlace + Template.SizeF.Height + 50; } private bool DetermineWhetherImprovementIsNeeded(string str, DataTable data) { logName = ""; bool bl = false; string Thin = ""; string Thick = ""; string OverSize = ""; for (int i = 6; i < data.Columns.Count; i++) { if (Convert.ToInt32(data.Rows[0][i]) > 0) { Thin = "细系"; } if (Convert.ToInt32(data.Rows[1][i]) > 0) { Thick = "粗系"; } if (Convert.ToInt32(data.Rows[2][i]) > 0) { OverSize = "超尺寸"; } } string str_result = ""; if (Thin != "" || Thick != "" || OverSize != "") { str_result = Thin + Thick + OverSize /*+ "指标超过国标2.0,则存在优化的空间。如需了解更多详情,请咨询我司专业的售后专家服务系统。"*/; logName = str_result; bl = true; } return bl; } private XRTableRow GB_fpt(string str, Color color) { XRTableRow XRT = new XRTableRow(); XRTableCell XRTr = new XRTableCell(); XRTr.WidthF = 480f; XRTr.Text = str; XRTr.ForeColor = color; XRT.Controls.Add(XRTr); return XRT; } private XRTableRow GB_Class_dataRow(DataTable dt,int index) { XRTableRow Template_Rows_A_Class_data = new XRTableRow(); XRTableCell Template_Rows_A_cell_data_Class = new XRTableCell(); Template_Rows_A_cell_data_Class.WidthF = 73.96f; Template_Rows_A_cell_data_Class.Text = dt.Rows[index]["Class"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_Class); XRTableCell Template_Rows_A_cell_data_Width = new XRTableCell(); Template_Rows_A_cell_data_Width.WidthF = 85.42f; Template_Rows_A_cell_data_Width.Text = dt.Rows[index]["Width/um"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_Width); XRTableCell Template_Rows_A_cell_data_1 = new XRTableCell(); Template_Rows_A_cell_data_1.WidthF = 43.69f; Template_Rows_A_cell_data_1.Text = dt.Rows[index]["0.0"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_1); XRTableCell Template_Rows_A_cell_data_2 = new XRTableCell(); Template_Rows_A_cell_data_2.WidthF = 43.69f; Template_Rows_A_cell_data_2.Text = dt.Rows[index]["0.5"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_2); XRTableCell Template_Rows_A_cell_data_3 = new XRTableCell(); Template_Rows_A_cell_data_3.WidthF = 43.69f; Template_Rows_A_cell_data_3.Text = dt.Rows[index]["1.0"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_3); XRTableCell Template_Rows_A_cell_data_4 = new XRTableCell(); Template_Rows_A_cell_data_4.WidthF = 43.69f; Template_Rows_A_cell_data_4.Text = dt.Rows[index]["1.5"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_4); XRTableCell Template_Rows_A_cell_data_5 = new XRTableCell(); Template_Rows_A_cell_data_5.WidthF = 43.69f; Template_Rows_A_cell_data_5.Text = dt.Rows[index]["2.0"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_5); XRTableCell Template_Rows_A_cell_data_6 = new XRTableCell(); Template_Rows_A_cell_data_6.WidthF = 43.69f; Template_Rows_A_cell_data_6.Text = dt.Rows[index]["2.5"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_6); XRTableCell Template_Rows_A_cell_data_7 = new XRTableCell(); Template_Rows_A_cell_data_7.WidthF = 43.69f; Template_Rows_A_cell_data_7.Text = dt.Rows[index]["3.0"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_7); XRTableCell Template_Rows_A_cell_data_8 = new XRTableCell(); Template_Rows_A_cell_data_8.WidthF = 43.69f; Template_Rows_A_cell_data_8.Text = dt.Rows[index]["3.5"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_8); XRTableCell Template_Rows_A_cell_data_9 = new XRTableCell(); Template_Rows_A_cell_data_9.WidthF = 43.69f; Template_Rows_A_cell_data_9.Text = dt.Rows[index]["4.0"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_9); XRTableCell Template_Rows_A_cell_data_10 = new XRTableCell(); Template_Rows_A_cell_data_10.WidthF = 43.69f; Template_Rows_A_cell_data_10.Text = dt.Rows[index]["4.5"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_10); XRTableCell Template_Rows_A_cell_data_11 = new XRTableCell(); Template_Rows_A_cell_data_11.WidthF = 43.69f; Template_Rows_A_cell_data_11.Text = dt.Rows[index]["5.0"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_11); return Template_Rows_A_Class_data; } private XRTableRow GB_Class_dataRows_DS(DataTable dt, int index) { XRTableRow Template_Rows_A_Class_data = new XRTableRow(); XRTableCell Template_Rows_A_cell_data_Class = new XRTableCell(); Template_Rows_A_cell_data_Class.WidthF = 106.67f; Template_Rows_A_cell_data_Class.Text = dt.Rows[index]["No."].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_Class); XRTableCell Template_Rows_A_cell_data_Area = new XRTableCell(); Template_Rows_A_cell_data_Area.WidthF = 106.67f; Template_Rows_A_cell_data_Area.Text = dt.Rows[index]["Area/um2"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_Area); XRTableCell Template_Rows_A_cell_data_MaxFeret = new XRTableCell(); Template_Rows_A_cell_data_MaxFeret.WidthF = 106.67f; Template_Rows_A_cell_data_MaxFeret.Text = dt.Rows[index]["MaxFeret/um"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_MaxFeret); XRTableCell Template_Rows_A_cell_data_X = new XRTableCell(); Template_Rows_A_cell_data_X.WidthF = 106.67f; Template_Rows_A_cell_data_X.Text = dt.Rows[index]["X/um"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_X); XRTableCell Template_Rows_A_cell_data_Y = new XRTableCell(); Template_Rows_A_cell_data_Y.WidthF = 106.67f; Template_Rows_A_cell_data_Y.Text = dt.Rows[index]["Y/um"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_Y); XRTableCell Template_Rows_A_cell_data_Grade = new XRTableCell(); Template_Rows_A_cell_data_Grade.WidthF = 106.67f; Template_Rows_A_cell_data_Grade.Text = dt.Rows[index]["Grade"].ToString(); Template_Rows_A_Class_data.Controls.Add(Template_Rows_A_cell_data_Grade); return Template_Rows_A_Class_data; } private void GB_NameData(out DataTable GBName_dt ,out DataTable GBName_dt_DS) { DataTable HeaderData = new DataTable(); HeaderData.Columns.Add("Class"); HeaderData.Columns.Add("Width/um"); HeaderData.Columns.Add("0.0"); HeaderData.Columns.Add("0.5"); HeaderData.Columns.Add("1.0"); HeaderData.Columns.Add("1.5"); HeaderData.Columns.Add("2.0"); HeaderData.Columns.Add("2.5"); HeaderData.Columns.Add("3.0"); HeaderData.Columns.Add("3.5"); HeaderData.Columns.Add("4.0"); HeaderData.Columns.Add("4.5"); HeaderData.Columns.Add("5.0"); DataRow dr = HeaderData.NewRow(); dr["Class"] = "Class"; dr["Width/um"] = "Width/um"; dr["0.0"] = "0.0"; dr["0.5"] = "0.5"; dr["1.0"] = "1.0"; dr["1.5"] = "1.5"; dr["2.0"] = "2.0"; dr["2.5"] = "2.5"; dr["3.0"] = "3.0"; dr["3.5"] = "3.5"; dr["4.0"] = "4.0"; dr["4.5"] = "4.5"; dr["5.0"] = "5.0"; HeaderData.Rows.Add(dr); GBName_dt = HeaderData.Copy(); DataTable HeaderData_DS = new DataTable(); HeaderData_DS.Columns.Add("No."); HeaderData_DS.Columns.Add("Area/um2"); HeaderData_DS.Columns.Add("MaxFeret/um"); HeaderData_DS.Columns.Add("X/um"); HeaderData_DS.Columns.Add("Y/um"); HeaderData_DS.Columns.Add("Grade"); DataRow dr_DS = HeaderData_DS.NewRow(); dr_DS["No."] = "No."; dr_DS["Area/um2"] = "Area/um2"; dr_DS["MaxFeret/um"] = "MaxFeret/um"; dr_DS["X/um"] = "X/um"; dr_DS["Y/um"] = "Y/um"; dr_DS["Grade"] = "Grade"; HeaderData_DS.Rows.Add(dr_DS); GBName_dt_DS = HeaderData_DS.Copy(); } /// /// 首页部分数据插入 /// /// public void setResultGrid(c_TemplateClass m_mbszclass, DataTable tb) { #region 从Grid表中读取样品数据 //------------------加载模块,获取数据------------------------------------------------- ResultGrid ls_resultgrid = new ResultGrid(m_otsreport_export.m_ReportApp); Dictionary keyValues_ResultGrid = ls_resultgrid.GetData_ResultGrid_Report(); //------------------加载模块,获取数据结束---------------------------------------------- Dictionary.Enumerator en = keyValues_ResultGrid.GetEnumerator(); keyValues_ResultGrid.TryGetValue(ls_resultgrid.table["col1"].ToString(), out string str_CLJGMC);//测量结果名称 keyValues_ResultGrid.TryGetValue(ls_resultgrid.table["col4"].ToString(), out string str_YXSJ);//运行时间 keyValues_ResultGrid.TryGetValue(ls_resultgrid.table["col5"].ToString(), out string str_SCZS);//视场总数 keyValues_ResultGrid.TryGetValue(ls_resultgrid.table["col6"].ToString(), out string str_FLFA);//分类方案 keyValues_ResultGrid.TryGetValue(ls_resultgrid.table["col7"].ToString(), out string str_YJCTZ);//已检测特征 keyValues_ResultGrid.TryGetValue(ls_resultgrid.table["col8"].ToString(), out string str_SCMJ);//视场面积 keyValues_ResultGrid.TryGetValue("Magnification", out string Magnification);//放大倍数 #endregion setXRLabelData(GB_dev_jcjgwj_text, str_CLJGMC); setXRLabelData(GB_dev_yxsj_text, str_YXSJ); setXRLabelData(GB_dev_sczs_text, tb.Rows.Count.ToString()); setXRLabelData(GB_dev_flfa_text, str_FLFA); setXRLabelData(GB_dev_yjctz_text, str_YJCTZ); setXRLabelData(GB_dev_scmj_text, (tb.Rows.Count*0.5).ToString()); setXRLabelData(GB_dev_ckbz_text, "GB30834"); } } }