using BLL; using Model; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Web; namespace FineUIPro.Web.YLRQ.TestDataManagement { public partial class TestingReportPrint : PageBase { /// /// 首次加载 /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BridProjectGrid(); //检测类型 this.drpNDT.DataTextField = "Ndt_NdtCode"; this.drpNDT.DataValueField = "Ndt_Id"; this.drpNDT.DataSource = Funs.DB.PV_TestMethod; this.drpNDT.DataBind(); Funs.FineUIPleaseSelect(this.drpNDT); //是否打印 this.drpIsPrint.DataTextField = "Text"; this.drpIsPrint.DataValueField = "Value"; this.drpIsPrint.DataSource = BLL.DropListService.IsTrueOrFalseDrpList(); this.drpIsPrint.DataBind(); Funs.FineUIPleaseSelect(this.drpIsPrint); this.InitTreeMenu();//加载树 } } #region 树加载 /// /// 绑定项目 /// public void BridProjectGrid() { GridProject.DataSource = BLL.Base_ProjectService.GetYlrqProjectListByUserId(this.CurrUser.UserId, "2"); GridProject.DataBind(); } /// /// 施工号下拉框 /// protected void drpProject_TextChanged(object sender, EventArgs e) { this.InitTreeMenu(); this.tvControlItem.SelectedNodeID = drpProject.Value; this.BindGrid(); } /// /// 加载施工号 /// private void InitTreeMenu() { this.tvControlItem.Nodes.Clear(); TreeNode rootNode = new TreeNode(); rootNode.Text = "施工号"; rootNode.ToolTip = "项目"; rootNode.NodeID = "0"; rootNode.Expanded = true; this.tvControlItem.Nodes.Add(rootNode); List projects = BLL.Base_ProjectService.GetOnProjectListByUserId(this.CurrUser.UserId, "2"); if (!string.IsNullOrEmpty(this.drpProject.Value)) { projects = projects.Where(x => x.ProjectId == this.drpProject.Value).ToList(); } foreach (var item in projects) { TreeNode rootProjectNode = new TreeNode();//定义根节点 rootProjectNode.Text = $"{item.ProjectCode},{item.EquipmentName},{item.ProductNum}"; rootProjectNode.NodeID = item.ProjectId; rootProjectNode.EnableExpandEvent = true; rootProjectNode.ToolTip = item.ProjectName; rootProjectNode.CommandName = "施工号"; rootNode.Nodes.Add(rootProjectNode); TreeNode tn = new TreeNode(); tn.NodeID = "temp"; tn.Text = "正在加载..."; rootProjectNode.Nodes.Add(tn); } } #endregion #region 绑定树节点 /// /// 绑定树节点 /// protected void tvControlItem_NodeExpand(object sender, TreeNodeEventArgs e) { if (e.Node.Nodes != null) { e.Node.Nodes.Clear(); } var entrusDict = Funs.DB.PV_EntrustRecord.Where(p => p.ProjectId == e.NodeID).ToDictionary(p => p.Id, s => s.EntrustCode); List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", e.NodeID)); SqlParameter[] parameter = listStr.ToArray(); DataTable dt = SQLHelper.GetDataTableRunProc("PV_spTestingReportPrint", parameter); this.BindNodes(e.Node, entrusDict, dt); } /// /// 绑定树节点 /// /// private void BindNodes(TreeNode node, Dictionary entrusDict, DataTable dt) { if (node.CommandName == "施工号") { foreach (var item in entrusDict) { DataRow[] drArr = dt.Select("EntrustId='" + item.Key + "' and IsPrint=0");//查询 if (this.rblPrint.SelectedValue == "0") { if (drArr.Count() > 0) { TreeNode newNode = new TreeNode(); newNode.Text = item.Value; newNode.NodeID = item.Key; newNode.ToolTip = "委托单号"; newNode.CommandName = "委托单号"; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); } } else if (this.rblPrint.SelectedValue == "1") { if (drArr.Count() == 0) { TreeNode newNode = new TreeNode(); newNode.Text = "" + item.Value + ""; newNode.NodeID = item.Key; newNode.ToolTip = "委托单号"; newNode.CommandName = "委托单号"; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); } } else { TreeNode newNode = new TreeNode(); if (drArr.Count() == 0) { newNode.Text = "" + item.Value + ""; } else { newNode.Text = item.Value; } newNode.NodeID = item.Key; newNode.ToolTip = "委托单号"; newNode.CommandName = "委托单号"; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); } } } } #endregion #region TreeView点击事件 /// /// TreeView点击事件 /// /// /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { this.BindGrid(); } #endregion #region 绑定数据 /// /// 绑定数据 /// private void BindGrid() { if (!string.IsNullOrEmpty(this.tvControlItem.SelectedNodeID) && !string.IsNullOrEmpty(this.tvControlItem.SelectedNode.ParentNode.NodeID)) { List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.tvControlItem.SelectedNode.ParentNode.NodeID)); if (this.drpNDT.SelectedValue != BLL.Const._Null) { listStr.Add(new SqlParameter("@NDT", this.drpNDT.SelectedText)); } if (this.drpIsPrint.SelectedValue != BLL.Const._Null) { listStr.Add(new SqlParameter("@IsPrint", Convert.ToBoolean(this.drpIsPrint.SelectedValue))); } if (!string.IsNullOrEmpty(this.tvControlItem.SelectedNodeID)) { listStr.Add(new SqlParameter("@PEntrustId", this.tvControlItem.SelectedNodeID)); } SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunProc("PV_spTestingReportPrint", parameter); this.Grid1.RecordCount = tb.Rows.Count; tb = GetFilteredTable(Grid1.FilteredData, tb); var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } } #endregion #region Grid行点击事件 /// /// Grid行点击事件 /// /// /// protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { object[] reportIds = Grid1.DataKeys[e.RowIndex]; string weldingId = reportIds[0].ToString(); string jointDesc = reportIds[1].ToString(); string ndtId = reportIds[2].ToString(); string ndtCode = reportIds[3].ToString(); string weldingCode = reportIds[4].ToString(); string entrustId = reportIds[5].ToString(); string STE_ID = reportIds[6].ToString(); string STE_ID2 = reportIds[7].ToString(); string WME_ID = reportIds[8] != null ? reportIds[8].ToString() : string.Empty; string reportPrintId = weldingId + "|" + jointDesc + "|" + ndtId + "|" + entrustId + "|" + weldingCode; reportPrintId = HttpUtility.UrlEncode(reportPrintId); string projectId = reportIds[9].ToString(); var weld = Funs.DB.PV_WeldInformation.FirstOrDefault(p => p.WeldingId == weldingId); if (e.CommandName == "edit")//编辑 { if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.PV_TestingReportPrint, Const.BtnEdit)) { if (ndtCode.Contains("RT")) { PageContext.RegisterStartupScript(Window1.GetShowReference(string.Format("RTReportEdit.aspx?reportPrintId={0}&STE_ID={1}&STE_ID2={2}&WME_ID={3}", reportPrintId, STE_ID, STE_ID2, WME_ID, "编辑 - "))); } else if (ndtCode.Contains("PT")) { PageContext.RegisterStartupScript(Window1.GetShowReference(string.Format("PTReportEdit.aspx?reportPrintId={0}&STE_ID={1}&STE_ID2={2}&WME_ID={3}", reportPrintId, STE_ID, STE_ID2, WME_ID, "编辑 - "))); } else if (ndtCode.Contains("MT")) { PageContext.RegisterStartupScript(Window1.GetShowReference(string.Format("MTReportEdit.aspx?reportPrintId={0}&STE_ID={1}&STE_ID2={2}&WME_ID={3}", reportPrintId, STE_ID, STE_ID2, WME_ID, "编辑 - "))); } else if (ndtCode.Contains("UT") || ndtCode.Contains("TOFD") || ndtCode.Contains("PAUT")) { PageContext.RegisterStartupScript(Window1.GetShowReference(string.Format("UTReportEdit.aspx?reportPrintId={0}&STE_ID={1}&STE_ID2={2}&WME_ID={3}", reportPrintId, STE_ID, STE_ID2, WME_ID, "编辑 - "))); } } else { ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } if (e.CommandName == "print")//打印 { var reportModel = Funs.DB.PV_CH_TestingReportPrint.FirstOrDefault(s => s.WeldingId == weldingId && s.Specifications == jointDesc && s.NdtId == ndtId && s.EntrustId == entrustId && s.STE_ID == STE_ID && s.STE_ID2 == STE_ID2 && s.WME_ID == WME_ID); if (reportModel != null) { ExcelPrint(ndtCode, reportModel); } else { ShowNotify("请先编辑检测报告!", MessageBoxIcon.Warning); return; } } if (e.CommandName == "fileName")//文档名 { var rtReport = Funs.DB.PV_CH_TestingReportPrint.FirstOrDefault(s => s.WeldingId == weldingId && s.Specifications == jointDesc && s.NdtId == ndtId && s.EntrustId == entrustId && s.STE_ID == STE_ID && s.STE_ID2 == STE_ID2 && s.WME_ID == WME_ID); var ndtType = Funs.DB.PV_TestMethod.FirstOrDefault(p => p.Ndt_Id == ndtId); if (rtReport != null) { string code = string.Empty; DateTime date = DateTime.Now.Date; string year = string.Empty; string month = string.Empty; string dateStr = string.Empty; int rowNum = 28; if (date.Day <= 20)//报告时间段按上月21日到本月20日止,如2018年1月21日到2月20日出具的检测编号编为“1802” { if (date.Month < 10) { month = "0" + date.Month.ToString(); } else { month = date.Month.ToString(); } year = date.Year.ToString().Substring(2); } else { date = date.AddMonths(1); if (date.Month < 10) { month = "0" + date.Month.ToString(); } else { month = date.Month.ToString(); } year = date.Year.ToString().Substring(2); } dateStr = year + month; string reportCode = string.Empty; if (!string.IsNullOrEmpty(rtReport.ReportCode) && rtReport.ReportCode.Length > 3) { reportCode = rtReport.ReportCode.Substring(3); } string unitName = string.Empty; if (weld != null) { Model.Base_Unit unit = Funs.DB.Base_Unit.FirstOrDefault(x => x.UnitId == weld.UnitId); if (unit != null) { unitName = unit.UnitName; } } string projectCode = BLL.Base_ProjectService.GetProjectCode(projectId); string projectName = string.Empty; Model.Base_Project project = BLL.Base_ProjectService.GetProjectByProjectId(projectId); if (project != null) { projectName = project.ProjectName; } //委托人 string userName = string.Empty; var mothods = Funs.DB.PV_ManagementMethod.FirstOrDefault(p => p.EntrustId == entrustId && p.WeldingId == weldingId && p.NdtId == ndtId); if (mothods != null) { var wtr = Funs.DB.Sys_User.FirstOrDefault(p => p.UserId == mothods.EntrustPeople); if (wtr != null) userName = wtr.UserName; } if (ndtType.Ndt_NdtCode == "RT") { code = dateStr + "-RT-" + reportCode + "-" + unitName + "-" + projectCode + "-" + projectName + "(" + weld.WeldingCode + ")-" + userName; PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("FileCode.aspx?code={0}", HttpUtility.UrlEncode(code), "编辑 - "))); } else if (ndtType.Ndt_NdtCode == "PT") { code = dateStr + "-PT-" + reportCode + "-" + unitName + "-" + projectCode + "-" + projectName + "(" + weld.WeldingCode + ")-" + userName; PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("FileCode.aspx?code={0}", HttpUtility.UrlEncode(code), "编辑 - "))); } else if (ndtType.Ndt_NdtCode == "MT") { code = dateStr + "-MT-" + reportCode + "-" + unitName + "-" + projectCode + "-" + projectName + "(" + weld.WeldingCode + ")-" + userName; PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("FileCode.aspx?code={0}", HttpUtility.UrlEncode(code), "编辑 - "))); } else if (ndtType.Ndt_NdtCode == "UT" || ndtType.Ndt_NdtCode == "TOFD" || ndtType.Ndt_NdtCode == "PAUT") { code = dateStr + "-UT-" + reportCode + "-" + unitName + "-" + projectCode + "-" + projectName + "(" + weld.WeldingCode + ")-" + userName; PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("FileCode.aspx?code={0}", HttpUtility.UrlEncode(code), "编辑 - "))); } } else { ShowNotify("请先编辑检测报告!", MessageBoxIcon.Warning); return; } } BindGrid(); } #endregion #region 排序 /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { Grid1.SortDirection = e.SortDirection; Grid1.SortField = e.SortField; BindGrid(); } #endregion #region 分页选择下拉改变事件 /// /// 分页选择下拉改变事件 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } #endregion #region 页索引改变事件 /// /// 页索引改变事件 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { BindGrid(); } #endregion #region 关闭弹出窗口 /// /// 关闭弹出窗口 /// /// /// protected void Window1_Close(object sender, EventArgs e) { BindGrid(); } #endregion #region 查询 /// /// 查询 /// /// /// protected void Text_TextChanged(object sender, EventArgs e) { BindGrid(); } /// /// 是否打印 /// protected void rblPrint_SelectedIndexChanged(object sender, EventArgs e) { this.InitTreeMenu(); } #endregion /// /// 打印 /// public void ExcelPrint(string ndtCode, PV_CH_TestingReportPrint reportModel) { if (ndtCode.Contains("RT")) { #region 射线检测 if (string.IsNullOrWhiteSpace(this.tvControlItem.SelectedNodeID)) { Alert.ShowInTop("请选择检测报告!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/") + Const.ExcelUrl; //导出文件 string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string ReportFileName = filePath + "焊缝射线检测报告.xlsx"; if (Grid1.Rows.Count > 0) { int rowIndex = 0; XSSFWorkbook hssfworkbook = new XSSFWorkbook(); XSSFSheet ws = (XSSFSheet)hssfworkbook.CreateSheet("焊缝射线检测报告"); #region 列宽 ws.SetColumnWidth(0, (8 * 256)); ws.SetColumnWidth(1, (3 * 256)); ws.SetColumnWidth(2, (4 * 256)); ws.SetColumnWidth(3, (4 * 256)); ws.SetColumnWidth(4, (2 * 256)); ws.SetColumnWidth(5, (3 * 256)); ws.SetColumnWidth(6, (3 * 256)); ws.SetColumnWidth(7, (4 * 256)); ws.SetColumnWidth(8, (2 * 256)); ws.SetColumnWidth(9, (2 * 256)); ws.SetColumnWidth(10, (3 * 256)); ws.SetColumnWidth(11, (3 * 256)); ws.SetColumnWidth(12, (2 * 256)); ws.SetColumnWidth(13, (2 * 256)); ws.SetColumnWidth(14, (2 * 256)); ws.SetColumnWidth(15, (3 * 256)); ws.SetColumnWidth(16, (2 * 256)); ws.SetColumnWidth(17, (2 * 256)); ws.SetColumnWidth(18, (2 * 256)); ws.SetColumnWidth(19, (2 * 256)); ws.SetColumnWidth(20, (2 * 256)); ws.SetColumnWidth(21, (2 * 256)); ws.SetColumnWidth(22, (3 * 256)); ws.SetColumnWidth(23, (3 * 256)); ws.SetColumnWidth(24, (3 * 256)); ws.SetColumnWidth(25, (2 * 256)); ws.SetColumnWidth(26, (3 * 256)); ws.SetColumnWidth(27, (3 * 256)); ws.SetColumnWidth(28, (3 * 256)); ws.SetColumnWidth(29, (3 * 256)); #endregion //修改数据 reportModel.Printer = this.CurrUser.UserName; reportModel.PrintTime = DateTime.Now.Date; Funs.DB.SubmitChanges(); //列头数据 var titleModel = Funs.DB.View_TestingReportPrint.FirstOrDefault(s => s.WeldingId == reportModel.WeldingId && s.Specifications == reportModel.Specifications && s.NdtId == reportModel.NdtId && s.EntrustId == reportModel.EntrustId && s.STE_ID == reportModel.STE_ID && s.STE_ID2 == reportModel.STE_ID2 && s.WME_ID == reportModel.WME_ID); if (titleModel is null) { Alert.ShowInTop("请编辑检测报告!", MessageBoxIcon.Warning); return; } //列表 var listSql = @"SELECT v.* FROM( SELECT ROW_NUMBER() OVER(ORDER BY report.WeldingCode,report.FilmNum) AS Number,report.* FROM (SELECT v1.* FROM( SELECT QualityRating.QualityRatingId, JointInfo.JointDesc,JointInfo.WeldingCode, QualityRating.FilmNum, (select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(JointInfo.BackingWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a)+','+(select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(JointInfo.CoverWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a) as WED_Code, QualityRating.DefectNature,QualityRating.DefectRation as DefectSize, QualityRating.DefectResult,QualityRating.Remark,trust.EntrustCode FROM dbo.PV_BO_QualityRating AS QualityRating LEFT JOIN DBO.PV_ManagementMethod AS TrustItem ON TrustItem.MethodId = QualityRating.MethodId LEFT JOIN dbo.PV_EntrustRecord trust ON trust.Id = TrustItem.EntrustId LEFT JOIN DBO.PV_WeldInformation AS JointInfo ON JointInfo.WeldingId=QualityRating.WeldingId WHERE QualityRating.WeldingId=@WeldingId AND JointInfo.JointDesc=@JointDesc AND JointInfo.TextureMaterial1=@STE_ID AND (JointInfo.TextureMaterial2=@STE_ID2 or @STE_ID2='') AND JointInfo.WmeId=@WME_ID AND trust.NdtId=@NDT AND trust.Id=@EntrustId ) v1 UNION all SELECT v2.* from ( SELECT qualityRatingRepair.QualityRatingId AS QualityRatingId,JointInfo.JointDesc,JointInfo.WeldingCode,(qualityRatingRepair.FilmNum+record.RepairMark) AS FilmNum, (select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(record.BackingWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a)+','+(select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(record.CoverWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a) as WED_Code, qualityRatingRepair.DefectNature, qualityRatingRepair.DefectRation as DefectSize,qualityRatingRepair.DefectResult, qualityRatingRepair.Remark,trust.EntrustCode FROM dbo.PV_BO_QualityRating AS qualityRatingRepair LEFT JOIN dbo.PV_CH_RepairItemRecord record ON record.QualityRatingId = qualityRatingRepair.QualityRatingId LEFT JOIN DBO.PV_WeldInformation AS JointInfo ON JointInfo.WeldingId=qualityRatingRepair.WeldingId left join PV_EntrustRecord as trust on trust.Id=record.EntrustId WHERE qualityRatingRepair.WeldingId=@WeldingId AND JointInfo.JointDesc=@JointDesc AND JointInfo.TextureMaterial1=@STE_ID AND (JointInfo.TextureMaterial2=@STE_ID2 or @STE_ID2='') AND JointInfo.WmeId=@WME_ID AND record.NdtId=@NDT AND trust.Id=@EntrustId ) v2) report) v"; List listStr = new List(); listStr.Add(new SqlParameter("@WeldingId", reportModel.WeldingId)); listStr.Add(new SqlParameter("@JointDesc", reportModel.Specifications)); listStr.Add(new SqlParameter("@STE_ID", reportModel.STE_ID)); listStr.Add(new SqlParameter("@STE_ID2", reportModel.STE_ID2)); listStr.Add(new SqlParameter("@WME_ID", reportModel.WME_ID)); listStr.Add(new SqlParameter("@NDT", reportModel.NdtId)); listStr.Add(new SqlParameter("@EntrustId", reportModel.EntrustId)); var parameter = listStr.ToArray(); var tb = SQLHelper.GetSqlDataReaderToDataTable(listSql, parameter); var tbNum = tb.Rows.Count; var pageNum = tbNum < 22 ? 1 : Math.Ceiling((float)(tbNum - 22) / 30) + 1; #region 样式 //头部样式大文字居中文字加粗 ICellStyle titleMaxBoldStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //头部样式大文字居中文字加粗上左右边框 ICellStyle titleSZYMaxBoldStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //头部样式居中无边框 ICellStyle titNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式靠右无边框 ICellStyle titriNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式靠左无边框 ICellStyle titleNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠左上左右边框 ICellStyle titleSZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式居中上左右边框 ICellStyle titleSZYCerateStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式靠左下左右边框 ICellStyle titleXZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠右下左右边框 ICellStyle titleXZYRightStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式靠左左右边框 ICellStyle titleZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠右左右边框 ICellStyle titleZYRightStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式居中左右边框 ICellStyle titleZYCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式居中 ICellStyle titleStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //公共样式 ICellStyle style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10, true); //页码样式 ICellStyle pageStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 7, true); //文字靠左 ICellStyle leftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); #endregion //循环页 for (int i = 1; i <= pageNum; i++) { #region 头部 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex, rowIndex, 0, 29, 25); ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 1, rowIndex + 3, 0, 29); //行1 var region = new CellRangeAddress(rowIndex, rowIndex + 3, 0, 3); ws.AddMergedRegion(region); var reportCode = i == 1 ? "SH/T 3503—J349-1" : "SH/T 3503—J349-2"; ws.GetRow(rowIndex).GetCell(0).SetCellValue(reportCode); ws.GetRow(rowIndex).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex, rowIndex, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(4).SetCellValue("设备及构件"); ws.GetRow(rowIndex).GetCell(4).CellStyle = ws.GetRow(rowIndex).GetCell(5).CellStyle = ws.GetRow(rowIndex).GetCell(6).CellStyle = ws.GetRow(rowIndex).GetCell(7).CellStyle = ws.GetRow(rowIndex).GetCell(8).CellStyle = ws.GetRow(rowIndex).GetCell(9).CellStyle = ws.GetRow(rowIndex).GetCell(10).CellStyle = ws.GetRow(rowIndex).GetCell(11).CellStyle = ws.GetRow(rowIndex).GetCell(12).CellStyle = ws.GetRow(rowIndex).GetCell(13).CellStyle = ws.GetRow(rowIndex).GetCell(14).CellStyle = ws.GetRow(rowIndex).GetCell(15).CellStyle = ws.GetRow(rowIndex).GetCell(16).CellStyle = ws.GetRow(rowIndex).GetCell(17).CellStyle = ws.GetRow(rowIndex).GetCell(18).CellStyle = ws.GetRow(rowIndex).GetCell(19).CellStyle = titleSZYMaxBoldStyle; region = new CellRangeAddress(rowIndex, rowIndex, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(20).SetCellValue($"工程名称:{titleModel.ProjectName}"); ws.GetRow(rowIndex).GetCell(20).CellStyle = ws.GetRow(rowIndex).GetCell(21).CellStyle = ws.GetRow(rowIndex).GetCell(22).CellStyle = ws.GetRow(rowIndex).GetCell(23).CellStyle = ws.GetRow(rowIndex).GetCell(24).CellStyle = ws.GetRow(rowIndex).GetCell(25).CellStyle = ws.GetRow(rowIndex).GetCell(26).CellStyle = ws.GetRow(rowIndex).GetCell(27).CellStyle = ws.GetRow(rowIndex).GetCell(28).CellStyle = ws.GetRow(rowIndex).GetCell(29).CellStyle = titleSZYLeftStyle; //行2 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 4, 19); ws.AddMergedRegion(region); var reportName = i == 1 ? "焊缝射线检测报告" : "焊缝射线检测报告(续)"; ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue(reportName); ws.GetRow(rowIndex + 1).GetCell(4).CellStyle = ws.GetRow(rowIndex + 1).GetCell(5).CellStyle = ws.GetRow(rowIndex + 1).GetCell(6).CellStyle = ws.GetRow(rowIndex + 1).GetCell(7).CellStyle = ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = ws.GetRow(rowIndex + 1).GetCell(9).CellStyle = ws.GetRow(rowIndex + 1).GetCell(10).CellStyle = ws.GetRow(rowIndex + 1).GetCell(11).CellStyle = ws.GetRow(rowIndex + 1).GetCell(12).CellStyle = ws.GetRow(rowIndex + 1).GetCell(13).CellStyle = ws.GetRow(rowIndex + 1).GetCell(14).CellStyle = ws.GetRow(rowIndex + 1).GetCell(15).CellStyle = ws.GetRow(rowIndex + 1).GetCell(16).CellStyle = ws.GetRow(rowIndex + 1).GetCell(17).CellStyle = ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = ws.GetRow(rowIndex + 1).GetCell(19).CellStyle = titleMaxBoldStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(20).SetCellValue(""); ws.GetRow(rowIndex + 1).GetCell(20).CellStyle = ws.GetRow(rowIndex + 1).GetCell(21).CellStyle = ws.GetRow(rowIndex + 1).GetCell(22).CellStyle = ws.GetRow(rowIndex + 1).GetCell(23).CellStyle = ws.GetRow(rowIndex + 1).GetCell(24).CellStyle = ws.GetRow(rowIndex + 1).GetCell(25).CellStyle = ws.GetRow(rowIndex + 1).GetCell(26).CellStyle = ws.GetRow(rowIndex + 1).GetCell(27).CellStyle = ws.GetRow(rowIndex + 1).GetCell(28).CellStyle = ws.GetRow(rowIndex + 1).GetCell(29).CellStyle = titleZYLeftStyle; //行3 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(4).SetCellValue($"第 {i} 页共 {pageNum} 页"); ws.GetRow(rowIndex + 2).GetCell(4).CellStyle = ws.GetRow(rowIndex + 2).GetCell(5).CellStyle = ws.GetRow(rowIndex + 2).GetCell(6).CellStyle = ws.GetRow(rowIndex + 2).GetCell(7).CellStyle = ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = ws.GetRow(rowIndex + 2).GetCell(9).CellStyle = ws.GetRow(rowIndex + 2).GetCell(10).CellStyle = ws.GetRow(rowIndex + 2).GetCell(11).CellStyle = ws.GetRow(rowIndex + 2).GetCell(12).CellStyle = ws.GetRow(rowIndex + 2).GetCell(13).CellStyle = ws.GetRow(rowIndex + 2).GetCell(14).CellStyle = ws.GetRow(rowIndex + 2).GetCell(15).CellStyle = ws.GetRow(rowIndex + 2).GetCell(16).CellStyle = ws.GetRow(rowIndex + 2).GetCell(17).CellStyle = ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = ws.GetRow(rowIndex + 2).GetCell(19).CellStyle = titleZYCenterStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(20).SetCellValue($"单位工程名称:{titleModel.InstallationName}"); ws.GetRow(rowIndex + 2).GetCell(20).CellStyle = ws.GetRow(rowIndex + 2).GetCell(21).CellStyle = ws.GetRow(rowIndex + 2).GetCell(22).CellStyle = ws.GetRow(rowIndex + 2).GetCell(23).CellStyle = ws.GetRow(rowIndex + 2).GetCell(24).CellStyle = ws.GetRow(rowIndex + 2).GetCell(25).CellStyle = ws.GetRow(rowIndex + 2).GetCell(26).CellStyle = ws.GetRow(rowIndex + 2).GetCell(27).CellStyle = ws.GetRow(rowIndex + 2).GetCell(28).CellStyle = ws.GetRow(rowIndex + 2).GetCell(29).CellStyle = titleZYLeftStyle; //行4 region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue(""); ws.GetRow(rowIndex + 3).GetCell(4).CellStyle = ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = ws.GetRow(rowIndex + 3).GetCell(6).CellStyle = ws.GetRow(rowIndex + 3).GetCell(7).CellStyle = ws.GetRow(rowIndex + 3).GetCell(8).CellStyle = ws.GetRow(rowIndex + 3).GetCell(9).CellStyle = ws.GetRow(rowIndex + 3).GetCell(10).CellStyle = ws.GetRow(rowIndex + 3).GetCell(11).CellStyle = ws.GetRow(rowIndex + 3).GetCell(12).CellStyle = ws.GetRow(rowIndex + 3).GetCell(13).CellStyle = ws.GetRow(rowIndex + 3).GetCell(14).CellStyle = ws.GetRow(rowIndex + 3).GetCell(15).CellStyle = ws.GetRow(rowIndex + 3).GetCell(16).CellStyle = ws.GetRow(rowIndex + 3).GetCell(17).CellStyle = ws.GetRow(rowIndex + 3).GetCell(18).CellStyle = ws.GetRow(rowIndex + 3).GetCell(19).CellStyle = titleZYCenterStyle; region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(20).SetCellValue(""); ws.GetRow(rowIndex + 3).GetCell(20).CellStyle = ws.GetRow(rowIndex + 3).GetCell(21).CellStyle = ws.GetRow(rowIndex + 3).GetCell(22).CellStyle = ws.GetRow(rowIndex + 3).GetCell(23).CellStyle = ws.GetRow(rowIndex + 3).GetCell(24).CellStyle = ws.GetRow(rowIndex + 3).GetCell(25).CellStyle = ws.GetRow(rowIndex + 3).GetCell(26).CellStyle = ws.GetRow(rowIndex + 3).GetCell(27).CellStyle = ws.GetRow(rowIndex + 3).GetCell(28).CellStyle = ws.GetRow(rowIndex + 3).GetCell(29).CellStyle = titleZYLeftStyle; //行5 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 4, rowIndex + 4, 0, 29); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("委托单位"); ws.GetRow(rowIndex + 4).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 1, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue(titleModel.UnitName); ws.GetRow(rowIndex + 4).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 8, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(8).SetCellValue("施工单位"); ws.GetRow(rowIndex + 4).GetCell(8).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 11, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(11).SetCellValue("镇海石化建安工程股份有限公司"); ws.GetRow(rowIndex + 4).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 21, 25); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(21).SetCellValue("报告编号"); ws.GetRow(rowIndex + 4).GetCell(21).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 26, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(26).SetCellValue(titleModel.ReportCode); ws.GetRow(rowIndex + 4).GetCell(26).CellStyle = titleStyle; if (i == 1) { ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 5, rowIndex + 12, 0, 29); //行6 ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检件编号"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 1, 4); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(1).SetCellValue(titleModel.WeldingCode); ws.GetRow(rowIndex + 5).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 5, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(5).SetCellValue("检件名称"); ws.GetRow(rowIndex + 5).GetCell(5).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 10, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(10).SetCellValue(titleModel.WeldingCode); ws.GetRow(rowIndex + 5).GetCell(10).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 13, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(13).SetCellValue("检测标准"); ws.GetRow(rowIndex + 5).GetCell(13).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 17, 22); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(17).SetCellValue(titleModel.Ndt_TestStandardCode); ws.GetRow(rowIndex + 5).GetCell(17).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 23, 27); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(23).SetCellValue("合格级别"); ws.GetRow(rowIndex + 5).GetCell(23).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 28, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(28).SetCellValue(titleModel.Ndt_Level); ws.GetRow(rowIndex + 5).GetCell(28).CellStyle = titleStyle; //行7 ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("检件材质"); ws.GetRow(rowIndex + 6).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 1, 4); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(1).SetCellValue(titleModel.STE_Code); ws.GetRow(rowIndex + 6).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 5, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(5).SetCellValue("焊接方法"); ws.GetRow(rowIndex + 6).GetCell(5).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 10, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(10).SetCellValue(titleModel.WME_Name); ws.GetRow(rowIndex + 6).GetCell(10).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 13, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(13).SetCellValue("技术等级"); ws.GetRow(rowIndex + 6).GetCell(13).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 17, 22); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(17).SetCellValue(titleModel.RT_TechnicalGrade); ws.GetRow(rowIndex + 6).GetCell(17).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 23, 27); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(23).SetCellValue("检测比例"); ws.GetRow(rowIndex + 6).GetCell(23).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 28, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(28).SetCellValue(titleModel.Ndt_NdtName); ws.GetRow(rowIndex + 6).GetCell(28).CellStyle = titleStyle; //行8 ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("检测时机"); ws.GetRow(rowIndex + 7).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 1, 4); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(1).SetCellValue(titleModel.TestingTime); ws.GetRow(rowIndex + 7).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 5, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(5).SetCellValue("显影温度"); ws.GetRow(rowIndex + 7).GetCell(5).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 10, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(10).SetCellValue(titleModel.RT_DeveloperTemperature); ws.GetRow(rowIndex + 7).GetCell(10).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 13, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(13).SetCellValue("显影时间"); ws.GetRow(rowIndex + 7).GetCell(13).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 17, 22); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(17).SetCellValue(titleModel.RT_DeveloperTime); ws.GetRow(rowIndex + 7).GetCell(17).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 23, 27); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(23).SetCellValue("底片黑度"); ws.GetRow(rowIndex + 7).GetCell(23).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 28, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(28).SetCellValue(titleModel.RT_FilmDensity); ws.GetRow(rowIndex + 7).GetCell(28).CellStyle = titleStyle; //行9 region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 0, 1); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("焊缝规格"); ws.GetRow(rowIndex + 8).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 2, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(2).SetCellValue("透照方式"); ws.GetRow(rowIndex + 8).GetCell(2).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 3, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(3).SetCellValue("线径编号"); ws.GetRow(rowIndex + 8).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 4, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(4).SetCellValue("焦距"); ws.GetRow(rowIndex + 8).GetCell(4).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 7, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(7).SetCellValue("有效片长"); ws.GetRow(rowIndex + 8).GetCell(7).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 8, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(8).SetCellValue("管电压源能量"); ws.GetRow(rowIndex + 8).GetCell(8).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 11, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(11).SetCellValue("管电流源活度"); ws.GetRow(rowIndex + 8).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 14, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(14).SetCellValue("曝光"); ws.GetRow(rowIndex + 8).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 16, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(16).SetCellValue("设备型号"); ws.GetRow(rowIndex + 8).GetCell(16).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 22, 24); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(22).SetCellValue("焦点尺寸"); ws.GetRow(rowIndex + 8).GetCell(22).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 25, 27); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(15).SetCellValue("增感方式"); ws.GetRow(rowIndex + 8).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 28, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(28).SetCellValue("胶片牌号"); ws.GetRow(rowIndex + 8).GetCell(28).CellStyle = titleStyle; //行10 region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 0, 1); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("mm×mm"); ws.GetRow(rowIndex + 9).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 4, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(4).SetCellValue("mm"); ws.GetRow(rowIndex + 9).GetCell(4).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 14, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(14).SetCellValue("时间"); ws.GetRow(rowIndex + 9).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 16, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(16).SetCellValue("射源种类"); ws.GetRow(rowIndex + 9).GetCell(16).CellStyle = titleStyle; //行11 region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 0, 1); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(0).SetCellValue(titleModel.Specifications); ws.GetRow(rowIndex + 10).GetCell(0).CellStyle = titleStyle; ws.GetRow(rowIndex + 10).GetCell(2).SetCellValue(titleModel.TransilluminationMode); ws.GetRow(rowIndex + 10).GetCell(2).CellStyle = titleStyle; ws.GetRow(rowIndex + 10).GetCell(3).SetCellValue(titleModel.WireDiameterCode); ws.GetRow(rowIndex + 10).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 4, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(4).SetCellValue(titleModel.FocalLength); ws.GetRow(rowIndex + 10).GetCell(4).CellStyle = titleStyle; ws.GetRow(rowIndex + 10).GetCell(7).SetCellValue(titleModel.EffectiveLength); ws.GetRow(rowIndex + 10).GetCell(7).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 8, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(8).SetCellValue(titleModel.TubeVoltage); ws.GetRow(rowIndex + 10).GetCell(8).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 11, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(11).SetCellValue(titleModel.RT_TubeCurrent); ws.GetRow(rowIndex + 10).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 14, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(14).SetCellValue(titleModel.ExposureTime); ws.GetRow(rowIndex + 10).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 16, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(16).SetCellValue(titleModel.EquipmentCode); ws.GetRow(rowIndex + 10).GetCell(16).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 22, 24); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(22).SetCellValue(titleModel.FocalSize); ws.GetRow(rowIndex + 10).GetCell(22).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 25, 28); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(25).SetCellValue(titleModel.IntensifyingWay); ws.GetRow(rowIndex + 10).GetCell(25).CellStyle = titleStyle; ws.GetRow(rowIndex + 10).GetCell(29).SetCellValue(titleModel.FilmModel); ws.GetRow(rowIndex + 10).GetCell(29).CellStyle = titleStyle; //行12 region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 0, 1); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(0).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(0).CellStyle = titleStyle; ws.GetRow(rowIndex + 11).GetCell(2).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(2).CellStyle = titleStyle; ws.GetRow(rowIndex + 11).GetCell(3).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 4, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(4).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(4).CellStyle = titleStyle; ws.GetRow(rowIndex + 11).GetCell(7).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(7).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 8, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(8).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(8).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 11, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(11).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 14, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(14).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 16, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(16).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(16).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 22, 24); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(22).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(22).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 25, 28); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(25).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(25).CellStyle = titleStyle; ws.GetRow(rowIndex + 11).GetCell(29).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(29).CellStyle = titleStyle; //行13 region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 0, 1); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(0).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(0).CellStyle = titleStyle; ws.GetRow(rowIndex + 12).GetCell(2).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(2).CellStyle = titleStyle; ws.GetRow(rowIndex + 12).GetCell(3).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 4, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(4).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(4).CellStyle = titleStyle; ws.GetRow(rowIndex + 12).GetCell(7).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(7).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 8, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(8).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(8).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 11, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(11).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 14, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(14).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 16, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(16).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(16).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 22, 24); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(22).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(22).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 25, 28); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(25).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(25).CellStyle = titleStyle; ws.GetRow(rowIndex + 12).GetCell(29).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(29).CellStyle = titleStyle; rowIndex += 8; } //行14 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 5, rowIndex + 5, 0, 29); region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检测批号"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue("焊缝编号"); ws.GetRow(rowIndex + 5).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 8); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("焊工号"); ws.GetRow(rowIndex + 5).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 9, 11); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(9).SetCellValue("焊缝规格"); ws.GetRow(rowIndex + 5).GetCell(9).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 12, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(12).SetCellValue("片号"); ws.GetRow(rowIndex + 5).GetCell(12).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(15).SetCellValue("缺陷性质"); ws.GetRow(rowIndex + 5).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(19).SetCellValue("缺陷定量"); ws.GetRow(rowIndex + 5).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(24).SetCellValue("评定级别"); ws.GetRow(rowIndex + 5).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(27).SetCellValue("备注"); ws.GetRow(rowIndex + 5).GetCell(27).CellStyle = titleStyle; #endregion #region 表格 var dataTit = rowIndex + 6; var tIndex = i == 1 ? 27 : 37; ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, dataTit, rowIndex + tIndex, 0, 29); //每页数据开始和结束条数 var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 22; } else { dStart = i == 2 ? 22 : ((i - 2) * 32) + 22; dEnd = ((i - 1) * 32) + 22; } //合并单元格 for (int hb = rowIndex + 6; hb <= rowIndex + tIndex; hb++) { region = new CellRangeAddress(hb, hb, 0, 2); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 3, 5); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 6, 8); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 9, 11); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 12, 14); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 15, 18); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 19, 23); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 24, 26); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 27, 29); ws.AddMergedRegion(region); } //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); //数据 for (int j = 0; j < pageTb.Rows.Count; j++) { int dataIndex = dataTit + j; //检测批号 ws.GetRow(dataIndex).GetCell(0).SetCellValue(pageTb.Rows[j]["EntrustCode"].ToString()); //焊缝编号 ws.GetRow(dataIndex).GetCell(3).SetCellValue(pageTb.Rows[j]["WeldingCode"].ToString()); //焊工号 ws.GetRow(dataIndex).GetCell(6).SetCellValue(pageTb.Rows[j]["WED_Code"].ToString()); //焊缝规格 ws.GetRow(dataIndex).GetCell(9).SetCellValue(pageTb.Rows[j]["JointDesc"].ToString()); //片号 ws.GetRow(dataIndex).GetCell(12).SetCellValue(pageTb.Rows[j]["FilmNum"].ToString()); //缺陷性质 ws.GetRow(dataIndex).GetCell(15).SetCellValue(pageTb.Rows[j]["DefectNature"].ToString()); //缺陷定量 ws.GetRow(dataIndex).GetCell(19).SetCellValue(pageTb.Rows[j]["DefectSize"].ToString()); //评定级别 ws.GetRow(dataIndex).GetCell(24).SetCellValue(pageTb.Rows[j]["DefectResult"].ToString()); //备注 ws.GetRow(dataIndex).GetCell(27).SetCellValue(pageTb.Rows[j]["Remark"].ToString()); } rowIndex = rowIndex + tIndex; #endregion #region 尾部 if (i == 1) { ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 1, rowIndex + 2, 0, 29); //尾部行1 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 0, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue("评片人:"); ws.GetRow(rowIndex + 1).GetCell(0).CellStyle = leftStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 8, 17); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(8).SetCellValue(""); ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = leftStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 18, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(18).SetCellValue("检测单位:(公章)"); ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = leftStyle; //尾部行2 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 0, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("资格: RT 级"); ws.GetRow(rowIndex + 2).GetCell(0).CellStyle = leftStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 8, 17); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(8).SetCellValue(""); ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = leftStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 18, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(18).SetCellValue("报告日期: 年 月 日"); ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = leftStyle; rowIndex = rowIndex + 3; } else { rowIndex++; } #endregion } //ws.SetMargin(MarginType.LeftMargin, 0.3); //ws.SetMargin(MarginType.RightMargin, 0.2); //ws.SetMargin(MarginType.BottomMargin, 0.2); //ws.SetMargin(MarginType.TopMargin, 0.2); //ws.SetMargin(MarginType.FooterMargin, 0.3); //ws.SetMargin(MarginType.HeaderMargin, 0.3); ws.PrintSetup.Landscape = false; ws.PrintSetup.PaperSize = 9; ws.ForceFormulaRecalculation = true; using (FileStream filess = File.OpenWrite(ReportFileName)) { hssfworkbook.Write(filess); } FileInfo filet = new FileInfo(ReportFileName); Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF8; // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("焊缝射线检测报告.xlsx")); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", filet.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(filet.FullName); // 停止页面的执行 Response.End(); } #endregion } else if (ndtCode.Contains("PT")) { #region 渗透检测 if (string.IsNullOrWhiteSpace(this.tvControlItem.SelectedNodeID)) { Alert.ShowInTop("请选择检测报告!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/") + Const.ExcelUrl; //导出文件 string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string ReportFileName = filePath + "焊缝渗透检测报告.xlsx"; if (Grid1.Rows.Count > 0) { int rowIndex = 0; XSSFWorkbook hssfworkbook = new XSSFWorkbook(); XSSFSheet ws = (XSSFSheet)hssfworkbook.CreateSheet("焊缝渗透检测报告"); #region 列宽 ws.SetColumnWidth(0, (8 * 256)); ws.SetColumnWidth(1, (4 * 256)); ws.SetColumnWidth(2, (4 * 256)); ws.SetColumnWidth(3, (2 * 256)); ws.SetColumnWidth(4, (2 * 256)); ws.SetColumnWidth(5, (3 * 256)); ws.SetColumnWidth(6, (2 * 256)); ws.SetColumnWidth(7, (2 * 256)); ws.SetColumnWidth(8, (4 * 256)); ws.SetColumnWidth(9, (2 * 256)); ws.SetColumnWidth(10, (3 * 256)); ws.SetColumnWidth(11, (3 * 256)); ws.SetColumnWidth(12, (3 * 256)); ws.SetColumnWidth(13, (3 * 256)); ws.SetColumnWidth(14, (2 * 256)); ws.SetColumnWidth(15, (3 * 256)); ws.SetColumnWidth(16, (2 * 256)); ws.SetColumnWidth(17, (2 * 256)); ws.SetColumnWidth(18, (2 * 256)); ws.SetColumnWidth(19, (2 * 256)); ws.SetColumnWidth(20, (2 * 256)); ws.SetColumnWidth(21, (2 * 256)); ws.SetColumnWidth(22, (3 * 256)); ws.SetColumnWidth(23, (3 * 256)); ws.SetColumnWidth(24, (3 * 256)); ws.SetColumnWidth(25, (2 * 256)); ws.SetColumnWidth(26, (3 * 256)); ws.SetColumnWidth(27, (3 * 256)); ws.SetColumnWidth(28, (3 * 256)); ws.SetColumnWidth(29, (3 * 256)); #endregion //修改数据 reportModel.Printer = this.CurrUser.UserName; reportModel.PrintTime = DateTime.Now.Date; Funs.DB.SubmitChanges(); //列头数据 var titleModel = Funs.DB.View_TestingReportPrint.FirstOrDefault(s => s.WeldingId == reportModel.WeldingId && s.Specifications == reportModel.Specifications && s.NdtId == reportModel.NdtId && s.EntrustId == reportModel.EntrustId && s.STE_ID == reportModel.STE_ID && s.STE_ID2 == reportModel.STE_ID2 && s.WME_ID == reportModel.WME_ID); if (titleModel is null) { Alert.ShowInTop("请编辑检测报告!", MessageBoxIcon.Warning); return; } //列表 var listSql = @"SELECT QualityRating.QualityRatingId, QualityRating.MethodId, QualityRating.WeldingId, test.Ndt_NdtCode, trust.EntrustCode, JointInfo.JointDesc, JointInfo.WeldingCode, QualityRating.FilmNum, (select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(JointInfo.BackingWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a)+','+(select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(JointInfo.CoverWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a) as WED_Code, QualityRating.DefectNature, QualityRating.DefectSize, QualityRating.DefectResult, QualityRating.Remark FROM dbo.PV_BO_QualityRating AS QualityRating left join PV_ManagementMethod as record on record.MethodId=QualityRating.MethodId LEFT JOIN dbo.PV_EntrustRecord trust ON trust.Id = record.EntrustId LEFT JOIN DBO.PV_WeldInformation AS JointInfo ON JointInfo.WeldingId=QualityRating.WeldingId left join PV_TestMethod as test on test.Ndt_Id=trust.NdtId WHERE QualityRating.WeldingId=@WeldingId AND JointInfo.JointDesc=@JointDesc AND JointInfo.TextureMaterial1=@STE_ID AND (JointInfo.TextureMaterial2=@STE_ID2 or @STE_ID2='') AND JointInfo.WmeId=@WME_ID AND trust.NdtId = @NDT AND trust.Id=@EntrustId"; List listStr = new List(); listStr.Add(new SqlParameter("@WeldingId", reportModel.WeldingId)); listStr.Add(new SqlParameter("@JointDesc", reportModel.Specifications)); listStr.Add(new SqlParameter("@STE_ID", reportModel.STE_ID)); listStr.Add(new SqlParameter("@STE_ID2", reportModel.STE_ID2)); listStr.Add(new SqlParameter("@WME_ID", reportModel.WME_ID)); listStr.Add(new SqlParameter("@NDT", reportModel.NdtId)); listStr.Add(new SqlParameter("@EntrustId", reportModel.EntrustId)); var parameter = listStr.ToArray(); var tb = SQLHelper.GetDataTableRunText(listSql, parameter); var tbNum = tb.Rows.Count; var pageNum = tbNum < 25 ? 1 : Math.Ceiling((float)(tbNum - 25) / 32) + 1; #region 样式 //头部样式大文字居中文字加粗 ICellStyle titleMaxBoldStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //头部样式大文字居中文字加粗上左右边框 ICellStyle titleSZYMaxBoldStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //头部样式居中无边框 ICellStyle titNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式靠右无边框 ICellStyle titriNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式靠左无边框 ICellStyle titleNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠左上左右边框 ICellStyle titleSZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式居中上左右边框 ICellStyle titleSZYCerateStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式靠左下左右边框 ICellStyle titleXZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠右下左右边框 ICellStyle titleXZYRightStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式靠左左右边框 ICellStyle titleZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠右左右边框 ICellStyle titleZYRightStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式居中左右边框 ICellStyle titleZYCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式居中 ICellStyle titleStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //公共样式 ICellStyle style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10, true); //页码样式 ICellStyle pageStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 7, true); //文字靠左 ICellStyle leftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 10, true); #endregion //循环页 for (int i = 1; i <= pageNum; i++) { #region 头部 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex, rowIndex, 0, 29, 25); ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 1, rowIndex + 3, 0, 29); //行1 var region = new CellRangeAddress(rowIndex, rowIndex + 3, 0, 3); ws.AddMergedRegion(region); var reportCode = i == 1 ? "SH/T 3503—J352-1" : "SH/T 3503—J352-2"; ws.GetRow(rowIndex).GetCell(0).SetCellValue(reportCode); ws.GetRow(rowIndex).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex, rowIndex, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(4).SetCellValue("设备及构件"); ws.GetRow(rowIndex).GetCell(4).CellStyle = ws.GetRow(rowIndex).GetCell(5).CellStyle = ws.GetRow(rowIndex).GetCell(6).CellStyle = ws.GetRow(rowIndex).GetCell(7).CellStyle = ws.GetRow(rowIndex).GetCell(8).CellStyle = ws.GetRow(rowIndex).GetCell(9).CellStyle = ws.GetRow(rowIndex).GetCell(10).CellStyle = ws.GetRow(rowIndex).GetCell(11).CellStyle = ws.GetRow(rowIndex).GetCell(12).CellStyle = ws.GetRow(rowIndex).GetCell(13).CellStyle = ws.GetRow(rowIndex).GetCell(14).CellStyle = ws.GetRow(rowIndex).GetCell(15).CellStyle = ws.GetRow(rowIndex).GetCell(16).CellStyle = ws.GetRow(rowIndex).GetCell(17).CellStyle = ws.GetRow(rowIndex).GetCell(18).CellStyle = ws.GetRow(rowIndex).GetCell(19).CellStyle = titleSZYMaxBoldStyle; region = new CellRangeAddress(rowIndex, rowIndex, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(20).SetCellValue($"工程名称:{titleModel.ProjectName}"); ws.GetRow(rowIndex).GetCell(20).CellStyle = ws.GetRow(rowIndex).GetCell(21).CellStyle = ws.GetRow(rowIndex).GetCell(22).CellStyle = ws.GetRow(rowIndex).GetCell(23).CellStyle = ws.GetRow(rowIndex).GetCell(24).CellStyle = ws.GetRow(rowIndex).GetCell(25).CellStyle = ws.GetRow(rowIndex).GetCell(26).CellStyle = ws.GetRow(rowIndex).GetCell(27).CellStyle = ws.GetRow(rowIndex).GetCell(28).CellStyle = ws.GetRow(rowIndex).GetCell(29).CellStyle = titleSZYLeftStyle; //行2 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 4, 19); ws.AddMergedRegion(region); var reportName = i == 1 ? "焊缝渗透检测报告" : "焊缝渗透检测报告(续)"; ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue(reportName); ws.GetRow(rowIndex + 1).GetCell(4).CellStyle = ws.GetRow(rowIndex + 1).GetCell(5).CellStyle = ws.GetRow(rowIndex + 1).GetCell(6).CellStyle = ws.GetRow(rowIndex + 1).GetCell(7).CellStyle = ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = ws.GetRow(rowIndex + 1).GetCell(9).CellStyle = ws.GetRow(rowIndex + 1).GetCell(10).CellStyle = ws.GetRow(rowIndex + 1).GetCell(11).CellStyle = ws.GetRow(rowIndex + 1).GetCell(12).CellStyle = ws.GetRow(rowIndex + 1).GetCell(13).CellStyle = ws.GetRow(rowIndex + 1).GetCell(14).CellStyle = ws.GetRow(rowIndex + 1).GetCell(15).CellStyle = ws.GetRow(rowIndex + 1).GetCell(16).CellStyle = ws.GetRow(rowIndex + 1).GetCell(17).CellStyle = ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = ws.GetRow(rowIndex + 1).GetCell(19).CellStyle = titleMaxBoldStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(20).SetCellValue(""); ws.GetRow(rowIndex + 1).GetCell(20).CellStyle = ws.GetRow(rowIndex + 1).GetCell(21).CellStyle = ws.GetRow(rowIndex + 1).GetCell(22).CellStyle = ws.GetRow(rowIndex + 1).GetCell(23).CellStyle = ws.GetRow(rowIndex + 1).GetCell(24).CellStyle = ws.GetRow(rowIndex + 1).GetCell(25).CellStyle = ws.GetRow(rowIndex + 1).GetCell(26).CellStyle = ws.GetRow(rowIndex + 1).GetCell(27).CellStyle = ws.GetRow(rowIndex + 1).GetCell(28).CellStyle = ws.GetRow(rowIndex + 1).GetCell(29).CellStyle = titleZYLeftStyle; //行3 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(4).SetCellValue($"第 {i} 页共 {pageNum} 页"); ws.GetRow(rowIndex + 2).GetCell(4).CellStyle = ws.GetRow(rowIndex + 2).GetCell(5).CellStyle = ws.GetRow(rowIndex + 2).GetCell(6).CellStyle = ws.GetRow(rowIndex + 2).GetCell(7).CellStyle = ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = ws.GetRow(rowIndex + 2).GetCell(9).CellStyle = ws.GetRow(rowIndex + 2).GetCell(10).CellStyle = ws.GetRow(rowIndex + 2).GetCell(11).CellStyle = ws.GetRow(rowIndex + 2).GetCell(12).CellStyle = ws.GetRow(rowIndex + 2).GetCell(13).CellStyle = ws.GetRow(rowIndex + 2).GetCell(14).CellStyle = ws.GetRow(rowIndex + 2).GetCell(15).CellStyle = ws.GetRow(rowIndex + 2).GetCell(16).CellStyle = ws.GetRow(rowIndex + 2).GetCell(17).CellStyle = ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = ws.GetRow(rowIndex + 2).GetCell(19).CellStyle = titleZYCenterStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(20).SetCellValue($"单位工程名称:{titleModel.InstallationName}"); ws.GetRow(rowIndex + 2).GetCell(20).CellStyle = ws.GetRow(rowIndex + 2).GetCell(21).CellStyle = ws.GetRow(rowIndex + 2).GetCell(22).CellStyle = ws.GetRow(rowIndex + 2).GetCell(23).CellStyle = ws.GetRow(rowIndex + 2).GetCell(24).CellStyle = ws.GetRow(rowIndex + 2).GetCell(25).CellStyle = ws.GetRow(rowIndex + 2).GetCell(26).CellStyle = ws.GetRow(rowIndex + 2).GetCell(27).CellStyle = ws.GetRow(rowIndex + 2).GetCell(28).CellStyle = ws.GetRow(rowIndex + 2).GetCell(29).CellStyle = titleZYLeftStyle; //行4 region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue(""); ws.GetRow(rowIndex + 3).GetCell(4).CellStyle = ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = ws.GetRow(rowIndex + 3).GetCell(6).CellStyle = ws.GetRow(rowIndex + 3).GetCell(7).CellStyle = ws.GetRow(rowIndex + 3).GetCell(8).CellStyle = ws.GetRow(rowIndex + 3).GetCell(9).CellStyle = ws.GetRow(rowIndex + 3).GetCell(10).CellStyle = ws.GetRow(rowIndex + 3).GetCell(11).CellStyle = ws.GetRow(rowIndex + 3).GetCell(12).CellStyle = ws.GetRow(rowIndex + 3).GetCell(13).CellStyle = ws.GetRow(rowIndex + 3).GetCell(14).CellStyle = ws.GetRow(rowIndex + 3).GetCell(15).CellStyle = ws.GetRow(rowIndex + 3).GetCell(16).CellStyle = ws.GetRow(rowIndex + 3).GetCell(17).CellStyle = ws.GetRow(rowIndex + 3).GetCell(18).CellStyle = ws.GetRow(rowIndex + 3).GetCell(19).CellStyle = titleZYCenterStyle; region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(20).SetCellValue(""); ws.GetRow(rowIndex + 3).GetCell(20).CellStyle = ws.GetRow(rowIndex + 3).GetCell(21).CellStyle = ws.GetRow(rowIndex + 3).GetCell(22).CellStyle = ws.GetRow(rowIndex + 3).GetCell(23).CellStyle = ws.GetRow(rowIndex + 3).GetCell(24).CellStyle = ws.GetRow(rowIndex + 3).GetCell(25).CellStyle = ws.GetRow(rowIndex + 3).GetCell(26).CellStyle = ws.GetRow(rowIndex + 3).GetCell(27).CellStyle = ws.GetRow(rowIndex + 3).GetCell(28).CellStyle = ws.GetRow(rowIndex + 3).GetCell(29).CellStyle = titleZYLeftStyle; //行5 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 4, rowIndex + 4, 0, 29); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("委托单位"); ws.GetRow(rowIndex + 4).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 1, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue(titleModel.UnitName); ws.GetRow(rowIndex + 4).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 8, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(8).SetCellValue("施工单位"); ws.GetRow(rowIndex + 4).GetCell(8).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 11, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(11).SetCellValue("镇海石化建安工程股份有限公司"); ws.GetRow(rowIndex + 4).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 21, 25); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(21).SetCellValue("报告编号"); ws.GetRow(rowIndex + 4).GetCell(21).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 26, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(26).SetCellValue(titleModel.ReportCode); ws.GetRow(rowIndex + 4).GetCell(26).CellStyle = titleStyle; if (i == 1) { ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 5, rowIndex + 12, 0, 29); //行6 region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检件编号"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue(titleModel.WeldingCode); ws.GetRow(rowIndex + 5).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("检件名称"); ws.GetRow(rowIndex + 5).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(11).SetCellValue(titleModel.WeldingCode); ws.GetRow(rowIndex + 5).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(15).SetCellValue("检测标准"); ws.GetRow(rowIndex + 5).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(19).SetCellValue(titleModel.Ndt_TestStandardCode); ws.GetRow(rowIndex + 5).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(24).SetCellValue("合格级别"); ws.GetRow(rowIndex + 5).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(27).SetCellValue(titleModel.Ndt_Level); ws.GetRow(rowIndex + 5).GetCell(27).CellStyle = titleStyle; //行7 region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("检件材质"); ws.GetRow(rowIndex + 6).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(3).SetCellValue(titleModel.STE_Code); ws.GetRow(rowIndex + 6).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(6).SetCellValue("焊接方法"); ws.GetRow(rowIndex + 6).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(11).SetCellValue(titleModel.WME_Name); ws.GetRow(rowIndex + 6).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(15).SetCellValue("检测比例"); ws.GetRow(rowIndex + 6).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(19).SetCellValue(titleModel.Ndt_NdtName); ws.GetRow(rowIndex + 6).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(24).SetCellValue("热处理状态"); ws.GetRow(rowIndex + 6).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(27).SetCellValue(titleModel.HotProessState); ws.GetRow(rowIndex + 6).GetCell(27).CellStyle = titleStyle; //行8 region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("检测时机"); ws.GetRow(rowIndex + 7).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(3).SetCellValue(titleModel.TestingTime); ws.GetRow(rowIndex + 7).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(6).SetCellValue("表面状态"); ws.GetRow(rowIndex + 7).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(11).SetCellValue(titleModel.MT_SurfaceState); ws.GetRow(rowIndex + 7).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(15).SetCellValue("检测方法"); ws.GetRow(rowIndex + 7).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(19).SetCellValue("ⅡC-d"); ws.GetRow(rowIndex + 7).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(24).SetCellValue("检测灵敏度"); ws.GetRow(rowIndex + 7).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(27).SetCellValue(titleModel.PT_SensitivityTestBlock); ws.GetRow(rowIndex + 7).GetCell(27).CellStyle = titleStyle; //行9 region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("渗透温度"); ws.GetRow(rowIndex + 8).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(3).SetCellValue(titleModel.PT_OsmoticTemperature); ws.GetRow(rowIndex + 8).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(6).SetCellValue("观察方法"); ws.GetRow(rowIndex + 8).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(11).SetCellValue(titleModel.PT_ObservationMethod); ws.GetRow(rowIndex + 8).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(15).SetCellValue("施加方法"); ws.GetRow(rowIndex + 8).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(19).SetCellValue(titleModel.PT_ImposingMethod); ws.GetRow(rowIndex + 8).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(24).SetCellValue("检测试块"); ws.GetRow(rowIndex + 8).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(27).SetCellValue(titleModel.TestBlock); ws.GetRow(rowIndex + 8).GetCell(27).CellStyle = titleStyle; //行10 region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("渗透时间"); ws.GetRow(rowIndex + 9).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(3).SetCellValue(titleModel.PT_PermeationTime); ws.GetRow(rowIndex + 9).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(6).SetCellValue("显像时间"); ws.GetRow(rowIndex + 9).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(11).SetCellValue(titleModel.PT_ImagingTime); ws.GetRow(rowIndex + 9).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 15, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(15).SetCellValue("渗透检测剂牌号"); ws.GetRow(rowIndex + 9).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 22, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(19).SetCellValue(titleModel.PT_PenetrantGrade); ws.GetRow(rowIndex + 9).GetCell(19).CellStyle = titleStyle; rowIndex += 5; } //行14 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 5, rowIndex + 5, 0, 29); region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检测批号"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue("焊缝编号"); ws.GetRow(rowIndex + 5).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("焊工号"); ws.GetRow(rowIndex + 5).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(11).SetCellValue("焊缝规格"); ws.GetRow(rowIndex + 5).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 15, 17); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(15).SetCellValue("检测面"); ws.GetRow(rowIndex + 5).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 18, 24); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(18).SetCellValue("缺陷情况或缺陷示意图编号"); ws.GetRow(rowIndex + 5).GetCell(18).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 25, 27); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(25).SetCellValue("评定级别"); ws.GetRow(rowIndex + 5).GetCell(25).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 28, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(28).SetCellValue("备注"); ws.GetRow(rowIndex + 5).GetCell(28).CellStyle = titleStyle; #endregion #region 表格 var dataTit = rowIndex + 6; var tIndex = i == 1 ? 30 : 37; ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, dataTit, rowIndex + tIndex, 0, 29); //每页数据开始和结束条数 var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 25; } else { dStart = i == 2 ? 25 : ((i - 2) * 32) + 25; dEnd = ((i - 1) * 32) + 25; } //合并单元格 for (int hb = rowIndex + 6; hb <= rowIndex + tIndex; hb++) { region = new CellRangeAddress(hb, hb, 0, 2); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 3, 5); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 6, 10); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 11, 14); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 15, 17); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 18, 24); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 25, 27); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 28, 29); ws.AddMergedRegion(region); } //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); //数据 for (int j = 0; j < pageTb.Rows.Count; j++) { int dataIndex = dataTit + j; //检测批号 ws.GetRow(dataIndex).GetCell(0).SetCellValue(pageTb.Rows[j]["EntrustCode"].ToString()); //焊缝编号 ws.GetRow(dataIndex).GetCell(3).SetCellValue(pageTb.Rows[j]["WeldingCode"].ToString()); //焊工号 ws.GetRow(dataIndex).GetCell(6).SetCellValue(pageTb.Rows[j]["WED_Code"].ToString()); //焊缝规格 ws.GetRow(dataIndex).GetCell(9).SetCellValue(pageTb.Rows[j]["JointDesc"].ToString()); //检测面 ws.GetRow(dataIndex).GetCell(12).SetCellValue(""); //缺陷情况或缺陷示意图编号 ws.GetRow(dataIndex).GetCell(15).SetCellValue(pageTb.Rows[j]["FilmNum"].ToString()); //评定级别 ws.GetRow(dataIndex).GetCell(19).SetCellValue(pageTb.Rows[j]["DefectResult"].ToString()); //备注 ws.GetRow(dataIndex).GetCell(24).SetCellValue(pageTb.Rows[j]["Remark"].ToString()); } rowIndex = rowIndex + tIndex; #endregion #region 尾部 if (i == 1) { ws = ExcelCreateRowTitle(ws, hssfworkbook, titleSZYLeftStyle, rowIndex + 1, rowIndex + 1, 0, 29); //尾部行1 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 0, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue("检测人:"); ws.GetRow(rowIndex + 1).GetCell(0).CellStyle = titleSZYLeftStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 8, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(8).SetCellValue("审核人:"); ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = titleSZYLeftStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(20).SetCellValue("检测单位:(公章)"); ws.GetRow(rowIndex + 1).GetCell(20).CellStyle = titleSZYLeftStyle; //尾部行2 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleXZYLeftStyle, rowIndex + 2, rowIndex + 2, 0, 29); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 0, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("资格: PT 级"); ws.GetRow(rowIndex + 2).GetCell(0).CellStyle = titleXZYLeftStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 8, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(8).SetCellValue("资格: PT 级"); ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = titleXZYLeftStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(18).SetCellValue("报告日期: 年 月 日"); ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = titleXZYLeftStyle; rowIndex = rowIndex + 3; } else { rowIndex++; } #endregion } //ws.SetMargin(MarginType.LeftMargin, 0.3); //ws.SetMargin(MarginType.RightMargin, 0.2); //ws.SetMargin(MarginType.BottomMargin, 0.2); //ws.SetMargin(MarginType.TopMargin, 0.2); //ws.SetMargin(MarginType.FooterMargin, 0.3); //ws.SetMargin(MarginType.HeaderMargin, 0.3); ws.PrintSetup.Landscape = false; ws.PrintSetup.PaperSize = 9; ws.ForceFormulaRecalculation = true; using (FileStream filess = File.OpenWrite(ReportFileName)) { hssfworkbook.Write(filess); } FileInfo filet = new FileInfo(ReportFileName); Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF8; // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("焊缝渗透检测报告.xlsx")); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", filet.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(filet.FullName); // 停止页面的执行 Response.End(); } #endregion } else if (ndtCode.Contains("MT")) { #region 磁粉检测 if (string.IsNullOrWhiteSpace(this.tvControlItem.SelectedNodeID)) { Alert.ShowInTop("请选择检测报告!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/") + Const.ExcelUrl; //导出文件 string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string ReportFileName = filePath + "焊缝磁粉检测报告.xlsx"; if (Grid1.Rows.Count > 0) { int rowIndex = 0; XSSFWorkbook hssfworkbook = new XSSFWorkbook(); XSSFSheet ws = (XSSFSheet)hssfworkbook.CreateSheet("焊缝磁粉检测报告"); #region 列宽 ws.SetColumnWidth(0, (8 * 256)); ws.SetColumnWidth(1, (4 * 256)); ws.SetColumnWidth(2, (4 * 256)); ws.SetColumnWidth(3, (2 * 256)); ws.SetColumnWidth(4, (2 * 256)); ws.SetColumnWidth(5, (3 * 256)); ws.SetColumnWidth(6, (2 * 256)); ws.SetColumnWidth(7, (2 * 256)); ws.SetColumnWidth(8, (4 * 256)); ws.SetColumnWidth(9, (2 * 256)); ws.SetColumnWidth(10, (3 * 256)); ws.SetColumnWidth(11, (3 * 256)); ws.SetColumnWidth(12, (3 * 256)); ws.SetColumnWidth(13, (3 * 256)); ws.SetColumnWidth(14, (2 * 256)); ws.SetColumnWidth(15, (3 * 256)); ws.SetColumnWidth(16, (2 * 256)); ws.SetColumnWidth(17, (2 * 256)); ws.SetColumnWidth(18, (2 * 256)); ws.SetColumnWidth(19, (2 * 256)); ws.SetColumnWidth(20, (2 * 256)); ws.SetColumnWidth(21, (2 * 256)); ws.SetColumnWidth(22, (3 * 256)); ws.SetColumnWidth(23, (3 * 256)); ws.SetColumnWidth(24, (3 * 256)); ws.SetColumnWidth(25, (2 * 256)); ws.SetColumnWidth(26, (3 * 256)); ws.SetColumnWidth(27, (3 * 256)); ws.SetColumnWidth(28, (3 * 256)); ws.SetColumnWidth(29, (3 * 256)); #endregion //修改数据 reportModel.Printer = this.CurrUser.UserName; reportModel.PrintTime = DateTime.Now.Date; Funs.DB.SubmitChanges(); //列头数据 var titleModel = Funs.DB.View_TestingReportPrint.FirstOrDefault(s => s.WeldingId == reportModel.WeldingId && s.Specifications == reportModel.Specifications && s.NdtId == reportModel.NdtId && s.EntrustId == reportModel.EntrustId && s.STE_ID == reportModel.STE_ID && s.STE_ID2 == reportModel.STE_ID2 && s.WME_ID == reportModel.WME_ID); if (titleModel is null) { Alert.ShowInTop("请编辑检测报告!", MessageBoxIcon.Warning); return; } //列表 var listSql = @"SELECT QualityRating.QualityRatingId, QualityRating.MethodId, QualityRating.WeldingId, test.Ndt_NdtCode, record.EntrustCode, JointInfo.JointDesc, JointInfo.WeldingCode, QualityRating.FilmNum, (select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(JointInfo.BackingWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a)+','+(select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(JointInfo.CoverWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a) as WED_Code, QualityRating.DefectNature, QualityRating.DefectSize, QualityRating.DefectResult, QualityRating.Remark FROM dbo.PV_BO_QualityRating AS QualityRating left join PV_ManagementMethod as record on record.MethodId=QualityRating.MethodId LEFT JOIN dbo.PV_EntrustRecord trust ON trust.Id = record.EntrustId LEFT JOIN DBO.PV_WeldInformation AS JointInfo ON JointInfo.WeldingId=QualityRating.WeldingId left join PV_TestMethod as test on test.Ndt_Id=trust.NdtId WHERE QualityRating.WeldingId=@WeldingId AND JointInfo.JointDesc=@JointDesc AND JointInfo.TextureMaterial1=@STE_ID AND (JointInfo.TextureMaterial2=@STE_ID2 or @STE_ID2='') AND JointInfo.WmeId=@WME_ID AND trust.NdtId = @NDT AND trust.Id=@EntrustId"; List listStr = new List(); listStr.Add(new SqlParameter("@WeldingId", reportModel.WeldingId)); listStr.Add(new SqlParameter("@JointDesc", reportModel.Specifications)); listStr.Add(new SqlParameter("@STE_ID", reportModel.STE_ID)); listStr.Add(new SqlParameter("@STE_ID2", reportModel.STE_ID2)); listStr.Add(new SqlParameter("@WME_ID", reportModel.WME_ID)); listStr.Add(new SqlParameter("@NDT", reportModel.NdtId)); listStr.Add(new SqlParameter("@EntrustId", reportModel.EntrustId)); var parameter = listStr.ToArray(); var tb = SQLHelper.GetDataTableRunText(listSql, parameter); var tbNum = tb.Rows.Count; var pageNum = tbNum < 25 ? 1 : Math.Ceiling((float)(tbNum - 25) / 32) + 1; #region 样式 //头部样式大文字居中文字加粗 ICellStyle titleMaxBoldStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //头部样式大文字居中文字加粗上左右边框 ICellStyle titleSZYMaxBoldStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //头部样式居中无边框 ICellStyle titNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式靠右无边框 ICellStyle titriNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式靠左无边框 ICellStyle titleNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠左上左右边框 ICellStyle titleSZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式居中上左右边框 ICellStyle titleSZYCerateStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式靠左下左右边框 ICellStyle titleXZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠右下左右边框 ICellStyle titleXZYRightStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式靠左左右边框 ICellStyle titleZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠右左右边框 ICellStyle titleZYRightStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式居中左右边框 ICellStyle titleZYCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式居中 ICellStyle titleStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //公共样式 ICellStyle style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //页码样式 ICellStyle pageStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 7, true); //文字靠左 ICellStyle leftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); #endregion //循环页 for (int i = 1; i <= pageNum; i++) { #region 头部 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex, rowIndex, 0, 29, 25); ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 1, rowIndex + 3, 0, 29); //行1 var region = new CellRangeAddress(rowIndex, rowIndex + 3, 0, 3); ws.AddMergedRegion(region); var reportCode = i == 1 ? "SH/T 3503—J351-1" : "SH/T 3503—J351-2"; ws.GetRow(rowIndex).GetCell(0).SetCellValue(reportCode); ws.GetRow(rowIndex).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex, rowIndex, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(4).SetCellValue("设备及构件"); ws.GetRow(rowIndex).GetCell(4).CellStyle = ws.GetRow(rowIndex).GetCell(5).CellStyle = ws.GetRow(rowIndex).GetCell(6).CellStyle = ws.GetRow(rowIndex).GetCell(7).CellStyle = ws.GetRow(rowIndex).GetCell(8).CellStyle = ws.GetRow(rowIndex).GetCell(9).CellStyle = ws.GetRow(rowIndex).GetCell(10).CellStyle = ws.GetRow(rowIndex).GetCell(11).CellStyle = ws.GetRow(rowIndex).GetCell(12).CellStyle = ws.GetRow(rowIndex).GetCell(13).CellStyle = ws.GetRow(rowIndex).GetCell(14).CellStyle = ws.GetRow(rowIndex).GetCell(15).CellStyle = ws.GetRow(rowIndex).GetCell(16).CellStyle = ws.GetRow(rowIndex).GetCell(17).CellStyle = ws.GetRow(rowIndex).GetCell(18).CellStyle = ws.GetRow(rowIndex).GetCell(19).CellStyle = titleSZYMaxBoldStyle; region = new CellRangeAddress(rowIndex, rowIndex, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(20).SetCellValue($"工程名称:{titleModel.ProjectName}"); ws.GetRow(rowIndex).GetCell(20).CellStyle = ws.GetRow(rowIndex).GetCell(21).CellStyle = ws.GetRow(rowIndex).GetCell(22).CellStyle = ws.GetRow(rowIndex).GetCell(23).CellStyle = ws.GetRow(rowIndex).GetCell(24).CellStyle = ws.GetRow(rowIndex).GetCell(25).CellStyle = ws.GetRow(rowIndex).GetCell(26).CellStyle = ws.GetRow(rowIndex).GetCell(27).CellStyle = ws.GetRow(rowIndex).GetCell(28).CellStyle = ws.GetRow(rowIndex).GetCell(29).CellStyle = titleSZYLeftStyle; //行2 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 4, 19); ws.AddMergedRegion(region); var reportName = i == 1 ? "焊缝磁粉检测报告" : "焊缝磁粉检测报告(续)"; ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue(reportName); ws.GetRow(rowIndex + 1).GetCell(4).CellStyle = ws.GetRow(rowIndex + 1).GetCell(5).CellStyle = ws.GetRow(rowIndex + 1).GetCell(6).CellStyle = ws.GetRow(rowIndex + 1).GetCell(7).CellStyle = ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = ws.GetRow(rowIndex + 1).GetCell(9).CellStyle = ws.GetRow(rowIndex + 1).GetCell(10).CellStyle = ws.GetRow(rowIndex + 1).GetCell(11).CellStyle = ws.GetRow(rowIndex + 1).GetCell(12).CellStyle = ws.GetRow(rowIndex + 1).GetCell(13).CellStyle = ws.GetRow(rowIndex + 1).GetCell(14).CellStyle = ws.GetRow(rowIndex + 1).GetCell(15).CellStyle = ws.GetRow(rowIndex + 1).GetCell(16).CellStyle = ws.GetRow(rowIndex + 1).GetCell(17).CellStyle = ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = ws.GetRow(rowIndex + 1).GetCell(19).CellStyle = titleMaxBoldStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(20).SetCellValue(""); ws.GetRow(rowIndex + 1).GetCell(20).CellStyle = ws.GetRow(rowIndex + 1).GetCell(21).CellStyle = ws.GetRow(rowIndex + 1).GetCell(22).CellStyle = ws.GetRow(rowIndex + 1).GetCell(23).CellStyle = ws.GetRow(rowIndex + 1).GetCell(24).CellStyle = ws.GetRow(rowIndex + 1).GetCell(25).CellStyle = ws.GetRow(rowIndex + 1).GetCell(26).CellStyle = ws.GetRow(rowIndex + 1).GetCell(27).CellStyle = ws.GetRow(rowIndex + 1).GetCell(28).CellStyle = ws.GetRow(rowIndex + 1).GetCell(29).CellStyle = titleZYLeftStyle; //行3 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(4).SetCellValue($"第 {i} 页共 {pageNum} 页"); ws.GetRow(rowIndex + 2).GetCell(4).CellStyle = ws.GetRow(rowIndex + 2).GetCell(5).CellStyle = ws.GetRow(rowIndex + 2).GetCell(6).CellStyle = ws.GetRow(rowIndex + 2).GetCell(7).CellStyle = ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = ws.GetRow(rowIndex + 2).GetCell(9).CellStyle = ws.GetRow(rowIndex + 2).GetCell(10).CellStyle = ws.GetRow(rowIndex + 2).GetCell(11).CellStyle = ws.GetRow(rowIndex + 2).GetCell(12).CellStyle = ws.GetRow(rowIndex + 2).GetCell(13).CellStyle = ws.GetRow(rowIndex + 2).GetCell(14).CellStyle = ws.GetRow(rowIndex + 2).GetCell(15).CellStyle = ws.GetRow(rowIndex + 2).GetCell(16).CellStyle = ws.GetRow(rowIndex + 2).GetCell(17).CellStyle = ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = ws.GetRow(rowIndex + 2).GetCell(19).CellStyle = titleZYCenterStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(20).SetCellValue($"单位工程名称:{titleModel.InstallationName}"); ws.GetRow(rowIndex + 2).GetCell(20).CellStyle = ws.GetRow(rowIndex + 2).GetCell(21).CellStyle = ws.GetRow(rowIndex + 2).GetCell(22).CellStyle = ws.GetRow(rowIndex + 2).GetCell(23).CellStyle = ws.GetRow(rowIndex + 2).GetCell(24).CellStyle = ws.GetRow(rowIndex + 2).GetCell(25).CellStyle = ws.GetRow(rowIndex + 2).GetCell(26).CellStyle = ws.GetRow(rowIndex + 2).GetCell(27).CellStyle = ws.GetRow(rowIndex + 2).GetCell(28).CellStyle = ws.GetRow(rowIndex + 2).GetCell(29).CellStyle = titleZYLeftStyle; //行4 region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue(""); ws.GetRow(rowIndex + 3).GetCell(4).CellStyle = ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = ws.GetRow(rowIndex + 3).GetCell(6).CellStyle = ws.GetRow(rowIndex + 3).GetCell(7).CellStyle = ws.GetRow(rowIndex + 3).GetCell(8).CellStyle = ws.GetRow(rowIndex + 3).GetCell(9).CellStyle = ws.GetRow(rowIndex + 3).GetCell(10).CellStyle = ws.GetRow(rowIndex + 3).GetCell(11).CellStyle = ws.GetRow(rowIndex + 3).GetCell(12).CellStyle = ws.GetRow(rowIndex + 3).GetCell(13).CellStyle = ws.GetRow(rowIndex + 3).GetCell(14).CellStyle = ws.GetRow(rowIndex + 3).GetCell(15).CellStyle = ws.GetRow(rowIndex + 3).GetCell(16).CellStyle = ws.GetRow(rowIndex + 3).GetCell(17).CellStyle = ws.GetRow(rowIndex + 3).GetCell(18).CellStyle = ws.GetRow(rowIndex + 3).GetCell(19).CellStyle = titleZYCenterStyle; region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(20).SetCellValue(""); ws.GetRow(rowIndex + 3).GetCell(20).CellStyle = ws.GetRow(rowIndex + 3).GetCell(21).CellStyle = ws.GetRow(rowIndex + 3).GetCell(22).CellStyle = ws.GetRow(rowIndex + 3).GetCell(23).CellStyle = ws.GetRow(rowIndex + 3).GetCell(24).CellStyle = ws.GetRow(rowIndex + 3).GetCell(25).CellStyle = ws.GetRow(rowIndex + 3).GetCell(26).CellStyle = ws.GetRow(rowIndex + 3).GetCell(27).CellStyle = ws.GetRow(rowIndex + 3).GetCell(28).CellStyle = ws.GetRow(rowIndex + 3).GetCell(29).CellStyle = titleZYLeftStyle; //行5 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 4, rowIndex + 4, 0, 29); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("委托单位"); ws.GetRow(rowIndex + 4).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 1, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue(titleModel.UnitName); ws.GetRow(rowIndex + 4).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 8, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(8).SetCellValue("施工单位"); ws.GetRow(rowIndex + 4).GetCell(8).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 11, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(11).SetCellValue("镇海石化建安工程股份有限公司"); ws.GetRow(rowIndex + 4).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 21, 25); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(21).SetCellValue("报告编号"); ws.GetRow(rowIndex + 4).GetCell(21).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 26, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(26).SetCellValue(titleModel.ReportCode); ws.GetRow(rowIndex + 4).GetCell(26).CellStyle = titleStyle; if (i == 1) { ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 5, rowIndex + 12, 0, 29); //行6 region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检件编号"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue(titleModel.WeldingCode); ws.GetRow(rowIndex + 5).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("检件名称"); ws.GetRow(rowIndex + 5).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(11).SetCellValue(titleModel.WeldingCode); ws.GetRow(rowIndex + 5).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(15).SetCellValue("检测标准"); ws.GetRow(rowIndex + 5).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(19).SetCellValue(titleModel.Ndt_TestStandardCode); ws.GetRow(rowIndex + 5).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(24).SetCellValue("合格级别"); ws.GetRow(rowIndex + 5).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(27).SetCellValue(titleModel.Ndt_Level); ws.GetRow(rowIndex + 5).GetCell(27).CellStyle = titleStyle; //行7 region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("检件材质"); ws.GetRow(rowIndex + 6).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(3).SetCellValue(titleModel.STE_Code); ws.GetRow(rowIndex + 6).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(6).SetCellValue("焊接方法"); ws.GetRow(rowIndex + 6).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(11).SetCellValue(titleModel.WME_Name); ws.GetRow(rowIndex + 6).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(15).SetCellValue("检测比例"); ws.GetRow(rowIndex + 6).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(19).SetCellValue(titleModel.Ndt_NdtName); ws.GetRow(rowIndex + 6).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(24).SetCellValue("热处理状态"); ws.GetRow(rowIndex + 6).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(27).SetCellValue(titleModel.HotProessState); ws.GetRow(rowIndex + 6).GetCell(27).CellStyle = titleStyle; //行8 region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("检测时机"); ws.GetRow(rowIndex + 7).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(3).SetCellValue(titleModel.TestingTime); ws.GetRow(rowIndex + 7).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(6).SetCellValue("表面状态"); ws.GetRow(rowIndex + 7).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(11).SetCellValue(titleModel.MT_SurfaceState); ws.GetRow(rowIndex + 7).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(15).SetCellValue("电流类型"); ws.GetRow(rowIndex + 7).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(19).SetCellValue(titleModel.MT_CurrentType); ws.GetRow(rowIndex + 7).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(24).SetCellValue("磁化方法"); ws.GetRow(rowIndex + 7).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(27).SetCellValue(titleModel.MT_TestMethod); ws.GetRow(rowIndex + 7).GetCell(27).CellStyle = titleStyle; //行9 region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("设备型号"); ws.GetRow(rowIndex + 8).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(3).SetCellValue(titleModel.UT_EquipmentCode); ws.GetRow(rowIndex + 8).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(6).SetCellValue("电/磁极间距"); ws.GetRow(rowIndex + 8).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(11).SetCellValue(titleModel.PoleSpacing); ws.GetRow(rowIndex + 8).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(15).SetCellValue("提升力/电流"); ws.GetRow(rowIndex + 8).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(19).SetCellValue(titleModel.MT_LiftingPower); ws.GetRow(rowIndex + 8).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(24).SetCellValue("磁化时间"); ws.GetRow(rowIndex + 8).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(27).SetCellValue(titleModel.MT_MagnetizationTime); ws.GetRow(rowIndex + 8).GetCell(27).CellStyle = titleStyle; //行10 region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("磁粉种类"); ws.GetRow(rowIndex + 9).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(3).SetCellValue(titleModel.MT_MagneticPowderType); ws.GetRow(rowIndex + 9).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(6).SetCellValue("磁悬液浓度"); ws.GetRow(rowIndex + 9).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(11).SetCellValue(titleModel.MT_Concentration); ws.GetRow(rowIndex + 9).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(15).SetCellValue("施加方法"); ws.GetRow(rowIndex + 9).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(19).SetCellValue(titleModel.MT_ImposingMethod); ws.GetRow(rowIndex + 9).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(24).SetCellValue("灵敏度试片"); ws.GetRow(rowIndex + 9).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(27).SetCellValue(titleModel.MT_SensitivityTestBlock); ws.GetRow(rowIndex + 9).GetCell(27).CellStyle = titleStyle; rowIndex += 5; } //行14 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 5, rowIndex + 5, 0, 29); region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检测批号"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue("焊缝编号"); ws.GetRow(rowIndex + 5).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("焊工号"); ws.GetRow(rowIndex + 5).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(11).SetCellValue("焊缝规格"); ws.GetRow(rowIndex + 5).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 15, 17); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(15).SetCellValue("检测面"); ws.GetRow(rowIndex + 5).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 18, 24); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(18).SetCellValue("缺陷情况或缺陷示意图编号"); ws.GetRow(rowIndex + 5).GetCell(18).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 25, 27); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(25).SetCellValue("评定级别"); ws.GetRow(rowIndex + 5).GetCell(25).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 28, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(28).SetCellValue("备注"); ws.GetRow(rowIndex + 5).GetCell(28).CellStyle = titleStyle; #endregion #region 表格 var dataTit = rowIndex + 6; var tIndex = i == 1 ? 30 : 37; ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, dataTit, rowIndex + tIndex, 0, 29); //每页数据开始和结束条数 var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 25; } else { dStart = i == 2 ? 25 : ((i - 2) * 32) + 25; dEnd = ((i - 1) * 32) + 25; } //合并单元格 for (int hb = rowIndex + 6; hb <= rowIndex + tIndex; hb++) { region = new CellRangeAddress(hb, hb, 0, 2); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 3, 5); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 6, 10); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 11, 14); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 15, 17); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 18, 24); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 25, 27); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 28, 29); ws.AddMergedRegion(region); } //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); //数据 for (int j = 0; j < pageTb.Rows.Count; j++) { int dataIndex = dataTit + j; //检测批号 ws.GetRow(dataIndex).GetCell(0).SetCellValue(pageTb.Rows[j]["EntrustCode"].ToString()); //焊缝编号 ws.GetRow(dataIndex).GetCell(3).SetCellValue(pageTb.Rows[j]["WeldingCode"].ToString()); //焊工号 ws.GetRow(dataIndex).GetCell(6).SetCellValue(pageTb.Rows[j]["WED_Code"].ToString()); //焊缝规格 ws.GetRow(dataIndex).GetCell(9).SetCellValue(pageTb.Rows[j]["JointDesc"].ToString()); //检测面 ws.GetRow(dataIndex).GetCell(12).SetCellValue(""); //缺陷情况或缺陷示意图编号 ws.GetRow(dataIndex).GetCell(15).SetCellValue(pageTb.Rows[j]["FilmNum"].ToString()); //评定级别 ws.GetRow(dataIndex).GetCell(19).SetCellValue(pageTb.Rows[j]["DefectResult"].ToString()); //备注 ws.GetRow(dataIndex).GetCell(24).SetCellValue(pageTb.Rows[j]["Remark"].ToString()); } rowIndex = rowIndex + tIndex; #endregion #region 尾部 if (i == 1) { ws = ExcelCreateRowTitle(ws, hssfworkbook, titleSZYLeftStyle, rowIndex + 1, rowIndex + 1, 0, 29); //尾部行1 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 0, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue("检测人:"); ws.GetRow(rowIndex + 1).GetCell(0).CellStyle = titleSZYLeftStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 8, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(8).SetCellValue("审核人:"); ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = titleSZYLeftStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(20).SetCellValue("检测单位:(公章)"); ws.GetRow(rowIndex + 1).GetCell(20).CellStyle = titleSZYLeftStyle; //尾部行2 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleXZYLeftStyle, rowIndex + 2, rowIndex + 2, 0, 29); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 0, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("资格: MT 级"); ws.GetRow(rowIndex + 2).GetCell(0).CellStyle = titleXZYLeftStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 8, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(8).SetCellValue("资格: MT 级"); ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = titleXZYLeftStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(18).SetCellValue("报告日期: 年 月 日"); ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = titleXZYLeftStyle; ws.CreateRow(rowIndex + 3); ws.GetRow(rowIndex + 3).HeightInPoints = 19; rowIndex = rowIndex + 3; } else { rowIndex = rowIndex + 1; } #endregion } //ws.SetMargin(MarginType.LeftMargin, 0.3); //ws.SetMargin(MarginType.RightMargin, 0.2); //ws.SetMargin(MarginType.BottomMargin, 0.2); //ws.SetMargin(MarginType.TopMargin, 0.2); //ws.SetMargin(MarginType.FooterMargin, 0.3); //ws.SetMargin(MarginType.HeaderMargin, 0.3); ws.PrintSetup.Landscape = false; ws.PrintSetup.PaperSize = 9; ws.ForceFormulaRecalculation = true; using (FileStream filess = File.OpenWrite(ReportFileName)) { hssfworkbook.Write(filess); } FileInfo filet = new FileInfo(ReportFileName); Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF8; // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("焊缝磁粉检测报告.xlsx")); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", filet.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(filet.FullName); // 停止页面的执行 Response.End(); } #endregion } else if (ndtCode.Contains("UT") || ndtCode.Contains("TOFD") || ndtCode.Contains("PAUT")) { #region 超声波检测 if (string.IsNullOrWhiteSpace(this.tvControlItem.SelectedNodeID)) { Alert.ShowInTop("请选择检测报告!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/") + Const.ExcelUrl; //导出文件 string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string ReportFileName = filePath + "焊缝超声检测报告.xlsx"; if (Grid1.Rows.Count > 0) { int rowIndex = 0; XSSFWorkbook hssfworkbook = new XSSFWorkbook(); XSSFSheet ws = (XSSFSheet)hssfworkbook.CreateSheet("焊缝超声检测报告"); #region 列宽 ws.SetColumnWidth(0, (8 * 256)); ws.SetColumnWidth(1, (4 * 256)); ws.SetColumnWidth(2, (4 * 256)); ws.SetColumnWidth(3, (2 * 256)); ws.SetColumnWidth(4, (2 * 256)); ws.SetColumnWidth(5, (3 * 256)); ws.SetColumnWidth(6, (2 * 256)); ws.SetColumnWidth(7, (2 * 256)); ws.SetColumnWidth(8, (4 * 256)); ws.SetColumnWidth(9, (2 * 256)); ws.SetColumnWidth(10, (3 * 256)); ws.SetColumnWidth(11, (3 * 256)); ws.SetColumnWidth(12, (3 * 256)); ws.SetColumnWidth(13, (3 * 256)); ws.SetColumnWidth(14, (2 * 256)); ws.SetColumnWidth(15, (3 * 256)); ws.SetColumnWidth(16, (2 * 256)); ws.SetColumnWidth(17, (2 * 256)); ws.SetColumnWidth(18, (2 * 256)); ws.SetColumnWidth(19, (2 * 256)); ws.SetColumnWidth(20, (2 * 256)); ws.SetColumnWidth(21, (2 * 256)); ws.SetColumnWidth(22, (3 * 256)); ws.SetColumnWidth(23, (3 * 256)); ws.SetColumnWidth(24, (3 * 256)); ws.SetColumnWidth(25, (2 * 256)); ws.SetColumnWidth(26, (3 * 256)); ws.SetColumnWidth(27, (3 * 256)); ws.SetColumnWidth(28, (3 * 256)); ws.SetColumnWidth(29, (3 * 256)); #endregion //修改数据 reportModel.Printer = this.CurrUser.UserName; reportModel.PrintTime = DateTime.Now.Date; Funs.DB.SubmitChanges(); //列头数据 var titleModel = Funs.DB.View_TestingReportPrint.FirstOrDefault(s => s.WeldingId == reportModel.WeldingId && s.Specifications == reportModel.Specifications && s.NdtId == reportModel.NdtId && s.EntrustId == reportModel.EntrustId && s.STE_ID == reportModel.STE_ID && s.STE_ID2 == reportModel.STE_ID2 && s.WME_ID == reportModel.WME_ID); if (titleModel is null) { Alert.ShowInTop("请编辑检测报告!", MessageBoxIcon.Warning); return; } //列表 var listSql = @"SELECT QualityRating.QualityRatingId, QualityRating.MethodId, QualityRating.WeldingId, test.Ndt_NdtCode, JointInfo.JointDesc, JointInfo.WeldingCode, QualityRating.FilmNum, (select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(JointInfo.BackingWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a)+','+(select a.pkidStr from (SELECT STUFF(( SELECT ',' +convert(VARCHAR, WED_Code) FROM (select Welder.WED_Code from HJGL_BS_Welder as Welder where Welder.WED_ID in (select Id from StrToTable(JointInfo.CoverWelderId)))t FOR XML PATH('')), 1, 1, '') AS pkidStr) a) as WED_Code, QualityRating.DefectNature, QualityRating.DefectSize, QualityRating.DefectResult, trust.EntrustCode, QualityRating.Remark FROM dbo.PV_BO_QualityRating AS QualityRating left join PV_ManagementMethod as record on record.MethodId=QualityRating.MethodId LEFT JOIN dbo.PV_EntrustRecord trust ON trust.Id = record.EntrustId LEFT JOIN DBO.PV_WeldInformation AS JointInfo ON JointInfo.WeldingId=QualityRating.WeldingId left join PV_TestMethod as test on test.Ndt_Id=trust.NdtId WHERE QualityRating.WeldingId=@WeldingId AND JointInfo.JointDesc=@JointDesc AND JointInfo.TextureMaterial1=@STE_ID AND (JointInfo.TextureMaterial2=@STE_ID2 or @STE_ID2='') AND JointInfo.WmeId=@WME_ID AND trust.NdtId = @NDT AND trust.Id=@EntrustId"; List listStr = new List(); listStr.Add(new SqlParameter("@WeldingId", reportModel.WeldingId)); listStr.Add(new SqlParameter("@JointDesc", reportModel.Specifications)); listStr.Add(new SqlParameter("@STE_ID", reportModel.STE_ID)); listStr.Add(new SqlParameter("@STE_ID2", reportModel.STE_ID2)); listStr.Add(new SqlParameter("@WME_ID", reportModel.WME_ID)); listStr.Add(new SqlParameter("@NDT", reportModel.NdtId)); listStr.Add(new SqlParameter("@EntrustId", reportModel.EntrustId)); var parameter = listStr.ToArray(); var tb = SQLHelper.GetDataTableRunText(listSql, parameter); var tbNum = tb.Rows.Count; var pageNum = tbNum < 22 ? 1 : Math.Ceiling((float)(tbNum - 22) / 32) + 1; #region 样式 //头部样式大文字居中文字加粗 ICellStyle titleMaxBoldStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //头部样式大文字居中文字加粗上左右边框 ICellStyle titleSZYMaxBoldStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //头部样式居中无边框 ICellStyle titNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式靠右无边框 ICellStyle titriNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式靠左无边框 ICellStyle titleNbCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠左上左右边框 ICellStyle titleSZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式居中上左右边框 ICellStyle titleSZYCerateStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式靠左下左右边框 ICellStyle titleXZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠右下左右边框 ICellStyle titleXZYRightStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式靠左左右边框 ICellStyle titleZYLeftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 9, true); //头部样式靠右左右边框 ICellStyle titleZYRightStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 9, true); //头部样式居中左右边框 ICellStyle titleZYCenterStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //头部样式居中 ICellStyle titleStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true); //公共样式 ICellStyle style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10, true); //页码样式 ICellStyle pageStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 7, true); //文字靠左 ICellStyle leftStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 10, true); #endregion //循环页 for (int i = 1; i <= pageNum; i++) { #region 头部 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex, rowIndex, 0, 29, 25); ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 1, rowIndex + 3, 0, 29); //行1 var region = new CellRangeAddress(rowIndex, rowIndex + 3, 0, 3); ws.AddMergedRegion(region); var reportCode = i == 1 ? "SH/T 3503—J350-1" : "SH/T 3503—J350-2"; ws.GetRow(rowIndex).GetCell(0).SetCellValue(reportCode); ws.GetRow(rowIndex).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex, rowIndex, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(4).SetCellValue("设备及构件"); ws.GetRow(rowIndex).GetCell(4).CellStyle = ws.GetRow(rowIndex).GetCell(5).CellStyle = ws.GetRow(rowIndex).GetCell(6).CellStyle = ws.GetRow(rowIndex).GetCell(7).CellStyle = ws.GetRow(rowIndex).GetCell(8).CellStyle = ws.GetRow(rowIndex).GetCell(9).CellStyle = ws.GetRow(rowIndex).GetCell(10).CellStyle = ws.GetRow(rowIndex).GetCell(11).CellStyle = ws.GetRow(rowIndex).GetCell(12).CellStyle = ws.GetRow(rowIndex).GetCell(13).CellStyle = ws.GetRow(rowIndex).GetCell(14).CellStyle = ws.GetRow(rowIndex).GetCell(15).CellStyle = ws.GetRow(rowIndex).GetCell(16).CellStyle = ws.GetRow(rowIndex).GetCell(17).CellStyle = ws.GetRow(rowIndex).GetCell(18).CellStyle = ws.GetRow(rowIndex).GetCell(19).CellStyle = titleSZYMaxBoldStyle; region = new CellRangeAddress(rowIndex, rowIndex, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(20).SetCellValue($"工程名称:{titleModel.ProjectName}"); ws.GetRow(rowIndex).GetCell(20).CellStyle = ws.GetRow(rowIndex).GetCell(21).CellStyle = ws.GetRow(rowIndex).GetCell(22).CellStyle = ws.GetRow(rowIndex).GetCell(23).CellStyle = ws.GetRow(rowIndex).GetCell(24).CellStyle = ws.GetRow(rowIndex).GetCell(25).CellStyle = ws.GetRow(rowIndex).GetCell(26).CellStyle = ws.GetRow(rowIndex).GetCell(27).CellStyle = ws.GetRow(rowIndex).GetCell(28).CellStyle = ws.GetRow(rowIndex).GetCell(29).CellStyle = titleSZYLeftStyle; //行2 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 4, 19); ws.AddMergedRegion(region); var reportName = i == 1 ? "焊缝超声检测报告" : "焊缝超声检测报告(续)"; ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue(reportName); ws.GetRow(rowIndex + 1).GetCell(4).CellStyle = ws.GetRow(rowIndex + 1).GetCell(5).CellStyle = ws.GetRow(rowIndex + 1).GetCell(6).CellStyle = ws.GetRow(rowIndex + 1).GetCell(7).CellStyle = ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = ws.GetRow(rowIndex + 1).GetCell(9).CellStyle = ws.GetRow(rowIndex + 1).GetCell(10).CellStyle = ws.GetRow(rowIndex + 1).GetCell(11).CellStyle = ws.GetRow(rowIndex + 1).GetCell(12).CellStyle = ws.GetRow(rowIndex + 1).GetCell(13).CellStyle = ws.GetRow(rowIndex + 1).GetCell(14).CellStyle = ws.GetRow(rowIndex + 1).GetCell(15).CellStyle = ws.GetRow(rowIndex + 1).GetCell(16).CellStyle = ws.GetRow(rowIndex + 1).GetCell(17).CellStyle = ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = ws.GetRow(rowIndex + 1).GetCell(19).CellStyle = titleMaxBoldStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(20).SetCellValue(""); ws.GetRow(rowIndex + 1).GetCell(20).CellStyle = ws.GetRow(rowIndex + 1).GetCell(21).CellStyle = ws.GetRow(rowIndex + 1).GetCell(22).CellStyle = ws.GetRow(rowIndex + 1).GetCell(23).CellStyle = ws.GetRow(rowIndex + 1).GetCell(24).CellStyle = ws.GetRow(rowIndex + 1).GetCell(25).CellStyle = ws.GetRow(rowIndex + 1).GetCell(26).CellStyle = ws.GetRow(rowIndex + 1).GetCell(27).CellStyle = ws.GetRow(rowIndex + 1).GetCell(28).CellStyle = ws.GetRow(rowIndex + 1).GetCell(29).CellStyle = titleZYLeftStyle; //行3 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(4).SetCellValue($"第 {i} 页共 {pageNum} 页"); ws.GetRow(rowIndex + 2).GetCell(4).CellStyle = ws.GetRow(rowIndex + 2).GetCell(5).CellStyle = ws.GetRow(rowIndex + 2).GetCell(6).CellStyle = ws.GetRow(rowIndex + 2).GetCell(7).CellStyle = ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = ws.GetRow(rowIndex + 2).GetCell(9).CellStyle = ws.GetRow(rowIndex + 2).GetCell(10).CellStyle = ws.GetRow(rowIndex + 2).GetCell(11).CellStyle = ws.GetRow(rowIndex + 2).GetCell(12).CellStyle = ws.GetRow(rowIndex + 2).GetCell(13).CellStyle = ws.GetRow(rowIndex + 2).GetCell(14).CellStyle = ws.GetRow(rowIndex + 2).GetCell(15).CellStyle = ws.GetRow(rowIndex + 2).GetCell(16).CellStyle = ws.GetRow(rowIndex + 2).GetCell(17).CellStyle = ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = ws.GetRow(rowIndex + 2).GetCell(19).CellStyle = titleZYCenterStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(20).SetCellValue($"单位工程名称:{titleModel.InstallationName}"); ws.GetRow(rowIndex + 2).GetCell(20).CellStyle = ws.GetRow(rowIndex + 2).GetCell(21).CellStyle = ws.GetRow(rowIndex + 2).GetCell(22).CellStyle = ws.GetRow(rowIndex + 2).GetCell(23).CellStyle = ws.GetRow(rowIndex + 2).GetCell(24).CellStyle = ws.GetRow(rowIndex + 2).GetCell(25).CellStyle = ws.GetRow(rowIndex + 2).GetCell(26).CellStyle = ws.GetRow(rowIndex + 2).GetCell(27).CellStyle = ws.GetRow(rowIndex + 2).GetCell(28).CellStyle = ws.GetRow(rowIndex + 2).GetCell(29).CellStyle = titleZYLeftStyle; //行4 region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 4, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue(""); ws.GetRow(rowIndex + 3).GetCell(4).CellStyle = ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = ws.GetRow(rowIndex + 3).GetCell(6).CellStyle = ws.GetRow(rowIndex + 3).GetCell(7).CellStyle = ws.GetRow(rowIndex + 3).GetCell(8).CellStyle = ws.GetRow(rowIndex + 3).GetCell(9).CellStyle = ws.GetRow(rowIndex + 3).GetCell(10).CellStyle = ws.GetRow(rowIndex + 3).GetCell(11).CellStyle = ws.GetRow(rowIndex + 3).GetCell(12).CellStyle = ws.GetRow(rowIndex + 3).GetCell(13).CellStyle = ws.GetRow(rowIndex + 3).GetCell(14).CellStyle = ws.GetRow(rowIndex + 3).GetCell(15).CellStyle = ws.GetRow(rowIndex + 3).GetCell(16).CellStyle = ws.GetRow(rowIndex + 3).GetCell(17).CellStyle = ws.GetRow(rowIndex + 3).GetCell(18).CellStyle = ws.GetRow(rowIndex + 3).GetCell(19).CellStyle = titleZYCenterStyle; region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(20).SetCellValue(""); ws.GetRow(rowIndex + 3).GetCell(20).CellStyle = ws.GetRow(rowIndex + 3).GetCell(21).CellStyle = ws.GetRow(rowIndex + 3).GetCell(22).CellStyle = ws.GetRow(rowIndex + 3).GetCell(23).CellStyle = ws.GetRow(rowIndex + 3).GetCell(24).CellStyle = ws.GetRow(rowIndex + 3).GetCell(25).CellStyle = ws.GetRow(rowIndex + 3).GetCell(26).CellStyle = ws.GetRow(rowIndex + 3).GetCell(27).CellStyle = ws.GetRow(rowIndex + 3).GetCell(28).CellStyle = ws.GetRow(rowIndex + 3).GetCell(29).CellStyle = titleZYLeftStyle; //行5 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 4, rowIndex + 4, 0, 29); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("委托单位"); ws.GetRow(rowIndex + 4).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 1, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue(titleModel.UnitName); ws.GetRow(rowIndex + 4).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 8, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(8).SetCellValue("施工单位"); ws.GetRow(rowIndex + 4).GetCell(8).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 11, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(11).SetCellValue("镇海石化建安工程股份有限公司"); ws.GetRow(rowIndex + 4).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 21, 25); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(21).SetCellValue("报告编号"); ws.GetRow(rowIndex + 4).GetCell(21).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 26, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(26).SetCellValue(titleModel.ReportCode); ws.GetRow(rowIndex + 4).GetCell(26).CellStyle = titleStyle; if (i == 1) { ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 5, rowIndex + 12, 0, 29); //行6 region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检件编号"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue(titleModel.WeldingCode); ws.GetRow(rowIndex + 5).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("检件名称"); ws.GetRow(rowIndex + 5).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(11).SetCellValue(titleModel.WeldingCode); ws.GetRow(rowIndex + 5).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(15).SetCellValue("检测标准"); ws.GetRow(rowIndex + 5).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(19).SetCellValue(titleModel.Ndt_TestStandardCode); ws.GetRow(rowIndex + 5).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(24).SetCellValue("合格级别"); ws.GetRow(rowIndex + 5).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(27).SetCellValue(titleModel.Ndt_Level); ws.GetRow(rowIndex + 5).GetCell(27).CellStyle = titleStyle; //行7 region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("检件材质"); ws.GetRow(rowIndex + 6).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(3).SetCellValue(titleModel.STE_Code); ws.GetRow(rowIndex + 6).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(6).SetCellValue("焊接方法"); ws.GetRow(rowIndex + 6).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(11).SetCellValue(titleModel.WME_Name); ws.GetRow(rowIndex + 6).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(15).SetCellValue("技术等级"); ws.GetRow(rowIndex + 6).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(19).SetCellValue(titleModel.UT_TechnicalGrade); ws.GetRow(rowIndex + 6).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(24).SetCellValue("检测比例"); ws.GetRow(rowIndex + 6).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(27).SetCellValue(titleModel.Ndt_NdtName); ws.GetRow(rowIndex + 6).GetCell(27).CellStyle = titleStyle; //行8 region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("检测时机"); ws.GetRow(rowIndex + 7).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(3).SetCellValue(titleModel.TestingTime); ws.GetRow(rowIndex + 7).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(6).SetCellValue("坡口形式"); ws.GetRow(rowIndex + 7).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(11).SetCellValue(titleModel.JST_Name); ws.GetRow(rowIndex + 7).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 15, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(15).SetCellValue("耦合剂"); ws.GetRow(rowIndex + 7).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 19, 23); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(19).SetCellValue(titleModel.UT_CouplingAgent); ws.GetRow(rowIndex + 7).GetCell(19).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 24, 26); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(24).SetCellValue("检测灵敏度"); ws.GetRow(rowIndex + 7).GetCell(24).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 27, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(27).SetCellValue(titleModel.UT_DetectionSensitivity); ws.GetRow(rowIndex + 7).GetCell(27).CellStyle = titleStyle; //行9 region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 0, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("探头"); ws.GetRow(rowIndex + 8).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 4, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(4).SetCellValue("试块"); ws.GetRow(rowIndex + 8).GetCell(4).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 14, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(14).SetCellValue("检测面"); ws.GetRow(rowIndex + 8).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 17, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(17).SetCellValue("设备型号"); ws.GetRow(rowIndex + 8).GetCell(17).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 22, 25); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(22).SetCellValue("表面状态"); ws.GetRow(rowIndex + 8).GetCell(22).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 26, 28); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(26).SetCellValue("表面补偿"); ws.GetRow(rowIndex + 8).GetCell(26).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 8, rowIndex + 9, 29, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(29).SetCellValue("扫描比例"); ws.GetRow(rowIndex + 8).GetCell(29).CellStyle = titleStyle; //行10 ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("序号"); ws.GetRow(rowIndex + 9).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 1, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(1).SetCellValue("型号"); ws.GetRow(rowIndex + 9).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 4, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(4).SetCellValue("型号1"); ws.GetRow(rowIndex + 9).GetCell(4).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 10, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(10).SetCellValue("型号2"); ws.GetRow(rowIndex + 9).GetCell(10).CellStyle = titleStyle; //行11 ws.GetRow(rowIndex + 10).GetCell(0).SetCellValue(1); ws.GetRow(rowIndex + 10).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 1, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(1).SetCellValue(titleModel.UT_ProbeType); ws.GetRow(rowIndex + 10).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 4, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(4).SetCellValue(titleModel.UT_StandardTestBlock); ws.GetRow(rowIndex + 10).GetCell(4).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 10, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(10).SetCellValue(titleModel.UT_StandardTestBlock2); ws.GetRow(rowIndex + 10).GetCell(10).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 14, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(14).SetCellValue(titleModel.UT_DetectionSurface); ws.GetRow(rowIndex + 10).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 17, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(17).SetCellValue(titleModel.UT_EquipmentCode); ws.GetRow(rowIndex + 10).GetCell(17).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 22, 25); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(22).SetCellValue(titleModel.UT_SurfaceState); ws.GetRow(rowIndex + 10).GetCell(22).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 10, rowIndex + 10, 26, 28); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 10).GetCell(26).SetCellValue(titleModel.UT_SurfaceCompensation); ws.GetRow(rowIndex + 10).GetCell(26).CellStyle = titleStyle; ws.GetRow(rowIndex + 10).GetCell(29).SetCellValue(titleModel.UT_ScanningRate); ws.GetRow(rowIndex + 10).GetCell(29).CellStyle = titleStyle; //行12 ws.GetRow(rowIndex + 11).GetCell(0).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 1, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(1).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 4, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(4).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(4).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 10, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(10).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(10).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 14, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(14).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 17, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(17).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(17).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 22, 25); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(22).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(22).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 11, rowIndex + 11, 26, 28); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 11).GetCell(26).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(26).CellStyle = titleStyle; ws.GetRow(rowIndex + 11).GetCell(29).SetCellValue(""); ws.GetRow(rowIndex + 11).GetCell(29).CellStyle = titleStyle; //行13 ws.GetRow(rowIndex + 12).GetCell(0).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 1, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(1).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(1).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 4, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(4).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(4).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 10, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(10).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(10).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 14, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(14).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(14).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 17, 21); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(17).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(17).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 22, 25); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(22).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(22).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 12, rowIndex + 12, 26, 28); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 12).GetCell(26).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(26).CellStyle = titleStyle; ws.GetRow(rowIndex + 12).GetCell(29).SetCellValue(""); ws.GetRow(rowIndex + 12).GetCell(29).CellStyle = titleStyle; rowIndex += 8; } //行14 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, rowIndex + 5, rowIndex + 5, 0, 29); region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检测批号"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue("焊缝编号"); ws.GetRow(rowIndex + 5).GetCell(3).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("焊工号"); ws.GetRow(rowIndex + 5).GetCell(6).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(11).SetCellValue("焊缝规格"); ws.GetRow(rowIndex + 5).GetCell(11).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 15, 17); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(15).SetCellValue("探头序号"); ws.GetRow(rowIndex + 5).GetCell(15).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 18, 24); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(18).SetCellValue("缺陷情况或缺陷示意图编号"); ws.GetRow(rowIndex + 5).GetCell(18).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 25, 27); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(25).SetCellValue("评定级别"); ws.GetRow(rowIndex + 5).GetCell(25).CellStyle = titleStyle; region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 28, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(28).SetCellValue("备注"); ws.GetRow(rowIndex + 5).GetCell(28).CellStyle = titleStyle; #endregion #region 表格 var dataTit = rowIndex + 6; var tIndex = i == 1 ? 27 : 37; ws = ExcelCreateRowTitle(ws, hssfworkbook, titleStyle, dataTit, rowIndex + tIndex, 0, 29); //每页数据开始和结束条数 var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 22; } else { dStart = i == 2 ? 15 : ((i - 2) * 32) + 15; dEnd = ((i - 1) * 32) + 15; } //合并单元格 for (int hb = rowIndex + 6; hb <= rowIndex + tIndex; hb++) { region = new CellRangeAddress(hb, hb, 0, 2); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 3, 5); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 6, 10); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 11, 14); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 15, 17); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 18, 24); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 25, 27); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 28, 29); ws.AddMergedRegion(region); } //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); //数据 for (int j = 0; j < pageTb.Rows.Count; j++) { int dataIndex = dataTit + j; //检测批号 ws.GetRow(dataIndex).GetCell(0).SetCellValue(pageTb.Rows[j]["EntrustCode"].ToString()); //焊缝编号 ws.GetRow(dataIndex).GetCell(3).SetCellValue(pageTb.Rows[j]["WeldingCode"].ToString()); //焊工号 ws.GetRow(dataIndex).GetCell(6).SetCellValue(pageTb.Rows[j]["WED_Code"].ToString()); //焊缝规格 ws.GetRow(dataIndex).GetCell(9).SetCellValue(pageTb.Rows[j]["JointDesc"].ToString()); //探头序号 ws.GetRow(dataIndex).GetCell(12).SetCellValue(""); //缺陷情况或缺陷示意图编号 ws.GetRow(dataIndex).GetCell(15).SetCellValue(pageTb.Rows[j]["FilmNum"].ToString()); //评定级别 ws.GetRow(dataIndex).GetCell(19).SetCellValue(pageTb.Rows[j]["DefectResult"].ToString()); //备注 ws.GetRow(dataIndex).GetCell(24).SetCellValue(pageTb.Rows[j]["Remark"].ToString()); } rowIndex = rowIndex + tIndex; #endregion #region 尾部 if (i == 1) { ws = ExcelCreateRowTitle(ws, hssfworkbook, titleSZYLeftStyle, rowIndex + 1, rowIndex + 1, 0, 29); //尾部行1 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 0, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue("检测人:"); ws.GetRow(rowIndex + 1).GetCell(0).CellStyle = titleSZYLeftStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 8, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(8).SetCellValue("审核人:"); ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = titleSZYLeftStyle; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(20).SetCellValue("检测单位:(公章)"); ws.GetRow(rowIndex + 1).GetCell(20).CellStyle = titleSZYLeftStyle; //尾部行2 ws = ExcelCreateRowTitle(ws, hssfworkbook, titleXZYLeftStyle, rowIndex + 2, rowIndex + 2, 0, 29); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 0, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("资格: UT 级"); ws.GetRow(rowIndex + 2).GetCell(0).CellStyle = titleXZYLeftStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 8, 19); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(8).SetCellValue("资格: UT 级"); ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = titleXZYLeftStyle; region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 20, 29); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(18).SetCellValue("报告日期: 年 月 日"); ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = titleXZYLeftStyle; rowIndex = rowIndex + 3; } else { rowIndex++; } #endregion } //ws.SetMargin(MarginType.LeftMargin, 0.3); //ws.SetMargin(MarginType.RightMargin, 0.2); //ws.SetMargin(MarginType.BottomMargin, 0.2); //ws.SetMargin(MarginType.TopMargin, 0.2); //ws.SetMargin(MarginType.FooterMargin, 0.3); //ws.SetMargin(MarginType.HeaderMargin, 0.3); ws.PrintSetup.Landscape = false; ws.PrintSetup.PaperSize = 9; ws.ForceFormulaRecalculation = true; using (FileStream filess = File.OpenWrite(ReportFileName)) { hssfworkbook.Write(filess); } FileInfo filet = new FileInfo(ReportFileName); Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF8; // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("焊缝超声检测报告.xlsx")); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", filet.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(filet.FullName); // 停止页面的执行 Response.End(); } #endregion } } #region 私有方法 /// /// 数据行和列 /// /// private XSSFSheet ExcelCreateRow(XSSFSheet ws, XSSFWorkbook hssfworkbook, int sRows, int eRows, ICellStyle style, int cStart, int cEnd) { CellRangeAddress region; for (int i = sRows; i <= eRows; i++) { ws.CreateRow(i); ws.GetRow(i).HeightInPoints = 21.8f; for (int j = cStart; j <= cEnd; j++) { ws.GetRow(i).CreateCell(j); ws.GetRow(i).GetCell(j).CellStyle = style; } } return ws; } /// /// 创建头部 /// /// private XSSFSheet ExcelCreateRowTitle(XSSFSheet ws, XSSFWorkbook hssfworkbook, ICellStyle style, int sRows, int eRows, int cStart, int cEnd, float height = 21) { for (int i = sRows; i <= eRows; i++) { ws.CreateRow(i); ws.GetRow(i).HeightInPoints = height; for (int j = cStart; j <= cEnd; j++) { ws.GetRow(i).CreateCell(j); ws.GetRow(i).CreateCell(j).CellStyle = style; } } return ws; } /// /// 查询指定条数分页 /// /// public static DataTable GetPageToTable(DataTable dt, int StartNum, int EndNum) { //0页代表每页数据,直接返回 if (EndNum == 0) return dt; //数据源为空返回空DataTable if (dt == null) return new DataTable(); DataTable newdt = dt.Copy(); newdt.Clear();//copy dt的框架 if (StartNum >= dt.Rows.Count) return newdt;//源数据记录数小于等于要显示的记录,直接返回dt if (EndNum > dt.Rows.Count) EndNum = dt.Rows.Count; for (int i = StartNum; i <= EndNum - 1; i++) { DataRow newdr = newdt.NewRow(); DataRow dr = dt.Rows[i]; foreach (DataColumn column in dt.Columns) { newdr[column.ColumnName] = dr[column.ColumnName]; } newdt.Rows.Add(newdr); } return newdt; } #endregion } }