using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Windows.Forms; using BLL; using FineUIPro.Web.Common.ProjectSet; using Model; using Model.ViewModels; using Newtonsoft.Json.Linq; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.Streaming; using NPOI.XSSF.UserModel; using BorderStyle = NPOI.SS.UserModel.BorderStyle; using HorizontalAlignment = NPOI.SS.UserModel.HorizontalAlignment; namespace FineUIPro.Web.WeldingProcess.TestPackageManage { public partial class TestPackageManageAudit : PageBase { #region 定义项 /// /// 试压包主键 /// public string PTP_ID { get { return (string)ViewState["PTP_ID"]; } set { ViewState["PTP_ID"] = value; } } /// /// 未通过数 /// public int Count { get { return (int)ViewState["Count"]; } set { ViewState["Count"] = value; } } #endregion #region 加载页面 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); this.PTP_ID = string.Empty; this.txtSearchDate.Text = string.Format("{0:yyyy-MM}", System.DateTime.Now); this.GetBindDropPrintList(); //打印报表项 // 审核人 BLL.Project_UserService.InitProjectUserDropDownList(drpAuditMan, true, this.CurrUser.LoginProjectId, Resources.Lan.PleaseSelect); this.InitTreeMenu();//加载树 } } #endregion #region 绑定下拉打印列表 private void GetBindDropPrintList() { this.drpPrintTypeList.DataSource = BLL.Common_ReportPrintService.TestPackageSelectPrint(); this.drpPrintTypeList.DataTextField = "Title"; this.drpPrintTypeList.DataValueField = "Id"; this.drpPrintTypeList.DataBind(); } #endregion #region 加载树装置-单位-工作区 /// /// 加载树 /// private void InitTreeMenu() { this.tvControlItem.Nodes.Clear(); TreeNode rootNode = new TreeNode(); rootNode.Text = "单位-装置-月份"; rootNode.NodeID = "0"; rootNode.Expanded = true; this.tvControlItem.Nodes.Add(rootNode); DateTime startTime = Convert.ToDateTime(this.txtSearchDate.Text.Trim() + "-01"); DateTime endTime = startTime.AddMonths(1); List units = new List(); ///单位 var pUnit = BLL.Project_UnitService.GetProject_UnitByProjectIdUnitId(this.CurrUser.LoginProjectId, this.CurrUser.UnitId); if (pUnit == null || pUnit.UnitType == BLL.Const.UnitType_1 || pUnit.UnitType == BLL.Const.UnitType_2 || pUnit.UnitType == BLL.Const.UnitType_3 || pUnit.UnitType == BLL.Const.UnitType_4) { units = (from x in Funs.DB.Base_Unit join y in Funs.DB.Project_Unit on x.UnitId equals y.UnitId where y.ProjectId == this.CurrUser.LoginProjectId && y.UnitType.Contains(BLL.Const.UnitType_5) select x).ToList(); } else { units.Add(BLL.Base_UnitService.GetUnit(this.CurrUser.UnitId)); } List testPackageLists = (from x in Funs.DB.PTP_TestPackage where x.ProjectId == this.CurrUser.LoginProjectId && x.TableDate >= startTime && x.TableDate < endTime select x).ToList(); if (units != null) { foreach (var unit in units) { TreeNode rootUnitNode = new TreeNode();//定义根节点 rootUnitNode.Text = unit.UnitName; rootUnitNode.NodeID = unit.UnitId; rootUnitNode.Expanded = true; rootUnitNode.ToolTip = "施工单位"; rootNode.Nodes.Add(rootUnitNode); var testPackageUnitList = testPackageLists.Where(x => x.UnitId == unit.UnitId).ToList(); this.BindNodes(rootUnitNode, testPackageUnitList); } } else { ShowNotify("请先增加施工单位!", MessageBoxIcon.Warning); return; } } #endregion #region 绑定树节点 /// /// 绑定树节点 /// /// private void BindNodes(TreeNode node, List testPackageUnitList) { if (node.ToolTip == "施工单位") { var installId = (from x in testPackageUnitList where x.UnitId == node.NodeID select x.InstallationId).Distinct(); if (installId.Count() > 0) { var install = from x in Funs.DB.Project_Installation where installId.Contains(x.InstallationId) orderby x.InstallationCode select x; foreach (var q in install) { TreeNode newNode = new TreeNode(); newNode.Text = q.InstallationName; newNode.NodeID = q.InstallationId + "|" + node.NodeID; newNode.ToolTip = "装置"; newNode.Expanded = true; node.Nodes.Add(newNode); this.BindNodes(newNode, testPackageUnitList); } } } else if (node.ToolTip == "装置") { string installationId = Funs.GetStrListByStr(node.NodeID, '|')[0]; var pointListMonth = (from x in testPackageUnitList where x.InstallationId == installationId select string.Format("{0:yyyy-MM}", x.TableDate)).Distinct(); foreach (var item in pointListMonth) { TreeNode newNode = new TreeNode(); newNode.Text = item; newNode.NodeID = item + "|" + node.NodeID; newNode.ToolTip = "月份"; node.Nodes.Add(newNode); this.BindNodes(newNode, testPackageUnitList); } } //else if (node.ToolTip == "月份") //{ // string installationId = Funs.GetStrListByStr(node.ParentNode.NodeID, '|')[0]; // var days = (from x in testPackageUnitList // where x.InstallationId == installationId // orderby x.TableDate descending // select x.TableDate).Distinct(); // foreach (var item in days) // { // TreeNode newNode = new TreeNode(); // newNode.Text = string.Format("{0:yyyy-MM-dd}", item); // newNode.NodeID = item.ToString() + "|" + node.NodeID; // newNode.ToolTip = "日期"; // node.Nodes.Add(newNode); // this.BindNodes(newNode, testPackageUnitList); // } //} else if (node.ToolTip == "月份") { DateTime startTime = Convert.ToDateTime(this.txtSearchDate.Text.Trim() + "-01"); DateTime endTime = startTime.AddMonths(1); string installationId = Funs.GetStrListByStr(node.ParentNode.NodeID, '|')[0]; var dReports = from x in testPackageUnitList where x.InstallationId == installationId && x.TableDate >= startTime && x.TableDate < endTime orderby x.TestPackageNo descending select x; foreach (var item in dReports) { TreeNode newNode = new TreeNode(); if (!string.IsNullOrEmpty(item.TestPackageNo)) { newNode.Text = item.TestPackageNo; } else { newNode.Text = "未知"; } if (!item.AduditDate.HasValue || string.IsNullOrEmpty(item.Auditer)) { newNode.Text = "" + newNode.Text + ""; node.Text = "" + node.Text + ""; node.ParentNode.Text = "" + node.ParentNode.Text + ""; } newNode.NodeID = item.PTP_ID; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); } } } #endregion #region 点击TreeView /// /// 点击TreeView /// /// /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { this.PTP_ID = tvControlItem.SelectedNodeID; this.BindGrid(); } #endregion #region 数据绑定 /// /// 数据绑定 /// private void BindGrid() { this.SetTextTemp(); this.PageInfoLoad(); ///页面输入保存信息 string strSql = @"SELECT * FROM dbo.View_PTP_TestPackageAudit WHERE ProjectId= @ProjectId AND PTP_ID=@PTP_ID"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); listStr.Add(new SqlParameter("@PTP_ID", this.PTP_ID)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); // 2.获取当前分页数据 //var table = this.GetPagedDataTable(Grid1, tb1); Grid1.RecordCount = tb.Rows.Count; var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); this.ShowGridItem(); } /// /// 行颜色设置 /// private void ShowGridItem() { Count = 0; int Count1 = 0, Count2 = 0, Count3 = 0, Count4 = 0; int rowsCount = this.Grid1.Rows.Count; for (int i = 0; i < rowsCount; i++) { int IsoInfoCount = Funs.GetNewIntOrZero(this.Grid1.Rows[i].Values[3].ToString()); //总焊口 int IsoInfoCountT = Funs.GetNewIntOrZero(this.Grid1.Rows[i].Values[4].ToString()); //完成总焊口 int CountS = Funs.GetNewIntOrZero(this.Grid1.Rows[i].Values[5].ToString()); ; //合格数 int CountU = Funs.GetNewIntOrZero(this.Grid1.Rows[i].Values[6].ToString()); ; //不合格数 decimal Rate = 0; bool convertible = decimal.TryParse(this.Grid1.Rows[i].Values[9].ToString(), out Rate); //应检测比例 decimal Ratio = Funs.GetNewDecimalOrZero(this.Grid1.Rows[i].Values[10].ToString()); //实际检测比例 if (IsoInfoCount > IsoInfoCountT) //未焊完 { Count1 += 1; this.Grid1.Rows[i].RowCssClass = "Cyan"; } else if (Rate > Ratio) //已焊完,未达检测比例 { Count2 += 1; this.Grid1.Rows[i].RowCssClass = "Yellow"; } else if (CountU > 0) //已焊完,已达检测比例,但有不合格 { Count3 += 1; this.Grid1.Rows[i].RowCssClass = "Green"; } else { Count4 += 1; this.Grid1.Rows[i].RowCssClass = "Purple"; } } Count = Count1 + Count2 + Count2; this.lab1.Text = Count1.ToString(); this.lab2.Text = Count2.ToString(); this.lab3.Text = Count3.ToString(); this.lab4.Text = Count4.ToString(); } #region 加载页面输入保存信息 /// /// 加载页面输入保存信息 /// private void PageInfoLoad() { this.btnAudit.Hidden = true; this.btnCancelAudit.Hidden = true; var testPackageManage = BLL.TestPackageManageEditService.GetTestPackageByID(this.PTP_ID); if (testPackageManage != null) { this.txtTestPackageNo.Text = testPackageManage.TestPackageNo; //if (!string.IsNullOrEmpty(testPackageManage.UnitId)) //{ // var unit = BLL.Base_UnitService.GetUnit(testPackageManage.UnitId); // if (unit != null) // { // this.drpUnit.Text = unit.UnitName; // } //} if (!string.IsNullOrEmpty(testPackageManage.InstallationId)) { var install = BLL.Project_InstallationService.GetProject_InstallationByInstallationId(testPackageManage.InstallationId); if (install != null) { this.drpInstallation.Text = install.InstallationName; } } this.txtTestPackageName.Text = testPackageManage.TestPackageName; //this.txtTestPackageCode.Text = testPackageManage.TestPackageCode; if (!string.IsNullOrEmpty(testPackageManage.TestType)) { var testType = BLL.Base_PressureService.GetPressureByPressureId(testPackageManage.TestType); if (testType != null) { this.drpTestType.Text = testType.PressureName; } } this.txtTestService.Text = testPackageManage.TestService; this.txtTestHeat.Text = testPackageManage.TestHeat; this.txtTestAmbientTemp.Text = testPackageManage.TestAmbientTemp; this.txtTestMediumTemp.Text = testPackageManage.TestMediumTemp; this.txtVacuumTestService.Text = testPackageManage.VacuumTestService; this.txtVacuumTestPressure.Text = testPackageManage.VacuumTestPressure; this.txtTightnessTestTime.Text = testPackageManage.TightnessTestTime; this.txtTightnessTestTemp.Text = testPackageManage.TightnessTestTemp; this.txtTightnessTest.Text = testPackageManage.TightnessTest; this.txtTestPressure.Text = testPackageManage.TestPressure; this.txtTestPressureTemp.Text = testPackageManage.TestPressureTemp; this.txtTestPressureTime.Text = testPackageManage.TestPressureTime; this.txtOperationMedium.Text = testPackageManage.OperationMedium; this.txtPurgingMedium.Text = testPackageManage.PurgingMedium; this.txtCleaningMedium.Text = testPackageManage.CleaningMedium; this.txtLeakageTestService.Text = testPackageManage.LeakageTestService; this.txtLeakageTestPressure.Text = testPackageManage.LeakageTestPressure; this.txtAllowSeepage.Text = testPackageManage.AllowSeepage; this.txtFactSeepage.Text = testPackageManage.FactSeepage; this.txtModifyDate.Text = string.Format("{0:yyyy-MM-dd}", testPackageManage.ModifyDate); if (!string.IsNullOrEmpty(testPackageManage.Modifier)) { var users = BLL.Sys_UserService.GetUsersByUserId(testPackageManage.Modifier); if (users != null) { this.drpModifier.Text = users.UserName; } } this.txtTableDate.Text = string.Format("{0:yyyy-MM-dd}", testPackageManage.TableDate); if (!string.IsNullOrEmpty(testPackageManage.Tabler)) { var users = BLL.Sys_UserService.GetUsersByUserId(testPackageManage.Tabler); if (users != null) { this.drpTabler.Text = users.UserName; } } this.txtRemark.Text = testPackageManage.Remark; this.txtAuditDate.Text = string.Format("{0:yyyy-MM-dd}", testPackageManage.AduditDate); if (!string.IsNullOrEmpty(testPackageManage.Auditer)) { this.drpAuditMan.SelectedValue = testPackageManage.Auditer; } if (string.IsNullOrEmpty(testPackageManage.Auditer) || !testPackageManage.AduditDate.HasValue) { this.btnAudit.Hidden = false; this.drpAuditMan.Enabled = true; this.txtAuditDate.Enabled = true; } else { this.btnCancelAudit.Hidden = false; this.drpAuditMan.Enabled = false; this.txtAuditDate.Enabled = false; } } } #endregion #region 清空输入框 /// /// 清空输入框 /// private void SetTextTemp() { this.txtTestPackageNo.Text = string.Empty; //this.drpUnit.Text = string.Empty; this.drpInstallation.Text = string.Empty; this.txtTestPackageName.Text = string.Empty; //this.txtTestPackageCode.Text = string.Empty; this.drpTestType.Text = string.Empty; this.txtTestService.Text = string.Empty; this.txtTestHeat.Text = string.Empty; this.txtTestAmbientTemp.Text = string.Empty; this.txtTestMediumTemp.Text = string.Empty; this.txtVacuumTestService.Text = string.Empty; this.txtVacuumTestPressure.Text = string.Empty; this.txtTightnessTestTime.Text = string.Empty; this.txtTightnessTestTemp.Text = string.Empty; this.txtTightnessTest.Text = string.Empty; this.txtTestPressure.Text = string.Empty; this.txtTestPressureTemp.Text = string.Empty; this.txtTestPressureTime.Text = string.Empty; this.txtOperationMedium.Text = string.Empty; this.txtPurgingMedium.Text = string.Empty; this.txtCleaningMedium.Text = string.Empty; this.txtLeakageTestService.Text = string.Empty; this.txtLeakageTestPressure.Text = string.Empty; this.txtAllowSeepage.Text = string.Empty; this.txtFactSeepage.Text = string.Empty; this.drpModifier.Text = string.Empty; this.txtModifyDate.Text = string.Empty; this.drpTabler.Text = string.Empty; this.txtTableDate.Text = string.Empty; this.txtRemark.Text = string.Empty; this.drpAuditMan.SelectedValue = BLL.Const._Null; this.txtAuditDate.Text = string.Empty; } #endregion #endregion #region 分页排序 #region 页索引改变事件 /// /// 页索引改变事件 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { BindGrid(); } #endregion #region 排序 /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { BindGrid(); } #endregion #region 分页选择下拉改变事件 /// /// 分页选择下拉改变事件 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } #endregion #endregion #region 试压包 审核事件 #region 审核检测单 /// /// 审核检测单 /// /// /// protected void btnAudit_Click(object sender, EventArgs e) { if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.TestPackageManageAuditMenuId, Const.BtnAuditing)) { var updateTestPackage = BLL.TestPackageManageEditService.GetTestPackageByID(this.PTP_ID); if (updateTestPackage != null) { if (Count == 0) { string isnoHot = BLL.TestPackageManageEditService.IsExistNoHotHardItem(this.PTP_ID); if (string.IsNullOrEmpty(isnoHot)) { string inspectionIsoRate = BLL.TestPackageManageEditService.InspectionIsoRate(this.PTP_ID); if (string.IsNullOrEmpty(inspectionIsoRate)) { if (!String.IsNullOrEmpty(this.txtAuditDate.Text) && this.drpAuditMan.SelectedValue != BLL.Const._Null) { updateTestPackage.AduditDate = Funs.GetNewDateTime(this.txtAuditDate.Text); updateTestPackage.Auditer = this.drpAuditMan.SelectedValue; BLL.TestPackageManageAuditService.AuditTestPackage(updateTestPackage); this.InitTreeMenu(); this.BindGrid(); ShowNotify("审核完成!", MessageBoxIcon.Success); } else { Alert.ShowInTop("请填写审核人和审核日期!", MessageBoxIcon.Warning); } } else { Alert.ShowInTop(inspectionIsoRate, MessageBoxIcon.Warning); return; } } else { Alert.ShowInTop(isnoHot, MessageBoxIcon.Warning); return; } } else { Alert.ShowInTop("管线未全部通过不允许审核操作!", MessageBoxIcon.Warning); return; } } else { Alert.ShowInTop("请选择要审核的单据!", MessageBoxIcon.Warning); return; } } else { Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); return; } } #endregion #region 取消审核检测单 /// /// 取消审核检测单 /// /// /// protected void btnCancelAudit_Click(object sender, EventArgs e) { if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.TestPackageManageAuditMenuId, Const.BtnCancelAuditing)) { var updateTestPackage = BLL.TestPackageManageEditService.GetTestPackageByID(this.PTP_ID); if (updateTestPackage != null) { updateTestPackage.Auditer = null; updateTestPackage.AduditDate = null; BLL.TestPackageManageAuditService.AuditTestPackage(updateTestPackage); this.InitTreeMenu(); this.BindGrid(); ShowNotify("取消审核完成!", MessageBoxIcon.Success); } else { ShowNotify("请确认单据!", MessageBoxIcon.Warning); } } else { ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning); } } #endregion #endregion #region 关闭弹出窗口及刷新页面 /// /// 关闭弹出窗口 /// /// /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { this.PTP_ID = this.hdPTP_ID.Text; this.BindGrid(); this.InitTreeMenu(); this.hdPTP_ID.Text = string.Empty; } /// /// 查询 /// /// /// protected void Tree_TextChanged(object sender, EventArgs e) { this.InitTreeMenu(); this.BindGrid(); } #endregion #region 试压包打印 /// /// 试压包打印 /// /// /// protected void btnPrint_Click(object sender, EventArgs e) { var selectValArray = this.drpPrintTypeList.SelectedValueArray; if (selectValArray.Length <= 0) { Alert.ShowInTop("请选择打印报表!", MessageBoxIcon.Warning); return; } string selectValStr = string.Join(",", selectValArray).Replace("null,", ""); if (selectValStr == "null") { Alert.ShowInTop("请选择打印报表!", MessageBoxIcon.Warning); return; } if (string.IsNullOrEmpty(this.tvControlItem.SelectedNodeID)) { Alert.ShowInTop("请选择试压包!", MessageBoxIcon.Warning); return; } CreateDataExcel(selectValArray); } #region 绘画模版 //1-TP-01-试压包路径表UG-FW-001 private void template1(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //插入图片部分 var img1 = Server.MapPath("~/res/images/bsf/1.png"); var img2 = Server.MapPath("~/res/images/bsf/2.png"); var img3 = Server.MapPath("~/res/images/bsf/3.png"); var img4 = Server.MapPath("~/res/images/bsf/4.png"); int rowIndex = 0; var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 16, style, 0, 18, true); ws.GetRow(rowIndex).GetCell(15).SetCellValue("Form No."); ws.GetRow(rowIndex).GetCell(16).SetCellValue("TP-06"); //设置列宽度 ws.SetColumnWidth(0, 1 * 256); ws.SetColumnWidth(1, 1 * 256); ws.SetColumnWidth(2, 7 * 256); ws.SetColumnWidth(3, 7 * 256); ws.SetColumnWidth(4, 7 * 256); ws.SetColumnWidth(5, 12 * 256); ws.SetColumnWidth(6, 10 * 256); ws.SetColumnWidth(7, 10 * 256); ws.SetColumnWidth(8, 6 * 256); ws.SetColumnWidth(9, 10 * 256); ws.SetColumnWidth(10, 10 * 256); ws.SetColumnWidth(11, 6 * 256); ws.SetColumnWidth(12, 10 * 256); ws.SetColumnWidth(13, 10 * 256); ws.SetColumnWidth(14, 6 * 256); ws.SetColumnWidth(15, 10 * 256); ws.SetColumnWidth(16, 10 * 256); ws.SetColumnWidth(17, 6 * 256); ws.SetColumnWidth(18, 1 * 256); //设置前1-5行高度 ws.GetRow(0).Height = 15 * 20; ws.GetRow(1).Height = 15 * 20; ws.GetRow(2).Height = 14 * 20; ws.GetRow(3).Height = 12 * 20; ws.GetRow(4).Height = 22 * 20; //插入图片 InsertImage(hssfworkbook, ws, 2, 2, 2, 3, img1, 1.3, 1.1); InsertImage(hssfworkbook, ws, 2, 4, 2, 5, img2, 1.4, 1.1); InsertImage(hssfworkbook, ws, 2, 14, 2, 15, img3, 1.6, 1.1); InsertImage(hssfworkbook, ws, 2, 16, 2, 17, img4, 1.6, 1.1); ws.GetRow(rowIndex + 2).GetCell(5).SetCellValue("巴斯夫(广东)一体化项目 \r\n\t BASF(Guangdong) Integrated Project Citral Cluster"); ws.GetRow(rowIndex + 2).GetCell(5).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 16, true, true, "Times New Roman"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 5, 14)); ws.GetRow(2).Height = 55 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 8, 1, 17)); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 26, true, true, "Arial"); ws.GetRow(rowIndex + 5).GetCell(1).SetCellValue("管道试压包流转路径表 \r\n Piping Test Package Routing Form"); ws.GetRow(rowIndex + 5).GetCell(1).CellStyle = setStyle; //设置6-10 行 行高度 ws.GetRow(rowIndex + 5).Height = 25 * 20; ws.GetRow(rowIndex + 6).Height = 13 * 20; ws.GetRow(rowIndex + 7).Height = 27 * 20; ws.GetRow(rowIndex + 8).Height = 22 * 20; ws.GetRow(rowIndex + 9).Height = 15 * 20; ws.GetRow(rowIndex + 10).Height = 32 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 10, rowIndex + 10, 1, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 10, rowIndex + 10, 4, 5)); ws.GetRow(rowIndex + 11).Height = 11 * 20; ws.GetRow(rowIndex + 10).GetCell(1).SetCellValue("试压包号\r\nTest Package No."); ws.GetRow(rowIndex + 10).GetCell(4).SetCellValue(info?.testpackageNo); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 13, 2, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 13, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 13, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 13, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 13, 15, 16)); ws.GetRow(rowIndex + 12).GetCell(2).SetCellValue("ACTIVITY"); ws.GetRow(rowIndex + 12).GetCell(2).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial"); ws.GetRow(rowIndex + 12).GetCell(6).SetCellValue(info?.workAreaCode); ws.GetRow(rowIndex + 12).GetCell(6).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial"); ws.GetRow(rowIndex + 12).GetCell(9).SetCellValue("JIANLI"); ws.GetRow(rowIndex + 12).GetCell(9).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial"); ws.GetRow(rowIndex + 12).GetCell(12).SetCellValue("WORLEY"); ws.GetRow(rowIndex + 12).GetCell(12).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial"); ws.GetRow(rowIndex + 12).GetCell(15).SetCellValue("BASF"); ws.GetRow(rowIndex + 12).GetCell(15).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial"); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 15, rowIndex + 65, style, 0, 18, true); for (int i = 15; i < 66; i++) { ws.GetRow(rowIndex + i).Height = 28 * 20; } var image1 = Server.MapPath("~/res/images/bsf/图片1.png"); var image2 = Server.MapPath("~/res/images/bsf/图片2.png"); var image3 = Server.MapPath("~/res/images/bsf/图片3.png"); var image4 = Server.MapPath("~/res/images/bsf/图片4.png"); var image5 = Server.MapPath("~/res/images/bsf/图片5.png"); var image6 = Server.MapPath("~/res/images/bsf/图片6.png"); var image7 = Server.MapPath("~/res/images/bsf/图片7.png"); var image8 = Server.MapPath("~/res/images/bsf/图片8.png"); var image9 = Server.MapPath("~/res/images/bsf/图片9.png"); var image10 = Server.MapPath("~/res/images/bsf/图片10.png"); InsertImage(hssfworkbook, ws, 15, 2, 17, 4, image1, 1.55, 1.32); InsertImage(hssfworkbook, ws, 18, 2, 20, 4, image10, 0.02, 2.27); InsertImage(hssfworkbook, ws, 21, 2, 23, 4, image2, 1.55, 1.12); InsertImage(hssfworkbook, ws, 24, 2, 26, 4, image10, 0.02, 2.27); InsertImage(hssfworkbook, ws, 27, 2, 29, 4, image3, 1.55, 1.12); InsertImage(hssfworkbook, ws, 30, 2, 33, 4, image10, 0.02, 2.27); InsertImage(hssfworkbook, ws, 33, 2, 35, 4, image4, 1.55, 1.12); InsertImage(hssfworkbook, ws, 36, 2, 38, 4, image10, 0.02, 2.27); InsertImage(hssfworkbook, ws, 39, 2, 41, 4, image5, 1.55, 1.12); InsertImage(hssfworkbook, ws, 42, 2, 44, 4, image10, 0.02, 2.27); InsertImage(hssfworkbook, ws, 45, 2, 47, 4, image6, 1.55, 1.12); InsertImage(hssfworkbook, ws, 48, 2, 50, 4, image10, 0.02, 2.27); InsertImage(hssfworkbook, ws, 51, 2, 53, 4, image7, 1.55, 1.12); InsertImage(hssfworkbook, ws, 54, 2, 55, 4, image10, 0.02, 2.27); InsertImage(hssfworkbook, ws, 57, 2, 59, 4, image8, 1.55, 1.12); InsertImage(hssfworkbook, ws, 60, 2, 62, 4, image10, 0.02, 2.27); InsertImage(hssfworkbook, ws, 63, 2, 65, 4, image9, 1.55, 1.12); //循环数据表格部分 ws.GetRow(rowIndex + 15).Height = 30 * 20; ws.GetRow(rowIndex + 16).Height = 30 * 20; ws.GetRow(rowIndex + 17).Height = 30 * 20; #region 第一层签名 ws.GetRow(rowIndex + 15).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 16).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 17).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 16, rowIndex + 16, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 16, rowIndex + 16, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 16, rowIndex + 16, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 16, rowIndex + 16, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 17, rowIndex + 17, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 17, rowIndex + 17, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 17, rowIndex + 17, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 17, rowIndex + 17, 15, 16), ws); #endregion #region 第二层签名 ws.GetRow(rowIndex + 21).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 22).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 23).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 21, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 21, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 21, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 21, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 21, rowIndex + 21, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 21, rowIndex + 21, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 21, rowIndex + 21, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 21, rowIndex + 21, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 22, rowIndex + 22, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 22, rowIndex + 22, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 22, rowIndex + 22, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 22, rowIndex + 22, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 15, 16), ws); #endregion #region 第三层签名 ws.GetRow(rowIndex + 27).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 28).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 29).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 27, rowIndex + 27, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 27, rowIndex + 27, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 27, rowIndex + 27, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 27, rowIndex + 27, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 28, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 28, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 28, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 28, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 28, rowIndex + 28, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 28, rowIndex + 28, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 28, rowIndex + 28, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 28, rowIndex + 28, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 29, rowIndex + 29, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 29, rowIndex + 29, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 29, rowIndex + 29, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 29, rowIndex + 29, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 29, rowIndex + 29, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 29, rowIndex + 29, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 29, rowIndex + 29, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 29, rowIndex + 29, 15, 16), ws); #endregion #region 第四层签名 ws.GetRow(rowIndex + 33).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 34).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 35).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 33, rowIndex + 33, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 33, rowIndex + 33, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 33, rowIndex + 33, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 33, rowIndex + 33, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 33, rowIndex + 33, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 33, rowIndex + 33, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 33, rowIndex + 33, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 33, rowIndex + 33, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 34, rowIndex + 34, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 34, rowIndex + 34, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 34, rowIndex + 34, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 34, rowIndex + 34, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 34, rowIndex + 34, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 34, rowIndex + 34, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 34, rowIndex + 34, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 34, rowIndex + 34, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 35, rowIndex + 35, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 35, rowIndex + 35, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 35, rowIndex + 35, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 35, rowIndex + 35, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 35, rowIndex + 35, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 35, rowIndex + 35, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 35, rowIndex + 35, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 35, rowIndex + 35, 15, 16), ws); #endregion #region 第五层签名 ws.GetRow(rowIndex + 39).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 40).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 41).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 39, rowIndex + 39, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 39, rowIndex + 39, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 39, rowIndex + 39, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 39, rowIndex + 39, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 39, rowIndex + 39, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 39, rowIndex + 39, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 39, rowIndex + 39, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 39, rowIndex + 39, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 40, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 40, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 40, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 40, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 40, rowIndex + 40, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 40, rowIndex + 40, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 40, rowIndex + 40, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 40, rowIndex + 40, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 41, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 41, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 41, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 41, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 41, rowIndex + 41, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 41, rowIndex + 41, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 41, rowIndex + 41, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 41, rowIndex + 41, 15, 16), ws); #endregion #region 第六层签名 ws.GetRow(rowIndex + 45).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 46).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 47).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 45, rowIndex + 45, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 45, rowIndex + 45, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 45, rowIndex + 45, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 45, rowIndex + 45, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 45, rowIndex + 45, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 45, rowIndex + 45, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 45, rowIndex + 45, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 45, rowIndex + 45, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 46, rowIndex + 46, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 46, rowIndex + 46, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 46, rowIndex + 46, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 46, rowIndex + 46, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 46, rowIndex + 46, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 46, rowIndex + 46, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 46, rowIndex + 46, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 46, rowIndex + 46, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 47, rowIndex + 47, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 47, rowIndex + 47, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 47, rowIndex + 47, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 47, rowIndex + 47, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 47, rowIndex + 47, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 47, rowIndex + 47, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 47, rowIndex + 47, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 47, rowIndex + 47, 15, 16), ws); #endregion #region 第七层签名 ws.GetRow(rowIndex + 51).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 52).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 53).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 51, rowIndex + 51, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 51, rowIndex + 51, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 51, rowIndex + 51, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 51, rowIndex + 51, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 51, rowIndex + 51, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 51, rowIndex + 51, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 51, rowIndex + 51, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 51, rowIndex + 51, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 52, rowIndex + 52, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 52, rowIndex + 52, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 52, rowIndex + 52, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 52, rowIndex + 52, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 52, rowIndex + 52, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 52, rowIndex + 52, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 52, rowIndex + 52, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 52, rowIndex + 52, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 53, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 53, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 53, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 53, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 53, rowIndex + 53, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 53, rowIndex + 53, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 53, rowIndex + 53, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 53, rowIndex + 53, 15, 16), ws); #endregion #region 第八层签名 ws.GetRow(rowIndex + 57).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 58).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 59).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 57, rowIndex + 57, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 57, rowIndex + 57, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 57, rowIndex + 57, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 57, rowIndex + 57, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 58, rowIndex + 58, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 58, rowIndex + 58, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 58, rowIndex + 58, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 58, rowIndex + 58, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 58, rowIndex + 58, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 58, rowIndex + 58, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 58, rowIndex + 58, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 58, rowIndex + 58, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 59, rowIndex + 59, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 59, rowIndex + 59, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 59, rowIndex + 59, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 59, rowIndex + 59, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 59, rowIndex + 59, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 59, rowIndex + 59, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 59, rowIndex + 59, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 59, rowIndex + 59, 15, 16), ws); #endregion #region 第九层签名 ws.GetRow(rowIndex + 63).GetCell(5).SetCellValue("姓名\r\nNAME"); ws.GetRow(rowIndex + 64).GetCell(5).SetCellValue("签名\r\nSIGNATURE"); ws.GetRow(rowIndex + 65).GetCell(5).SetCellValue("日期\r\nDATE"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 63, rowIndex + 63, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 63, rowIndex + 63, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 63, rowIndex + 63, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 63, rowIndex + 63, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 63, rowIndex + 63, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 63, rowIndex + 63, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 63, rowIndex + 63, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 63, rowIndex + 63, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 64, rowIndex + 64, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 64, rowIndex + 64, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 64, rowIndex + 64, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 64, rowIndex + 64, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 64, rowIndex + 64, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 64, rowIndex + 64, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 64, rowIndex + 64, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 64, rowIndex + 64, 15, 16), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 65, rowIndex + 65, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 65, rowIndex + 65, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 65, rowIndex + 65, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 65, rowIndex + 65, 15, 16)); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 65, rowIndex + 65, 6, 7), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 65, rowIndex + 65, 9, 10), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 65, rowIndex + 65, 12, 13), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 65, rowIndex + 65, 15, 16), ws); #endregion #endregion #region 边框设置 RegionUtil.SetBorderBottom(2, new CellRangeAddress(1, 1, 1, 17), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(65, 65, 1, 17), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(2, 65, 0, 0), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(2, 65, 17, 17), ws); #endregion ws.PrintSetup.FitWidth = 1; ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; ws.FitToPage = true; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //页眉页脚间距 ws.SetMargin(MarginType.HeaderMargin, 0); ws.SetMargin(MarginType.FooterMargin, 0); } //6-TP-05-P&ID清单UG-FW-001 模版 private void template6(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //插入图片部分 var img1 = Server.MapPath("~/res/images/bsf/1.png"); var img2 = Server.MapPath("~/res/images/bsf/2.png"); var img3 = Server.MapPath("~/res/images/bsf/3.png"); var img4 = Server.MapPath("~/res/images/bsf/4.png"); int rowIndex = 0; //查询数据 string sql = @"select * from ( select a.PTP_ID, a.TestPackageNo, d.WorkAreaId, d.WorkAreaCode, c.PipelineId, c.PipelineCode, c.SystemNumber, a.TestHeat, a.TestType, c.SingleNumber, c.DrawingsNum, a.Remark, (select top 1 PageNum from Pipeline_WeldJoint where PipelineId=b.PipelineId order by WeldJointCode) as PageNum from PTP_TestPackage as a inner join PTP_PipelineList as b on a.PTP_ID=b.PTP_ID left join Pipeline_Pipeline as c on b.PipelineId=c.PipelineId left join Project_WorkArea as d on b.WorkAreaId=d.WorkAreaId ) as t where PTP_ID=@PTP_ID "; SqlParameter[] parms = new SqlParameter[]{ new SqlParameter("@PTP_ID",this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); //获取试压包第一行记录 #region 分页数据 var tbNum = dt.Rows.Count; var pageNum = tbNum < 37 ? 1 : Math.Ceiling((float)(tbNum - 37) / 37) + 1; for (int i = 1; i <= pageNum; i++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex, rowIndex, style, 0, 17, 13); ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 1, rowIndex + 1, style, 0, 17, 4); ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 2, rowIndex + 15, style, 0, 17, 13); ws.GetRow(rowIndex).GetCell(15).SetCellValue("Form No."); ws.GetRow(rowIndex).GetCell(16).SetCellValue("TP-06"); #region 设置样式 //设置列宽度 ws.SetColumnWidth(0, 1 * 256); ws.SetColumnWidth(1, 2 * 256); ws.SetColumnWidth(2, 9 * 256); ws.SetColumnWidth(3, 4 * 256); ws.SetColumnWidth(4, 4 * 256); ws.SetColumnWidth(5, 4 * 256); ws.SetColumnWidth(6, 5 * 256); ws.SetColumnWidth(7, 4 * 256); ws.SetColumnWidth(8, 4 * 256); ws.SetColumnWidth(9, 4 * 256); ws.SetColumnWidth(10, 4 * 256); ws.SetColumnWidth(11, 4 * 256); ws.SetColumnWidth(12, 4 * 256); ws.SetColumnWidth(13, 4 * 256); ws.SetColumnWidth(14, 8 * 256); ws.SetColumnWidth(15, 9 * 256); ws.SetColumnWidth(16, 9 * 256); ws.SetColumnWidth(17, 2 * 256); //设置前3行高度 //ws.GetRow(rowIndex + 0).Height = 15 * 20; //ws.GetRow(rowIndex + 1).Height = 15 * 20; //ws.GetRow(rowIndex + 2).Height = 14 * 20; //ws.GetRow(rowIndex + 3).Height = 18 * 20; //ws.GetRow(rowIndex + 4).Height = 18 * 20; //ws.GetRow(rowIndex + 5).Height = 18 * 20; //ws.GetRow(rowIndex + 6).Height = 18 * 20; //ws.GetRow(rowIndex + 7).Height = 18 * 20; //ws.GetRow(rowIndex + 8).Height = 18 * 20; //ws.GetRow(rowIndex + 9).Height = 18 * 20; //ws.GetRow(rowIndex + 10).Height = 18 * 20; //ws.GetRow(rowIndex + 11).Height = 18 * 20; //ws.GetRow(rowIndex + 12).Height = 18 * 20; //ws.GetRow(rowIndex + 13).Height = 18 * 20; //ws.GetRow(rowIndex + 14).Height = 18 * 20; RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 0, rowIndex + 0, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 16, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 2, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 2, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 14, 0, 0), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 16, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 17, 17), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 9, rowIndex + 14, 2, 2), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 2, 16), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 8, rowIndex + 8, 2, 16), ws); #endregion #region 插入图片 InsertImage(hssfworkbook, ws, rowIndex + 3, 2, rowIndex + 4, 3, img1, 1.2, 1.8); InsertImage(hssfworkbook, ws, rowIndex + 3, 3, rowIndex + 4, 4, img2, 10, 2, 30, 2); InsertImage(hssfworkbook, ws, rowIndex + 3, 14, rowIndex + 4, 14, img3, 1.5, 2, 8, 2); InsertImage(hssfworkbook, ws, rowIndex + 3, 15, rowIndex + 4, 15, img4, 3, 2, 35, 2); #endregion #region 试压包头部分 ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("巴斯夫(广东)一体化项目"); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 5, 13)); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("BASF (GUANGDONG) INTEGRATED PROJECT"); ws.GetRow(rowIndex + 4).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 5, 13)); ws.GetRow(rowIndex + 5).GetCell(5).SetCellValue("试压包流程图清单"); ws.GetRow(rowIndex + 5).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 5, 13)); ws.GetRow(rowIndex + 6).GetCell(5).SetCellValue("TEST PACKAGE P&ID DRAWING LIST"); ws.GetRow(rowIndex + 6).GetCell(5).CellStyle = setStyle; var cellStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, false, false, "Arial Unicode MS"); ws.GetRow(rowIndex + 9).GetCell(2).SetCellValue("Test Package No"); ws.GetRow(rowIndex + 9).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(5).SetCellValue(info?.testpackageNo); ws.GetRow(rowIndex + 9).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(9).SetCellValue("Area"); ws.GetRow(rowIndex + 9).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(13).SetCellValue(info?.workAreaCode); ws.GetRow(rowIndex + 10).GetCell(2).SetCellValue("试压包号"); ws.GetRow(rowIndex + 10).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 10).GetCell(9).SetCellValue("区域"); ws.GetRow(rowIndex + 10).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(2).SetCellValue("System No"); ws.GetRow(rowIndex + 11).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(5).SetCellValue(info?.SystemNo); ws.GetRow(rowIndex + 11).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(9).SetCellValue("Test Pressure"); ws.GetRow(rowIndex + 11).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(13).SetCellValue(info?.TestPressure); ws.GetRow(rowIndex + 11).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(2).SetCellValue("系统号"); ws.GetRow(rowIndex + 12).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(9).SetCellValue("试验压力"); ws.GetRow(rowIndex + 12).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(9).SetCellValue("Test Type"); ws.GetRow(rowIndex + 13).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(13).SetCellValue(info?.TestType); ws.GetRow(rowIndex + 13).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 14).GetCell(9).SetCellValue("试验方式"); ws.GetRow(rowIndex + 14).GetCell(9).CellStyle = cellStyle2; RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 9, rowIndex + 14, 8, 8), ws); #endregion #endregion #region 表格部分 //数据表头部分 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 5, 13)); ws.GetRow(rowIndex + 15).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None); ws.GetRow(rowIndex + 15).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.GetRow(rowIndex + 15).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 3, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 9, 13)); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 2, 16), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 2, 16), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 2, 2), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 8, 8), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 13, 13), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 14, 14), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 15, 15), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 16, 16), ws); ws.GetRow(rowIndex + 15).GetCell(2).SetCellValue("No\r\n序号"); ws.GetRow(rowIndex + 15).GetCell(3).SetCellValue("P&ID Drawing No.\r\n流程图号"); ws.GetRow(rowIndex + 15).GetCell(9).SetCellValue("Drawing Description\r\n图纸名称"); ws.GetRow(rowIndex + 15).GetCell(14).SetCellValue("Rev\r\n版本"); ws.GetRow(rowIndex + 15).GetCell(15).SetCellValue("Sheet No.\r\n页码"); ws.GetRow(rowIndex + 15).GetCell(16).SetCellValue("Remark\r\n备注"); ws.GetRow(rowIndex + 15).Height = 40 * 20; style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, false, false, "Arial Unicode MS"); ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 16, rowIndex + 52, style, 0, 17, 13); var dataTit = rowIndex + 16; var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 37; } else { dStart = i == 2 ? 37 : ((i - 2) * 37) + 37; dEnd = ((i - 1) * 37) + 37; } var pageTb = GetPageToTable(dt, dStart, dEnd); int nextRow = 0; int lastRow = 0; int j = 0; for (int k = 0; k < 37; k++) { int dataIndex = dataTit + j; if (pageTb.Rows.Count > j) { DataRow dr = pageTb.Rows[j]; ws.GetRow(dataIndex).GetCell(2).SetCellValue($"{j + 1}"); ws.GetRow(dataIndex).GetCell(3).SetCellValue(""); ws.GetRow(dataIndex).GetCell(9).SetCellValue(""); ws.GetRow(dataIndex).GetCell(14).SetCellValue(dr["DrawingsNum"].ToString()); ws.GetRow(dataIndex).GetCell(15).SetCellValue(dr["PageNum"].ToString()); ws.GetRow(dataIndex).GetCell(16).SetCellValue(dr["Remark"].ToString()); ws.GetRow(dataIndex).Height = 14 * 20; } ws.AddMergedRegion(new CellRangeAddress(rowIndex + dataIndex, rowIndex + dataIndex, 3, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + dataIndex, rowIndex + dataIndex, 9, 13)); ws.GetRow(dataIndex).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.GetRow(dataIndex).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); RegionUtil.SetBorderLeft(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 2, 2), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 8, 8), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 13, 13), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 14, 14), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 15, 15), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 16, 16), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); nextRow = dataIndex; j++; } #region 注释 //foreach (DataRow dr in pageTb.Rows) //{ // int dataIndex = dataTit + j; // ws.GetRow(dataIndex).GetCell(2).SetCellValue($"{j + 1}"); // ws.GetRow(dataIndex).GetCell(3).SetCellValue(""); // ws.GetRow(dataIndex).GetCell(9).SetCellValue(""); // ws.GetRow(dataIndex).GetCell(14).SetCellValue(dr["DrawingsNum"].ToString()); // ws.GetRow(dataIndex).GetCell(15).SetCellValue(dr["PageNum"].ToString()); // ws.GetRow(dataIndex).GetCell(16).SetCellValue(dr["Remark"].ToString()); // ws.GetRow(dataIndex).Height = 14 * 20; // ws.AddMergedRegion(new CellRangeAddress(rowIndex + dataIndex, rowIndex + dataIndex, 3, 8)); // ws.AddMergedRegion(new CellRangeAddress(rowIndex + dataIndex, rowIndex + dataIndex, 9, 13)); // ws.GetRow(dataIndex).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); // ws.GetRow(dataIndex).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); // RegionUtil.SetBorderLeft(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 2, 2), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 8, 8), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 13, 13), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 14, 14), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 15, 15), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 16, 16), ws); // RegionUtil.SetBorderBottom(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); // nextRow = dataIndex; // j++; //} ////如果pageData不满足33行数据的情况下,将设置剩余行高 //if (pageTb.Rows.Count < 34) //{ // for (int k = 1; k <= 34 - pageTb.Rows.Count; k++) // { // int dataIndex = rowIndex + nextRow + k; // ws.GetRow(dataIndex).Height = 14 * 20; // ws.GetRow(dataIndex).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None); // ws.GetRow(dataIndex).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); // ws.GetRow(dataIndex).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); // ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 3, 8)); // ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 9, 13)); // RegionUtil.SetBorderLeft(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 2, 2), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 8, 8), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 13, 13), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 14, 14), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 15, 15), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 16, 16), ws); // RegionUtil.SetBorderBottom(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); // lastRow = nextRow + k; // } //} #endregion RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + lastRow, rowIndex + lastRow, 2, 16), ws); #endregion #region 尾部 ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 53, rowIndex + 58, style, 0, 17, 13); //ws.GetRow(rowIndex + 50).Height = 18 * 20; //ws.GetRow(rowIndex + 51).Height = 18 * 20; //ws.GetRow(rowIndex + 52).Height = 18 * 20; //ws.GetRow(rowIndex + 53).Height = 18 * 20; //ws.GetRow(rowIndex + 54).Height = 18 * 20; //ws.GetRow(rowIndex + 55).Height = 4 * 20; RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 53, rowIndex + 58, 1, 1), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 53, rowIndex + 58, 17, 17), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 53, rowIndex + 57, 2, 2), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 53, rowIndex + 57, 17, 17), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 55, rowIndex + 55, 2, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 55, 4, 4), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 55, 6, 6), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 55, 9, 9), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 55, 13, 13), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 4, 4), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 4, 4), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 6, 6), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 9, 9), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 13, 13), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 56, rowIndex + 57, 2, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 2, 6), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 6, 6), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 9, 9), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 13, 13), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 58, 17, 17), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 58, rowIndex + 58, 1, 17), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 2, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 7, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 10, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 14, 16)); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 56, 2, 4)); ws.GetRow(rowIndex + 56).GetCell(2).SetCellValue("PREPARED"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 56, 5, 6)); ws.GetRow(rowIndex + 56).GetCell(5).SetCellValue("REVIEW"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 7, 9)); ws.GetRow(rowIndex + 56).GetCell(7).SetCellValue("JIANLI"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 10, 13)); ws.GetRow(rowIndex + 56).GetCell(10).SetCellValue("Worley"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 14, 16)); ws.GetRow(rowIndex + 56).GetCell(14).SetCellValue("BASF"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 57, rowIndex + 57, 2, 6)); ws.GetRow(rowIndex + 57).GetCell(2).SetCellValue("CC7"); #endregion rowIndex = rowIndex + 59; } #endregion ws.PrintSetup.Landscape = false; ws.ForceFormulaRecalculation = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.PrintSetup.Scale = 85; //ws.FitToPage = true; //垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 //ws.SetMargin(MarginType.RightMargin, 0); //ws.SetMargin(MarginType.LeftMargin, 0); //ws.SetMargin(MarginType.TopMargin, 0); //ws.SetMargin(MarginType.BottomMargin, 0); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //8-TP-06-单线图清单UG-FW-001 模版 private void template8(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //插入图片部分 var img1 = Server.MapPath("~/res/images/bsf/1.png"); var img2 = Server.MapPath("~/res/images/bsf/2.png"); var img3 = Server.MapPath("~/res/images/bsf/3.png"); var img4 = Server.MapPath("~/res/images/bsf/4.png"); int rowIndex = 0; //查询数据 string sql = @"select * from ( select a.PTP_ID, a.TestPackageNo, d.WorkAreaId, d.WorkAreaCode, c.PipelineId, c.PipelineCode, c.SystemNumber, a.TestHeat, a.TestType, c.SingleNumber, c.DrawingsNum, a.Remark, (select top 1 PageNum from Pipeline_WeldJoint where PipelineId=b.PipelineId order by WeldJointCode) as PageNum from PTP_TestPackage as a inner join PTP_PipelineList as b on a.PTP_ID=b.PTP_ID left join Pipeline_Pipeline as c on b.PipelineId=c.PipelineId left join Project_WorkArea as d on b.WorkAreaId=d.WorkAreaId ) as t where PTP_ID=@PTP_ID "; SqlParameter[] parms = new SqlParameter[]{ new SqlParameter("@PTP_ID",this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); //获取试压包第一行记录 #region 分页数据 var tbNum = dt.Rows.Count; var pageNum = tbNum < 37 ? 1 : Math.Ceiling((float)(tbNum - 37) / 37) + 1; for (int i = 1; i <= pageNum; i++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex, rowIndex, style, 0, 17, 13); ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 1, rowIndex + 1, style, 0, 17, 4); ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 2, rowIndex + 15, style, 0, 17, 13); ws.GetRow(rowIndex).GetCell(15).SetCellValue("Form No."); ws.GetRow(rowIndex).GetCell(16).SetCellValue("TP-06"); #region 设置样式 //设置列宽度 ws.SetColumnWidth(0, 1 * 256); ws.SetColumnWidth(1, 2 * 256); ws.SetColumnWidth(2, 9 * 256); ws.SetColumnWidth(3, 4 * 256); ws.SetColumnWidth(4, 4 * 256); ws.SetColumnWidth(5, 4 * 256); ws.SetColumnWidth(6, 5 * 256); ws.SetColumnWidth(7, 4 * 256); ws.SetColumnWidth(8, 4 * 256); ws.SetColumnWidth(9, 4 * 256); ws.SetColumnWidth(10, 4 * 256); ws.SetColumnWidth(11, 4 * 256); ws.SetColumnWidth(12, 4 * 256); ws.SetColumnWidth(13, 4 * 256); ws.SetColumnWidth(14, 8 * 256); ws.SetColumnWidth(15, 9 * 256); ws.SetColumnWidth(16, 9 * 256); ws.SetColumnWidth(17, 2 * 256); ////设置列宽度 //ws.SetColumnWidth(0, 3 * 256); //ws.SetColumnWidth(1, 1 * 256); //ws.SetColumnWidth(2, 8 * 256); //ws.SetColumnWidth(3, 5 * 256); //ws.SetColumnWidth(4, 5 * 256); //ws.SetColumnWidth(5, 8 * 256); //ws.SetColumnWidth(6, 8 * 256); //ws.SetColumnWidth(7, 4 * 256); //ws.SetColumnWidth(8, 8 * 256); //ws.SetColumnWidth(9, 8 * 256); //ws.SetColumnWidth(10, 8 * 256); //ws.SetColumnWidth(11, 8 * 256); //ws.SetColumnWidth(12, 1 * 256); //ws.SetColumnWidth(13, 9 * 256); //ws.SetColumnWidth(14, 10 * 256); //ws.SetColumnWidth(15, 10 * 256); //ws.SetColumnWidth(16, 10 * 256); //ws.SetColumnWidth(17, 1 * 256); ////设置前3行高度 //ws.GetRow(rowIndex + 0).Height = 15 * 20; //ws.GetRow(rowIndex + 1).Height = 4 * 20; //ws.GetRow(rowIndex + 2).Height = 14 * 20; //ws.GetRow(rowIndex + 3).Height = 18 * 20; //ws.GetRow(rowIndex + 4).Height = 18 * 20; //ws.GetRow(rowIndex + 5).Height = 18 * 20; //ws.GetRow(rowIndex + 6).Height = 18 * 20; //ws.GetRow(rowIndex + 7).Height = 18 * 20; //ws.GetRow(rowIndex + 8).Height = 18 * 20; //ws.GetRow(rowIndex + 9).Height = 18 * 20; //ws.GetRow(rowIndex + 10).Height = 18 * 20; //ws.GetRow(rowIndex + 11).Height = 18 * 20; //ws.GetRow(rowIndex + 12).Height = 18 * 20; //ws.GetRow(rowIndex + 13).Height = 18 * 20; //ws.GetRow(rowIndex + 14).Height = 18 * 20; RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 0, rowIndex + 0, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 16, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 2, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 2, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 14, 0, 0), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 16, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 17, 17), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 9, rowIndex + 14, 2, 2), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 2, 16), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 8, rowIndex + 8, 2, 16), ws); #endregion #region 插入图片 InsertImage(hssfworkbook, ws, rowIndex + 3, 2, rowIndex + 4, 3, img1, 1.2, 1.8); InsertImage(hssfworkbook, ws, rowIndex + 3, 3, rowIndex + 4, 4, img2, 10, 2, 30, 2); InsertImage(hssfworkbook, ws, rowIndex + 3, 14, rowIndex + 4, 14, img3, 1.5, 2, 8, 2); InsertImage(hssfworkbook, ws, rowIndex + 3, 15, rowIndex + 4, 15, img4, 3, 2, 35, 2); #endregion #region 试压包头部分 ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("巴斯夫(广东)一体化项目"); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 5, 13)); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("BASF (GUANGDONG) INTEGRATED PROJECT"); ws.GetRow(rowIndex + 4).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 5, 13)); ws.GetRow(rowIndex + 5).GetCell(5).SetCellValue("试压包单线图清单"); ws.GetRow(rowIndex + 5).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 5, 13)); ws.GetRow(rowIndex + 6).GetCell(5).SetCellValue("TEST PACKAGE ISOMETRIC LIST"); ws.GetRow(rowIndex + 6).GetCell(5).CellStyle = setStyle; var cellStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, false, false, "Arial Unicode MS"); ws.GetRow(rowIndex + 9).GetCell(2).SetCellValue("Test Package No"); ws.GetRow(rowIndex + 9).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(5).SetCellValue(info?.testpackageNo); ws.GetRow(rowIndex + 9).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(9).SetCellValue("Area"); ws.GetRow(rowIndex + 9).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(13).SetCellValue(info?.workAreaCode); ws.GetRow(rowIndex + 10).GetCell(2).SetCellValue("试压包号"); ws.GetRow(rowIndex + 10).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 10).GetCell(9).SetCellValue("区域"); ws.GetRow(rowIndex + 10).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(2).SetCellValue("System No"); ws.GetRow(rowIndex + 11).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(5).SetCellValue(info?.SystemNo); ws.GetRow(rowIndex + 11).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(9).SetCellValue("Test Pressure"); ws.GetRow(rowIndex + 11).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(13).SetCellValue(info?.TestPressure); ws.GetRow(rowIndex + 11).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(2).SetCellValue("系统号"); ws.GetRow(rowIndex + 12).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(9).SetCellValue("试验压力"); ws.GetRow(rowIndex + 12).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(9).SetCellValue("Test Type"); ws.GetRow(rowIndex + 13).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(13).SetCellValue(info?.TestType); ws.GetRow(rowIndex + 13).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 14).GetCell(9).SetCellValue("试验方式"); ws.GetRow(rowIndex + 14).GetCell(9).CellStyle = cellStyle2; RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 9, rowIndex + 14, 8, 8), ws); #endregion #endregion #region 表格部分 //数据表头部分 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 5, 13)); ws.GetRow(rowIndex + 15).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None); ws.GetRow(rowIndex + 15).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.GetRow(rowIndex + 15).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 3, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 9, 13)); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 2, 16), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 2, 16), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 2, 2), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 8, 8), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 13, 13), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 14, 14), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 15, 15), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 15, rowIndex + 15, 16, 16), ws); ws.GetRow(rowIndex + 15).GetCell(2).SetCellValue("No\r\n序号"); ws.GetRow(rowIndex + 15).GetCell(3).SetCellValue("Isometric Drawing No\r\n单线图号"); ws.GetRow(rowIndex + 15).GetCell(9).SetCellValue("Line Number No\r\n管线号"); ws.GetRow(rowIndex + 15).GetCell(14).SetCellValue("Rev\r\n版本"); ws.GetRow(rowIndex + 15).GetCell(15).SetCellValue("Sheet No.\r\n页码"); ws.GetRow(rowIndex + 15).GetCell(16).SetCellValue("Remark\r\n备注"); ws.GetRow(rowIndex + 15).Height = 40 * 20; style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, false, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 16, rowIndex + 53, style, 0, 17, true); var dataTit = rowIndex + 16; var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 37; } else { dStart = i == 2 ? 37 : ((i - 2) * 37) + 37; dEnd = ((i - 1) * 37) + 37; } var pageTb = GetPageToTable(dt, dStart, dEnd); int nextRow = 0; int lastRow = 0; int j = 0; for (int k = 0; k < 37; k++) { int dataIndex = dataTit + j; if (pageTb.Rows.Count > k) { DataRow dr = pageTb.Rows[k]; ws.GetRow(dataIndex).GetCell(2).SetCellValue($"{j + 1}"); ws.GetRow(dataIndex).GetCell(3).SetCellValue(dr["SingleNumber"].ToString()); ws.GetRow(dataIndex).GetCell(9).SetCellValue(dr["PipelineCode"].ToString()); ws.GetRow(dataIndex).GetCell(14).SetCellValue(dr["DrawingsNum"].ToString()); ws.GetRow(dataIndex).GetCell(15).SetCellValue(dr["PageNum"].ToString()); ws.GetRow(dataIndex).GetCell(16).SetCellValue(dr["Remark"].ToString()); } ws.GetRow(dataIndex).Height = 14 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + dataIndex, rowIndex + dataIndex, 3, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + dataIndex, rowIndex + dataIndex, 9, 13)); ws.GetRow(dataIndex).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.GetRow(dataIndex).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); RegionUtil.SetBorderLeft(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 2, 2), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 8, 8), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 13, 13), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 14, 14), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 15, 15), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 16, 16), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); nextRow = dataIndex; j++; } #region 注释 //foreach (DataRow dr in pageTb.Rows) //{ // int dataIndex = dataTit + j; // ws.GetRow(dataIndex).GetCell(2).SetCellValue($"{j + 1}"); // ws.GetRow(dataIndex).GetCell(3).SetCellValue(dr["SingleNumber"].ToString()); // ws.GetRow(dataIndex).GetCell(9).SetCellValue(dr["PipelineCode"].ToString()); // ws.GetRow(dataIndex).GetCell(14).SetCellValue(dr["DrawingsNum"].ToString()); // ws.GetRow(dataIndex).GetCell(15).SetCellValue(dr["PageNum"].ToString()); // ws.GetRow(dataIndex).GetCell(16).SetCellValue(dr["Remark"].ToString()); // ws.GetRow(dataIndex).Height = 14 * 20; // ws.AddMergedRegion(new CellRangeAddress(rowIndex + dataIndex, rowIndex + dataIndex, 3, 8)); // ws.AddMergedRegion(new CellRangeAddress(rowIndex + dataIndex, rowIndex + dataIndex, 9, 13)); // ws.GetRow(dataIndex).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); // ws.GetRow(dataIndex).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); // RegionUtil.SetBorderLeft(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 2, 2), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 8, 8), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 13, 13), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 14, 14), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 15, 15), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 16, 16), ws); // RegionUtil.SetBorderBottom(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); // nextRow = dataIndex; // j++; //} //如果pageData不满足33行数据的情况下,将设置剩余行高 //if (pageTb.Rows.Count < 34) //{ // for (int k = 1; k <= 34 - pageTb.Rows.Count; k++) // { // int dataIndex = rowIndex + nextRow + k; // ws.GetRow(dataIndex).Height = 14 * 20; // ws.GetRow(dataIndex).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None); // ws.GetRow(dataIndex).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); // ws.GetRow(dataIndex).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); // ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 3, 8)); // ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 9, 13)); // RegionUtil.SetBorderLeft(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 2, 2), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 8, 8), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 13, 13), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 14, 14), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 15, 15), ws); // RegionUtil.SetBorderRight(1, new CellRangeAddress(dataIndex, dataIndex, 16, 16), ws); // RegionUtil.SetBorderBottom(1, new CellRangeAddress(dataIndex, dataIndex, 2, 16), ws); // lastRow = nextRow + k; // } //} #endregion RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + lastRow, rowIndex + lastRow, 2, 16), ws); #endregion #region 尾部 ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 53, rowIndex + 58, style, 0, 17, 13); //ws.GetRow(rowIndex + 50).Height = 18 * 20; //ws.GetRow(rowIndex + 51).Height = 18 * 20; //ws.GetRow(rowIndex + 52).Height = 18 * 20; //ws.GetRow(rowIndex + 53).Height = 18 * 20; //ws.GetRow(rowIndex + 54).Height = 18 * 20; //ws.GetRow(rowIndex + 55).Height = 4 * 20; RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 53, rowIndex + 58, 1, 1), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 53, rowIndex + 58, 17, 17), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 53, rowIndex + 57, 2, 2), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 53, rowIndex + 57, 17, 17), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 55, rowIndex + 55, 2, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 55, 4, 4), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 55, 6, 6), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 55, 9, 9), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 55, 13, 13), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 4, 4), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 4, 4), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 6, 6), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 9, 9), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 56, rowIndex + 56, 13, 13), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 56, rowIndex + 57, 2, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 2, 6), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 6, 6), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 9, 9), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 57, rowIndex + 57, 13, 13), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 53, rowIndex + 58, 17, 17), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 58, rowIndex + 58, 1, 17), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 2, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 7, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 10, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 14, 16)); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 56, 2, 4)); ws.GetRow(rowIndex + 56).GetCell(2).SetCellValue("PREPARED"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 56, 5, 6)); ws.GetRow(rowIndex + 56).GetCell(5).SetCellValue("REVIEW"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 7, 9)); ws.GetRow(rowIndex + 56).GetCell(7).SetCellValue("JIANLI"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 10, 13)); ws.GetRow(rowIndex + 56).GetCell(10).SetCellValue("Worley"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 14, 16)); ws.GetRow(rowIndex + 56).GetCell(14).SetCellValue("BASF"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 57, rowIndex + 57, 2, 6)); ws.GetRow(rowIndex + 57).GetCell(2).SetCellValue("CC7"); #endregion rowIndex = rowIndex + 59; } #endregion ws.PrintSetup.Landscape = false; ws.ForceFormulaRecalculation = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.PrintSetup.Scale = 85; //ws.FitToPage = true; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; ////打印边距设置 //ws.SetMargin(MarginType.RightMargin, 0); //ws.SetMargin(MarginType.LeftMargin, 0); //ws.SetMargin(MarginType.TopMargin, 0); //ws.SetMargin(MarginType.BottomMargin, 0); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //11-TP-07-盲板清单UG-FW-001 private void template11(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //插入图片部分 var img1 = Server.MapPath("~/res/images/bsf/1.png"); var img2 = Server.MapPath("~/res/images/bsf/2.png"); var img3 = Server.MapPath("~/res/images/bsf/3.png"); var img4 = Server.MapPath("~/res/images/bsf/4.png"); int rowIndex = 0; //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 37 ? 1 : Math.Ceiling((float)(tbNum - 37) / 37) + 1; for (int num = 1; num <= pageNum; num++) { #region 头部 var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex, rowIndex + 14, style, 0, 17, 13); ws.GetRow(rowIndex).GetCell(15).SetCellValue("Form No."); ws.GetRow(rowIndex).GetCell(16).SetCellValue("TP-06"); //设置列宽度 ws.SetColumnWidth(0, 1 * 256); ws.SetColumnWidth(1, 2 * 256); ws.SetColumnWidth(2, 9 * 256); ws.SetColumnWidth(3, 4 * 256); ws.SetColumnWidth(4, 4 * 256); ws.SetColumnWidth(5, 4 * 256); ws.SetColumnWidth(6, 5 * 256); ws.SetColumnWidth(7, 4 * 256); ws.SetColumnWidth(8, 4 * 256); ws.SetColumnWidth(9, 4 * 256); ws.SetColumnWidth(10, 4 * 256); ws.SetColumnWidth(11, 4 * 256); ws.SetColumnWidth(12, 4 * 256); ws.SetColumnWidth(13, 4 * 256); ws.SetColumnWidth(14, 8 * 256); ws.SetColumnWidth(15, 9 * 256); ws.SetColumnWidth(16, 9 * 256); ws.SetColumnWidth(17, 2 * 256); ////设置列宽度 //ws.SetColumnWidth(0, 2 * 256); //ws.SetColumnWidth(1, 1 * 256); //ws.SetColumnWidth(2, 8 * 256); //ws.SetColumnWidth(3, 5 * 256); //ws.SetColumnWidth(4, 5 * 256); //ws.SetColumnWidth(5, 8 * 256); //ws.SetColumnWidth(6, 8 * 256); //ws.SetColumnWidth(7, 10 * 256); //ws.SetColumnWidth(8, 10 * 256); //ws.SetColumnWidth(9, 11 * 256); //ws.SetColumnWidth(10, 9 * 256); //ws.SetColumnWidth(11, 8 * 256); //ws.SetColumnWidth(12, 1 * 256); //ws.SetColumnWidth(13, 9 * 256); //ws.SetColumnWidth(14, 9 * 256); //ws.SetColumnWidth(15, 9 * 256); //ws.SetColumnWidth(16, 8 * 256); //ws.SetColumnWidth(17, 1 * 256); ////设置前3行高度 //ws.GetRow(0).Height = 15 * 20; //ws.GetRow(1).Height = 15 * 20; //ws.GetRow(2).Height = 14 * 20; ////设置3-15行的行高度 //for (int i = 3; i < 15; i++) //{ // ws.GetRow(i).Height = 18 * 20; //} RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex, rowIndex, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 16, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 2, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 2, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 14, 0, 0), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 16, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 17, 17), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 9, rowIndex + 14, 2, 2), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 2, 16), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 8, rowIndex + 8, 2, 16), ws); //插入图片 InsertImage(hssfworkbook, ws, rowIndex + 3, 2, rowIndex + 4, 3, img1, 1.2, 1.8); InsertImage(hssfworkbook, ws, rowIndex + 3, 3, rowIndex + 4, 4, img2, 1.9, 1.9); InsertImage(hssfworkbook, ws, rowIndex + 3, 13, rowIndex + 4, 14, img3, 1.5, 1.5); InsertImage(hssfworkbook, ws, rowIndex + 3, 15, rowIndex + 4, 16, img4, 1.5, 1.5); ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("巴斯夫(广东)一体化项目"); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 5, 13)); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("BASF (GUANGDONG) INTEGRATED PROJECT"); ws.GetRow(rowIndex + 4).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 5, 13)); ws.GetRow(rowIndex + 5).GetCell(5).SetCellValue("试压包盲板清单"); ws.GetRow(rowIndex + 5).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 5, 13)); ws.GetRow(rowIndex + 6).GetCell(5).SetCellValue("TEST PACKAGE BLIND LIST"); ws.GetRow(rowIndex + 6).GetCell(5).CellStyle = setStyle; var cellStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, false, false, "Arial Unicode MS"); ws.GetRow(rowIndex + 9).GetCell(2).SetCellValue("Test Package No"); ws.GetRow(rowIndex + 9).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(5).SetCellValue(info?.testpackageNo); ws.GetRow(rowIndex + 9).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(9).SetCellValue("Area"); ws.GetRow(rowIndex + 9).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(13).SetCellValue(info?.workAreaCode); ws.GetRow(rowIndex + 10).GetCell(2).SetCellValue("试压包号"); ws.GetRow(rowIndex + 10).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 10).GetCell(9).SetCellValue("区域"); ws.GetRow(rowIndex + 10).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(2).SetCellValue("System No"); ws.GetRow(rowIndex + 11).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(5).SetCellValue(info?.SystemNo); ws.GetRow(rowIndex + 11).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(9).SetCellValue("Test Pressure"); ws.GetRow(rowIndex + 11).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(13).SetCellValue(info?.TestPressure); ws.GetRow(rowIndex + 11).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(2).SetCellValue("系统号"); ws.GetRow(rowIndex + 12).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(9).SetCellValue("试验压力"); ws.GetRow(rowIndex + 12).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(9).SetCellValue("Test Type"); ws.GetRow(rowIndex + 13).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(13).SetCellValue(info?.TestType); ws.GetRow(rowIndex + 13).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 14).GetCell(9).SetCellValue("试验方式"); ws.GetRow(rowIndex + 14).GetCell(9).CellStyle = cellStyle2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 5, 13)); #endregion #region 表格部分 var dataTit = rowIndex + 15; var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 37; } else { dStart = num == 2 ? 37 : ((num - 2) * 37) + 37; dEnd = ((num - 1) * 37) + 37; } style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial"); ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 15, rowIndex + 52, style, 0, 17, 13); //数据表头部分 ws.GetRow(rowIndex + 15).GetCell(2).SetCellValue("No\r\n序号"); ws.GetRow(rowIndex + 15).GetCell(3).SetCellValue("Isometric Drawing No.\r\n单线图号"); ws.GetRow(rowIndex + 15).GetCell(7).SetCellValue("Blind No.\r\n盲板编号"); ws.GetRow(rowIndex + 15).GetCell(8).SetCellValue("Inch\r\n尺寸"); ws.GetRow(rowIndex + 15).GetCell(9).SetCellValue("Thick(mm)\r\n厚度"); ws.GetRow(rowIndex + 15).GetCell(10).SetCellValue("Material\r\n材质"); ws.GetRow(rowIndex + 15).GetCell(11).SetCellValue("Installed Date\r\n安装日期"); ws.GetRow(rowIndex + 15).GetCell(14).SetCellValue("Removed Date\r\n拆除日期"); ws.GetRow(rowIndex + 15).GetCell(16).SetCellValue("Remark\r\n备注"); var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 15; i <= 52; i++) { if (i == 15) { ws.GetRow(rowIndex + i).Height = 50 * 20; } else { if (pageTb.Rows.Count > j) { DataRow dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(2).SetCellValue(j + 1); ws.GetRow(rowIndex + i).GetCell(3).SetCellValue(dr["PTP_ID"].ToString()); } j++; } ws.GetRow(rowIndex + i).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None); ws.GetRow(rowIndex + i).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.GetRow(rowIndex + i).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 11, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 14, 15)); } #endregion #region 尾部 //此处的尾部行数需要根据 得到的动态数据量 来计算,默认写死从50行开始。 ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 53, rowIndex + 59, style, 0, 17, 13); for (int i = rowIndex + 53; i <= rowIndex + 59; i++) { ws.GetRow(i).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.Medium); ws.GetRow(i).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.Medium); ws.GetRow(i).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); } for (int i = 2; i < 17; i++) { ws.GetRow(rowIndex + 59).GetCell(i).CellStyle = SetStyle(hssfworkbook, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None, BorderStyle.None); } ws.GetRow(rowIndex + 59).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None); ws.GetRow(rowIndex + 59).GetCell(16).CellStyle = SetStyle(hssfworkbook, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None, BorderStyle.None); ws.GetRow(rowIndex + 59).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.Medium, BorderStyle.None, BorderStyle.Medium); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 2, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 7, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 10, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 53, rowIndex + 55, 14, 16)); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 56, 2, 4)); ws.GetRow(rowIndex + 56).GetCell(2).SetCellValue("PREPARED"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 56, 5, 6)); ws.GetRow(rowIndex + 56).GetCell(5).SetCellValue("REVIEW"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 7, 9)); ws.GetRow(rowIndex + 56).GetCell(7).SetCellValue("JIANLI"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 10, 13)); ws.GetRow(rowIndex + 56).GetCell(10).SetCellValue("Worley"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 56, rowIndex + 57, 14, 16)); ws.GetRow(rowIndex + 56).GetCell(14).SetCellValue("BASF"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 57, rowIndex + 57, 2, 6)); ws.GetRow(rowIndex + 57).GetCell(2).SetCellValue("CC7"); #endregion rowIndex = rowIndex + 60; } ws.PrintSetup.Landscape = false; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; ////打印边距设置 //ws.SetMargin(MarginType.RightMargin, 0); //ws.SetMargin(MarginType.LeftMargin, 0); //ws.SetMargin(MarginType.TopMargin, 0); //ws.SetMargin(MarginType.BottomMargin, 0); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //13-弹簧支吊架安装检验记录SHT 3503-J403 private void template13(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 8 ? 1 : Math.Ceiling((float)(tbNum - 8) / 8) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex, style, 1, 7, true); //设置列宽度 ws.SetColumnWidth(0, 2 * 256); ws.SetColumnWidth(1, 16 * 256); ws.SetColumnWidth(2, 16 * 256); ws.SetColumnWidth(3, 16 * 256); ws.SetColumnWidth(4, 16 * 256); ws.SetColumnWidth(5, 16 * 256); ws.SetColumnWidth(6, 19 * 256); ws.SetColumnWidth(7, 19 * 256); ws.GetRow(rowIndex).Height = 20 * 20 * 6; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 1, 2)); ws.GetRow(rowIndex).GetCell(1).SetCellValue("SH/T 3503—J403"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); style1.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 3, 5)); ws.GetRow(rowIndex).GetCell(3).CellStyle = style1; ws.GetRow(rowIndex).GetCell(3).SetCellValue("弹簧支/吊架安装检验记录\nSpring Support/Hanger Installation Inspection Record"); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); style2.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 6, 7)); ws.GetRow(rowIndex).GetCell(6).CellStyle = style2; ws.GetRow(rowIndex).GetCell(6).SetCellValue($"工程名称:{info?.projectName}\n\nProject Name:{info?.enProjectName}\n\n单位工程名称:{info?.workAreaName}\nUnit Name:{info?.enWorkAreaName}"); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 1, rowIndex + 9, style, 1, 7, true); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 8; } else { dStart = num == 2 ? 8 : ((num - 2) * 8) + 8; dEnd = ((num - 1) * 8) + 8; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 1; i <= 9; i++) { if (i == 1) { ws.GetRow(rowIndex + i).Height = 20 * 20 * 3; ws.GetRow(rowIndex + i).GetCell(1).SetCellValue("管道编号/单线号\nPiping No./Line No."); ws.GetRow(rowIndex + i).GetCell(2).SetCellValue("支/吊架位号\nSupport/Hanger Item No."); ws.GetRow(rowIndex + i).GetCell(3).SetCellValue("结构型式\nType"); ws.GetRow(rowIndex + i).GetCell(4).SetCellValue("位移方向\nDisplacement Direction"); ws.GetRow(rowIndex + i).GetCell(5).SetCellValue("设计冷态负荷值\nDesign Cold Load"); ws.GetRow(rowIndex + i).GetCell(6).SetCellValue("安装冷态负荷值\nInstallation Cold Load"); ws.GetRow(rowIndex + i).GetCell(7).SetCellValue("检查结果\nInspection Result"); } else { ws.GetRow(rowIndex + i).Height = 20 * 20; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(1).SetCellValue("模拟数据"); } j++; } } #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 10, rowIndex + 12, style, 1, 7, true); ws.GetRow(rowIndex + 10).Height = 20 * 20 * 2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 10, rowIndex + 10, 1, 7)); ws.GetRow(rowIndex + 10).GetCell(1).CellStyle = style2; ws.GetRow(rowIndex + 10).GetCell(1).SetCellValue(" 备注:\n Remarks:"); ws.GetRow(rowIndex + 11).Height = 20 * 20 * 2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 1, 2)); ws.GetRow(rowIndex + 11).GetCell(1).SetCellValue("建设/监理单位\nOwner/JianLi Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 3, 5)); ws.GetRow(rowIndex + 11).GetCell(3).SetCellValue("总 承 包 单 位\nGeneral Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 6, 7)); ws.GetRow(rowIndex + 11).GetCell(6).SetCellValue("施 工 单 位\nConstruction Contractor"); ws.GetRow(rowIndex + 12).Height = 20 * 20 * 6; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 12, 1, 2)); ws.GetRow(rowIndex + 12).GetCell(1).CellStyle = style2; ws.GetRow(rowIndex + 12).GetCell(1).SetCellValue(" 专业工程师:\n Discipline Engineer:\n\n\n\n\n 日期(DATE): 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 12, 3, 5)); ws.GetRow(rowIndex + 12).GetCell(3).CellStyle = style2; ws.GetRow(rowIndex + 12).GetCell(3).SetCellValue(" 专业工程师:\n Discipline Engineer:\n\n\n\n\n 日期(DATE): 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 12, 6, 7)); ws.GetRow(rowIndex + 12).GetCell(6).CellStyle = style2; ws.GetRow(rowIndex + 12).GetCell(6).SetCellValue(" 施工班组长:\n Foreman:\n 质量检查员:\n Quality Inspector:\n 专业工程师:\n Discipline Engineer: \n 日期(DATE): 年 月 日"); #endregion rowIndex += 13; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //14-滑动固定管托安装检验记录SHT 3503-J404 private void template14(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 8 ? 1 : Math.Ceiling((float)(tbNum - 8) / 8) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 1, style, 1, 7, true); //设置列宽度 ws.SetColumnWidth(0, 2 * 256); ws.SetColumnWidth(1, 16 * 256); ws.SetColumnWidth(2, 16 * 256); ws.SetColumnWidth(3, 16 * 256); ws.SetColumnWidth(4, 16 * 256); ws.SetColumnWidth(5, 16 * 256); ws.SetColumnWidth(6, 19 * 256); ws.SetColumnWidth(7, 19 * 256); ws.GetRow(rowIndex).Height = 20 * 20 * 5; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 1, 2)); ws.GetRow(rowIndex).GetCell(1).SetCellValue("SH/T 3503—J404"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); style1.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 3, 5)); ws.GetRow(rowIndex).GetCell(3).CellStyle = style1; ws.GetRow(rowIndex).GetCell(3).SetCellValue("滑动/固定管托安装检验记录\nSliding/Fixed Pipe Shoe Installation Inspection Record"); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); style2.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 6, 7)); ws.GetRow(rowIndex).GetCell(6).CellStyle = style2; ws.GetRow(rowIndex).GetCell(6).SetCellValue($"工程名称:{info?.projectName}\nProject Name:{info?.enProjectName}\n\n单位工程名称:{info?.workAreaName}\n Unit Name:{info?.enWorkAreaName}"); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 1, rowIndex + 9, style, 1, 7, true); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 8; } else { dStart = num == 2 ? 8 : ((num - 2) * 8) + 8; dEnd = ((num - 1) * 8) + 8; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 1; i <= 9; i++) { if (i == 1) { ws.GetRow(rowIndex + i).Height = 20 * 20 * 2; ws.GetRow(rowIndex + i).GetCell(1).SetCellValue("管道编号/单线号\nPiping No./ Line"); ws.GetRow(rowIndex + i).GetCell(2).SetCellValue("管托编号\nPipe Shoe No."); ws.GetRow(rowIndex + i).GetCell(3).SetCellValue("型 式\nType"); ws.GetRow(rowIndex + i).GetCell(4).SetCellValue("位移方向\nDisplacement Direction"); ws.GetRow(rowIndex + i).GetCell(5).SetCellValue("设计位移量\nDesign Displacement"); ws.GetRow(rowIndex + i).GetCell(6).SetCellValue("安装位移量\nInstallation Displacement"); ws.GetRow(rowIndex + i).GetCell(7).SetCellValue("检验结果\nInspection Result"); } else { ws.GetRow(rowIndex + i).Height = 20 * 20; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(1).SetCellValue("模拟数据"); } j++; } } #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 10, rowIndex + 13, style, 1, 7, true); ws.GetRow(rowIndex + 10).Height = 20 * 20 * 2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 10, rowIndex + 10, 1, 7)); ws.GetRow(rowIndex + 10).GetCell(1).CellStyle = style2; ws.GetRow(rowIndex + 10).GetCell(1).SetCellValue(" 注:本表用于设计温度>350℃管道和低于-29℃管道中,管托有位移要求的滑动和固定管托的安装检验。\nNote: This form is applicable to the installation inspection on sliding/fixed pipe shoes with displacement requirement used in piping at a design temperature above 350℃and in piping at a design temperature below -29℃."); ws.GetRow(rowIndex + 11).Height = 20 * 20 * 2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 1, 7)); ws.GetRow(rowIndex + 11).GetCell(1).CellStyle = style2; ws.GetRow(rowIndex + 11).GetCell(1).SetCellValue(" 备注:\n Remarks:"); ws.GetRow(rowIndex + 12).Height = 20 * 20 * 2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 12, 1, 2)); ws.GetRow(rowIndex + 12).GetCell(1).SetCellValue("建设/监理单位\nOwner/JianLi Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 12, 3, 5)); ws.GetRow(rowIndex + 12).GetCell(3).SetCellValue("总 承 包 单 位\nGeneral Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 12, rowIndex + 12, 6, 7)); ws.GetRow(rowIndex + 12).GetCell(6).SetCellValue("施 工 单 位\nConstruction Contractor"); ws.GetRow(rowIndex + 13).Height = 20 * 20 * 6; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 13, rowIndex + 13, 1, 2)); ws.GetRow(rowIndex + 13).GetCell(1).CellStyle = style2; ws.GetRow(rowIndex + 13).GetCell(1).SetCellValue(" 专业工程师:\n Discipline Engineer:\n\n\n\n\n 日期(DATE): 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 13, rowIndex + 13, 3, 5)); ws.GetRow(rowIndex + 13).GetCell(3).CellStyle = style2; ws.GetRow(rowIndex + 13).GetCell(3).SetCellValue(" 专业工程师:\n Discipline Engineer:\n\n\n\n\n 日期(DATE): 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 13, rowIndex + 13, 6, 7)); ws.GetRow(rowIndex + 13).GetCell(6).CellStyle = style2; ws.GetRow(rowIndex + 13).GetCell(6).SetCellValue(" 施工班组长:\n Foreman:\n 质量检查员:\n Quality Inspector:\n 专业工程师:\n Discipline Engineer: \n 日期(DATE): 年 月 日"); #endregion rowIndex += 14; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //15-管道补偿器安装检验记录SHT 3503-J405 private void template15(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 16 ? 1 : Math.Ceiling((float)(tbNum - 16) / 16) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { #region 头部 var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, false, "宋体"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 3, style, 0, 12, true); //设置列宽 ws.SetColumnWidth(0, 14 * 256);//A ws.SetColumnWidth(1, 8 * 256);//B ws.SetColumnWidth(2, 8 * 256);//C ws.SetColumnWidth(3, 9 * 256);//D ws.SetColumnWidth(4, 9 * 256);//E ws.SetColumnWidth(5, 8 * 256);//F ws.SetColumnWidth(6, 13 * 256);//G ws.SetColumnWidth(7, 9 * 256);//H ws.SetColumnWidth(8, 13 * 256);//I ws.SetColumnWidth(9, 9 * 256);//J ws.SetColumnWidth(10, 9 * 256);//K ws.SetColumnWidth(11, 9 * 256);//L ws.SetColumnWidth(12, 10 * 256);//M ws.AddMergedRegion(new CellRangeAddress(rowIndex + 0, rowIndex + 3, 0, 1)); ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T 3503-J405"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 0, rowIndex + 3, 2, 9)); ws.GetRow(rowIndex).GetCell(2).SetCellValue("管道补偿器安装检验记录\r\nPipe Compensator Installation Inspection Record"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 0, rowIndex + 0, 10, 12)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 10, 12)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 10, 12)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 10, 12)); ws.GetRow(rowIndex).GetCell(10).SetCellValue($"工程名称:{info?.projectName}"); ws.GetRow(rowIndex + 1).GetCell(10).SetCellValue($"Project Name:{info?.enProjectName}"); ws.GetRow(rowIndex + 2).GetCell(10).SetCellValue($"单位工程名称:{info?.workAreaName}"); ws.GetRow(rowIndex + 3).GetCell(10).SetCellValue($"Unit Name:{info?.enWorkAreaName}"); ws.GetRow(rowIndex).HeightInPoints = 19.8f; ws.GetRow(rowIndex + 1).HeightInPoints = 13.8f; ws.GetRow(rowIndex + 2).HeightInPoints = 25f; ws.GetRow(rowIndex + 3).HeightInPoints = 28f; #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 4, rowIndex + 5, style, 0, 12, true); ws.GetRow(rowIndex + 4).HeightInPoints = 25f; ws.GetRow(rowIndex + 5).HeightInPoints = 25f; //设置表头部分 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 0, 0)); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("管道编号/单线号\r\nPiping No./Line No"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 1, 2)); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue("补偿器编号\r\nCompensator No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 3, 3)); ws.GetRow(rowIndex + 4).GetCell(3).SetCellValue("型式\r\nType"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 4, 4)); ws.GetRow(rowIndex + 4).GetCell(4).SetCellValue("规格\r\nSpecification"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 5, 5)); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("材质\r\nMaterial"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 6, 6)); ws.GetRow(rowIndex + 4).GetCell(6).SetCellValue("固定支架间距\r\nFixed Support SoacingM"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 7, 7)); ws.GetRow(rowIndex + 4).GetCell(7).SetCellValue("设计压力\r\nDesign Pressure"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 8, 8)); ws.GetRow(rowIndex + 4).GetCell(8).SetCellValue("设计温度\r\nDesign Temperature\r\n℃"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 9, 11)); ws.GetRow(rowIndex + 4).GetCell(9).SetCellValue("轴/角向预变形量\r\nAxial/Angular Predeformation"); ws.GetRow(rowIndex + 5).GetCell(9).SetCellValue("单位\r\nUnit"); ws.GetRow(rowIndex + 5).GetCell(10).SetCellValue("设计值\r\nDesign Value"); ws.GetRow(rowIndex + 5).GetCell(11).SetCellValue("实测值\r\nActual Value"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 12, 12)); ws.GetRow(rowIndex + 4).GetCell(12).SetCellValue("检验结果\r\nInspection Result"); //这里创建行数据 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 6, rowIndex + 21, style, 0, 12, true); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 16; } else { dStart = num == 2 ? 16 : ((num - 2) * 16) + 16; dEnd = ((num - 1) * 16) + 16; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 6; i <= 21; i++) { ws.GetRow(rowIndex + i).HeightInPoints = 17f; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(0).SetCellValue("模拟数据"); } j++; } #endregion #region 尾部 style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, true, false); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 22, rowIndex + 28, style, 0, 12, true); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 0, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 4, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 9, 12)); ws.GetRow(rowIndex + 22).GetCell(0).SetCellValue("建设/监理单位\r\nOwner/Supervision Contractor"); ws.GetRow(rowIndex + 22).GetCell(4).SetCellValue("总承包单位\r\nGeneral Contractor"); ws.GetRow(rowIndex + 22).GetCell(9).SetCellValue("施工单位\r\nConstruction Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 0, 1)); ws.GetRow(rowIndex + 23).GetCell(0).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 9, 12)); ws.GetRow(rowIndex + 23).GetCell(9).SetCellValue("记录人 :\r\nRecord Prepared by:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 25, rowIndex + 25, 9, 12)); ws.GetRow(rowIndex + 25).GetCell(9).SetCellValue("质量检查员:\r\nQuality Inspector:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 9, 12)); ws.GetRow(rowIndex + 25).GetCell(9).SetCellValue("焊接责任工程师:\r\nWelding Engineer:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 28, 0, 3)); ws.GetRow(rowIndex + 28).GetCell(0).SetCellValue("日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 28, 4, 8)); ws.GetRow(rowIndex + 28).GetCell(4).SetCellValue("日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 28, 9, 12)); ws.GetRow(rowIndex + 28).GetCell(9).SetCellValue("日期Date: 年 月 日"); RegionUtil.SetBorderTop(1, new CellRangeAddress(rowIndex + 22, rowIndex + 22, 0, 12), ws); RegionUtil.SetBorderLeft(1, new CellRangeAddress(rowIndex + 22, rowIndex + 28, 0, 0), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 22, rowIndex + 28, 12, 12), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 28, rowIndex + 28, 0, 12), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 22, rowIndex + 28, 3, 3), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 22, rowIndex + 28, 8, 8), ws); ws.GetRow(rowIndex + 22).HeightInPoints = 30f; ws.GetRow(rowIndex + 23).HeightInPoints = 30f; ws.GetRow(rowIndex + 24).HeightInPoints = 3f; ws.GetRow(rowIndex + 25).HeightInPoints = 30f; ws.GetRow(rowIndex + 26).HeightInPoints = 5f; ws.GetRow(rowIndex + 27).HeightInPoints = 5f; ws.GetRow(rowIndex + 28).HeightInPoints = 30f; #endregion rowIndex += 29; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////横向打印 //ws.PrintSetup.Landscape = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //16-TP-08-静电接地清单UG-FW-001 private void template16(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //插入图片部分 var img1 = Server.MapPath("~/res/images/bsf/1.png"); var img2 = Server.MapPath("~/res/images/bsf/2.png"); var img3 = Server.MapPath("~/res/images/bsf/3.png"); var img4 = Server.MapPath("~/res/images/bsf/4.png"); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 24 ? 1 : Math.Ceiling((float)(tbNum - 24) / 24) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 14, style, 0, 17, true); ws.GetRow(rowIndex).GetCell(14).SetCellValue("Form No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 14, 15)); ws.GetRow(rowIndex).GetCell(16).SetCellValue("TP-06"); //设置列宽度 ws.SetColumnWidth(0, 2 * 256);//A ws.SetColumnWidth(1, 1 * 256);//B ws.SetColumnWidth(2, 5 * 256);//C ws.SetColumnWidth(3, 4 * 256);//D ws.SetColumnWidth(4, 4 * 256);//E ws.SetColumnWidth(5, 5 * 256);//F ws.SetColumnWidth(6, 5 * 256);//G ws.SetColumnWidth(7, 5 * 256);//H ws.SetColumnWidth(8, 6 * 256);//I ws.SetColumnWidth(9, 7 * 256);//J ws.SetColumnWidth(10, 6 * 256);//K ws.SetColumnWidth(11, 6 * 256);//L ws.SetColumnWidth(12, 1 * 256);//M ws.SetColumnWidth(13, 6 * 256);//N ws.SetColumnWidth(14, 6 * 256);//O ws.SetColumnWidth(15, 6 * 256);//P ws.SetColumnWidth(16, 7 * 256);//Q ws.SetColumnWidth(17, 1 * 256);//R //设置前3行高度 ws.GetRow(rowIndex).Height = 15 * 20; ws.GetRow(rowIndex + 1).Height = 15 * 20; ws.GetRow(rowIndex + 2).Height = 14 * 20; //设置3-15行的行高度 for (int i = rowIndex + 3; i < rowIndex + 15; i++) { ws.GetRow(i).Height = 18 * 20; } RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex, rowIndex, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 16, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 2, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 2, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 14, 0, 0), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 16, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 17, 17), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 9, rowIndex + 14, 2, 2), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 2, 16), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 8, rowIndex + 8, 2, 16), ws); //插入图片 InsertImage(hssfworkbook, ws, rowIndex + 3, 2, rowIndex + 4, 3, img1, 1.2, 1.8); InsertImage(hssfworkbook, ws, rowIndex + 3, 3, rowIndex + 4, 4, img2, 1.9, 1.9); InsertImage(hssfworkbook, ws, rowIndex + 3, 13, rowIndex + 4, 14, img3, 1.5, 1.5); InsertImage(hssfworkbook, ws, rowIndex + 3, 15, rowIndex + 4, 16, img4, 1.5, 1.5); ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("巴斯夫(广东)一体化项目"); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 5, 13)); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("BASF (GUANGDONG) INTEGRATED PROJECT"); ws.GetRow(rowIndex + 4).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 5, 13)); ws.GetRow(rowIndex + 5).GetCell(5).SetCellValue("管道静电接地清单"); ws.GetRow(rowIndex + 5).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 5, 13)); ws.GetRow(rowIndex + 6).GetCell(5).SetCellValue("LIST OF PIPING ELECTROSTATIC GROUNDING"); ws.GetRow(rowIndex + 6).GetCell(5).CellStyle = setStyle; var cellStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, false, false, "Arial Unicode MS"); ws.GetRow(rowIndex + 9).GetCell(2).SetCellValue("Test Package No"); ws.GetRow(rowIndex + 9).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(5).SetCellValue(info?.testpackageNo); ws.GetRow(rowIndex + 9).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(9).SetCellValue("Area"); ws.GetRow(rowIndex + 9).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(13).SetCellValue(info?.workAreaCode); ws.GetRow(rowIndex + 10).GetCell(2).SetCellValue("试压包号"); ws.GetRow(rowIndex + 10).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 10).GetCell(9).SetCellValue("区域"); ws.GetRow(rowIndex + 10).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(2).SetCellValue("System No"); ws.GetRow(rowIndex + 11).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(5).SetCellValue(info?.SystemNo); ws.GetRow(rowIndex + 11).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(9).SetCellValue("Test Pressure"); ws.GetRow(rowIndex + 11).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(13).SetCellValue(info?.TestPressure); ws.GetRow(rowIndex + 11).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(2).SetCellValue("系统号"); ws.GetRow(rowIndex + 12).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(9).SetCellValue("试验压力"); ws.GetRow(rowIndex + 12).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(9).SetCellValue("Test Type"); ws.GetRow(rowIndex + 13).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(13).SetCellValue(info?.TestType); ws.GetRow(rowIndex + 13).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 14).GetCell(9).SetCellValue("试验方式"); ws.GetRow(rowIndex + 14).GetCell(9).CellStyle = cellStyle2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 5, 13)); #endregion #region 表格部分 style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 15, rowIndex + 40, style, 0, 17, true); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 24; } else { dStart = num == 2 ? 24 : ((num - 2) * 24) + 24; dEnd = ((num - 1) * 24) + 24; } var pageTb = GetPageToTable(dt, dStart, dEnd); ws.GetRow(rowIndex + 15).HeightInPoints = 28f; //数据表头部分 ws.GetRow(rowIndex + 15).GetCell(2).SetCellValue("No\r\n序号"); ws.GetRow(rowIndex + 15).GetCell(3).SetCellValue("Isometric Drawing No\r\n单线图号"); ws.GetRow(rowIndex + 15).GetCell(8).SetCellValue("接头型式\r\nConnection Type"); ws.GetRow(rowIndex + 15).GetCell(10).SetCellValue("规格\r\nSpecification"); ws.GetRow(rowIndex + 15).GetCell(13).SetCellValue("材质\r\nMaterial"); ws.GetRow(rowIndex + 15).GetCell(16).SetCellValue("Remark\r\n备注"); int j = 0; for (int i = 15; i <= 39; i++) { ws.GetRow(rowIndex + i).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None); ws.GetRow(rowIndex + i).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.GetRow(rowIndex + i).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 8, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 10, 12)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 13, 15)); if (i > 15) { ws.GetRow(rowIndex + i).HeightInPoints = 18f; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(3).SetCellValue(dr["PTP_ID"].ToString()); } j++; } } #endregion #region 尾部 //此处的尾部行数需要根据 得到的动态数据量 来计算,默认写死从50行开始。 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 40, rowIndex + 45, style, 0, 17, true); for (int i = rowIndex + 40; i <= rowIndex + 45; i++) { ws.GetRow(i).Height = 18 * 20; ws.GetRow(i).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.Medium); ws.GetRow(i).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.Medium); ws.GetRow(i).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); } ws.GetRow(rowIndex + 40).HeightInPoints = 14f; ws.GetRow(rowIndex + 41).HeightInPoints = 14f; ws.GetRow(rowIndex + 42).HeightInPoints = 14f; for (int i = 2; i < 17; i++) { ws.GetRow(rowIndex + 45).GetCell(i).CellStyle = SetStyle(hssfworkbook, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None, BorderStyle.None); } ws.GetRow(rowIndex + 45).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None); ws.GetRow(rowIndex + 45).GetCell(16).CellStyle = SetStyle(hssfworkbook, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None, BorderStyle.None); ws.GetRow(rowIndex + 45).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.Medium, BorderStyle.None, BorderStyle.Medium); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 42, 2, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 42, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 42, 7, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 42, 10, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 42, 14, 16)); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 43, rowIndex + 43, 2, 4)); ws.GetRow(rowIndex + 43).GetCell(2).SetCellValue("PREPARED"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 43, rowIndex + 43, 5, 6)); ws.GetRow(rowIndex + 43).GetCell(5).SetCellValue("REVIEW"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 43, rowIndex + 44, 7, 9)); ws.GetRow(rowIndex + 43).GetCell(7).SetCellValue("JIANLI"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 43, rowIndex + 44, 10, 13)); ws.GetRow(rowIndex + 43).GetCell(10).SetCellValue("Worley"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 43, rowIndex + 44, 14, 16)); ws.GetRow(rowIndex + 43).GetCell(14).SetCellValue("BASF"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 44, rowIndex + 44, 2, 6)); ws.GetRow(rowIndex + 44).GetCell(2).SetCellValue("CC7"); #endregion rowIndex += 46; } ws.PrintSetup.Landscape = false; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //17-管道焊接接头热处理报告SHT 3503-J411 private void template17(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 9 ? 1 : Math.Ceiling((float)(tbNum - 9) / 9) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 2, style, 1, 12, true); ws.SetColumnWidth(0, 1 * 256);//A ws.SetColumnWidth(1, 11 * 256);//B ws.SetColumnWidth(2, 9 * 256);//C ws.SetColumnWidth(3, 11 * 256);//D ws.SetColumnWidth(4, 9 * 256);//E ws.SetColumnWidth(5, 11 * 256);//F ws.SetColumnWidth(6, 11 * 256);//G ws.SetColumnWidth(7, 11 * 256);//H ws.SetColumnWidth(8, 10 * 256);//I ws.SetColumnWidth(9, 10 * 256);//J ws.SetColumnWidth(10, 10 * 256);//K ws.SetColumnWidth(11, 11 * 256);//L ws.SetColumnWidth(12, 11 * 256);//M ws.GetRow(rowIndex).HeightInPoints = 100f; ws.GetRow(rowIndex + 1).HeightInPoints = 18f; ws.GetRow(rowIndex + 2).HeightInPoints = 50f; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 1, 4)); ws.GetRow(rowIndex).GetCell(1).SetCellValue("SH/T 3503—J411-1"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); style1.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 5, 8)); ws.GetRow(rowIndex).GetCell(5).CellStyle = style1; var title = num == 1 ? "管道焊接接头热处理报告\nPiping Welded Joint Heat Treatment Report" : "管道焊接接头热处理报告(续)\nPiping Welded Joint Heat Treatment Report(Continued)"; ws.GetRow(rowIndex).GetCell(5).SetCellValue(title); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); style2.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 9, 12)); ws.GetRow(rowIndex).GetCell(9).CellStyle = style2; ws.GetRow(rowIndex).GetCell(9).SetCellValue($"工程名称:{info?.projectName}\n\nProject Name:{info?.enProjectName}\n\n单位工程名称:{info?.workAreaName}\n\nUnit Name:{info?.enWorkAreaName}"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 2, 12)); ws.GetRow(rowIndex + 1).GetCell(1).SetCellValue("Report No."); ws.GetRow(rowIndex + 2).GetCell(1).SetCellValue("Heat Treatment Method"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 2, 6)); ws.GetRow(rowIndex + 2).GetCell(7).SetCellValue("Heat Treatment Equipment"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 8, 12)); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 3, rowIndex + 13, style, 1, 12, true); for (int i = 3; i <= 13; i++) { ws.GetRow(rowIndex + i).Height = 20 * 20; if (3 == i) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 1, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 2, 2)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 3, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 4, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 8, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 9, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 10, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 11, 11)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 12, 12)); } if (4 == i) continue; } ws.GetRow(rowIndex + 3).GetCell(1).SetCellValue("Piping No./Line No."); ws.GetRow(rowIndex + 3).GetCell(2).SetCellValue("Weld No."); ws.GetRow(rowIndex + 3).GetCell(3).SetCellValue("Temp. Measuring Point No."); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue("HT Temperature ℃"); ws.GetRow(rowIndex + 3).GetCell(6).SetCellValue("Holding Time h"); ws.GetRow(rowIndex + 3).GetCell(8).SetCellValue("Material"); ws.GetRow(rowIndex + 3).GetCell(9).SetCellValue("Specification"); ws.GetRow(rowIndex + 3).GetCell(10).SetCellValue("Heat Treatment Date"); ws.GetRow(rowIndex + 3).GetCell(11).SetCellValue("Recording Curve No."); ws.GetRow(rowIndex + 3).GetCell(12).SetCellValue("Hardness Report No."); ws.GetRow(rowIndex + 4).GetCell(4).SetCellValue("Required"); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("Actual"); ws.GetRow(rowIndex + 4).GetCell(6).SetCellValue("Required"); ws.GetRow(rowIndex + 4).GetCell(7).SetCellValue("Actual"); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 9; } else { dStart = num == 2 ? 9 : ((num - 2) * 9) + 9; dEnd = ((num - 1) * 9) + 9; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 5; i <= 13; i++) { if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(2).SetCellValue(dr["PTP_ID"].ToString()); } j++; } #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 14, rowIndex + 16, style, 1, 12, true); ws.GetRow(rowIndex + 14).Height = 18 * 20; ws.GetRow(rowIndex + 15).Height = 18 * 20; ws.GetRow(rowIndex + 16).Height = 18 * 20 * 4; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 14, rowIndex + 14, 1, 12)); ws.GetRow(rowIndex + 14).GetCell(1).SetCellValue("Conclusion:"); ws.GetRow(rowIndex + 14).GetCell(1).CellStyle = style2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 1, 3)); ws.GetRow(rowIndex + 15).GetCell(1).SetCellValue("Owner/Supervision Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 4, 6)); ws.GetRow(rowIndex + 15).GetCell(4).SetCellValue("General Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 7, 9)); ws.GetRow(rowIndex + 15).GetCell(7).SetCellValue("Construction Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 10, 12)); ws.GetRow(rowIndex + 15).GetCell(10).SetCellValue("Heat Treatment Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 1, 3)); ws.GetRow(rowIndex + 16).GetCell(1).SetCellValue(" Discipline Engineer:\n\n\n\n Date:"); ws.GetRow(rowIndex + 16).GetCell(1).CellStyle = style2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 4, 6)); ws.GetRow(rowIndex + 16).GetCell(4).SetCellValue(" Discipline Engineer:\n\n\n\n Date:"); ws.GetRow(rowIndex + 16).GetCell(4).CellStyle = style2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 7, 9)); ws.GetRow(rowIndex + 16).GetCell(7).SetCellValue(" Foreman:\n Quality Inspector:\n Discipline Engineer:\n\n Date:"); ws.GetRow(rowIndex + 16).GetCell(7).CellStyle = style2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 10, 12)); ws.GetRow(rowIndex + 16).GetCell(10).SetCellValue(" Operator:\n Discipline Engineer:\n\n\n Date:"); ws.GetRow(rowIndex + 16).GetCell(10).CellStyle = style2; #endregion rowIndex += 17; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////横向打印 //ws.PrintSetup.Landscape = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //18-金属材料化学成分检验报告SHT 3503-J129 private void template18(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 11 ? 1 : Math.Ceiling((float)(tbNum - 11) / 11) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 3, style, 1, 15, true); ws.SetColumnWidth(0, 1 * 256);//A ws.SetColumnWidth(1, 5 * 256);//B ws.SetColumnWidth(2, 5 * 256);//C ws.SetColumnWidth(3, 4 * 256);//D ws.SetColumnWidth(4, 4 * 256);//E ws.SetColumnWidth(5, 6 * 256);//F ws.SetColumnWidth(6, 6 * 256);//G ws.SetColumnWidth(7, 6 * 256);//H ws.SetColumnWidth(8, 6 * 256);//I ws.SetColumnWidth(9, 6 * 256);//J ws.SetColumnWidth(10, 6 * 256);//K ws.SetColumnWidth(11, 6 * 256);//L ws.SetColumnWidth(12, 6 * 256);//M ws.SetColumnWidth(13, 5 * 256);//N ws.SetColumnWidth(14, 5 * 256);//O ws.SetColumnWidth(15, 8 * 256);//P //ws.SetColumnWidth(0, 2 * 256); //for (int i = 1; i < 16; i++) //{ // if (i == 3 || i == 4) // ws.SetColumnWidth(i, 4 * 256); // else if (i == 15) // ws.SetColumnWidth(i, 8 * 256); // else // ws.SetColumnWidth(i, 5 * 256); //} ws.GetRow(rowIndex).Height = 20 * 20 * 6; ws.GetRow(rowIndex + 1).HeightInPoints = 50; ws.GetRow(rowIndex + 2).HeightInPoints = 60; ws.GetRow(rowIndex + 3).HeightInPoints = 50; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 1, 4)); ws.GetRow(rowIndex).GetCell(1).SetCellValue("SH/T 3503—J129"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); style1.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 5, 10)); ws.GetRow(rowIndex).GetCell(5).CellStyle = style1; ws.GetRow(rowIndex).GetCell(5).SetCellValue($"金属材料化学成分检验报告\nMetal Material Chemical Composition Test Report\n\n第 {num} 页 共 {pageNum} 页 Page of "); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); style2.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 11, 15)); ws.GetRow(rowIndex).GetCell(11).CellStyle = style2; ws.GetRow(rowIndex).GetCell(11).SetCellValue($"工程名称:{info?.projectName}\nProject Name:{info?.enProjectName}\n单位工程名称:{info?.workAreaName}\nUnit Name:{info?.enWorkAreaName}"); for (int i = 1; i < 4; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 1, 2)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 8, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 11, 12)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 13, 15)); } ws.GetRow(rowIndex + 1).GetCell(1).SetCellValue("委托单位\nEntrusted by"); ws.GetRow(rowIndex + 1).GetCell(6).SetCellValue("施工单位\nConstruction Contractor"); ws.GetRow(rowIndex + 1).GetCell(11).SetCellValue("报告编号\nReport No."); ws.GetRow(rowIndex + 2).GetCell(1).SetCellValue("检件名称\nTest Piece Description"); ws.GetRow(rowIndex + 2).GetCell(6).SetCellValue("检验标准\nTest Criteria"); ws.GetRow(rowIndex + 2).GetCell(11).SetCellValue("被检验材料标准\nMaterial Specification"); ws.GetRow(rowIndex + 3).GetCell(1).SetCellValue("检验方法\nTest Method"); ws.GetRow(rowIndex + 3).GetCell(6).SetCellValue("设备型号\nEquipment Model"); ws.GetRow(rowIndex + 3).GetCell(11).SetCellValue("检件材质\nTest Piece Material"); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 4, rowIndex + 16, style, 1, 15, true); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 11; } else { dStart = num == 2 ? 11 : ((num - 2) * 11) + 11; dEnd = ((num - 1) * 11) + 11; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 4; i < 17; i++) { if (i == 5) { ws.GetRow(rowIndex + i).HeightInPoints = 70f; continue; } if (i == 4) { ws.GetRow(rowIndex + i).HeightInPoints = 60f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 1, 2)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 3, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 5, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 6, 15)); } else { ws.GetRow(rowIndex + i).HeightInPoints = 20f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 1, 2)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 4)); if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(3).SetCellValue(dr["PTP_ID"].ToString()); } j++; } } ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue("质量证明文件编号/炉批号\nQuality Certificate No./Heat No. or Lot No."); ws.GetRow(rowIndex + 4).GetCell(3).SetCellValue("检验部位编号\nTest Position No."); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("规格\nSpecification"); ws.GetRow(rowIndex + 4).GetCell(6).SetCellValue("元素含量%\nElement Content"); #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 17, rowIndex + 23, style, 1, 15, true); ws.GetRow(rowIndex + 17).Height = 20 * 20 * 4; ws.GetRow(rowIndex + 23).Height = 90 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 1, 15)); ws.GetRow(rowIndex + 17).GetCell(1).SetCellValue(" 检验结论Conclusion:\n 共检验点,符合标准要求点,不符合标准要求点,具体检验部位详见示意图。\n Totally points are tested, where points are conforming and points are nonconforming. For specific test positions, see the sketch."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 1, 5)); ws.GetRow(rowIndex + 23).GetCell(1).SetCellValue("\n 试验人Tested by:\n\n\n 资格Qualification:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 6, 10)); ws.GetRow(rowIndex + 23).GetCell(6).SetCellValue("\n 审核人Reviewed by:\n\n\n 资格Qualification:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 11, 15)); ws.GetRow(rowIndex + 23).GetCell(11).SetCellValue(" 检测单位:(公章)\n\n Inspection Agency: (Official Seal)\n\n 报告日期Date: 年 月 日"); ws.GetRow(rowIndex + 17).GetCell(1).CellStyle = ws.GetRow(rowIndex + 23).GetCell(1).CellStyle = ws.GetRow(rowIndex + 23).GetCell(6).CellStyle = ws.GetRow(rowIndex + 23).GetCell(11).CellStyle = style2; #endregion rowIndex += 19; } ws.PrintSetup.Landscape = false; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //19-硬度检查报告SHT 3503-J130 private void template19(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 15 ? 1 : Math.Ceiling((float)(tbNum - 15) / 15) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 4, style, 1, 12, true); ws.SetColumnWidth(0, 1 * 256);//A ws.SetColumnWidth(1, 10 * 256);//B ws.SetColumnWidth(2, 5 * 256);//C ws.SetColumnWidth(3, 5 * 256);//D ws.SetColumnWidth(4, 5 * 256);//E ws.SetColumnWidth(5, 10 * 256);//F ws.SetColumnWidth(6, 5 * 256);//G ws.SetColumnWidth(7, 7 * 256);//H ws.SetColumnWidth(8, 5 * 256);//I ws.SetColumnWidth(9, 10 * 256);//J ws.SetColumnWidth(10, 7 * 256);//K ws.SetColumnWidth(11, 7 * 256);//L ws.SetColumnWidth(12, 7 * 256);//M ws.GetRow(rowIndex).HeightInPoints = 100f; ws.GetRow(rowIndex + 1).HeightInPoints = 50f; ws.GetRow(rowIndex + 2).HeightInPoints = 50f; ws.GetRow(rowIndex + 3).HeightInPoints = 50f; ws.GetRow(rowIndex + 4).HeightInPoints = 50f; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 1, 3)); ws.GetRow(rowIndex).GetCell(1).SetCellValue("SH/T 3503—J130"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); style1.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 4, 9)); ws.GetRow(rowIndex).GetCell(4).CellStyle = style1; ws.GetRow(rowIndex).GetCell(4).SetCellValue($"硬度检测报告\nHardness Test Report\n\n第 {num} 页 共 {pageNum} 页 Page of "); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); style2.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 10, 12)); ws.GetRow(rowIndex).GetCell(10).CellStyle = style2; ws.GetRow(rowIndex).GetCell(10).SetCellValue($"工程名称:{info?.projectName}\n\nProject Name:{info?.enProjectName}\n\n单位工程名称:{info?.workAreaName}\n\nUnit Name:{info?.enWorkAreaName}"); for (int i = 1; i < 5; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 2, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 6, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 10, 12)); } ws.GetRow(rowIndex + 1).GetCell(1).SetCellValue("委托单位\nEntrusted by"); ws.GetRow(rowIndex + 1).GetCell(5).SetCellValue("施工单位\nConstruction Contractor"); ws.GetRow(rowIndex + 1).GetCell(9).SetCellValue("报告编号\nReport No."); ws.GetRow(rowIndex + 2).GetCell(1).SetCellValue("检件名称\nTest Piece Description"); ws.GetRow(rowIndex + 2).GetCell(5).SetCellValue("检测标准\nTest Criteria"); ws.GetRow(rowIndex + 2).GetCell(9).SetCellValue("验收标准\nMaterial Specification"); ws.GetRow(rowIndex + 3).GetCell(1).SetCellValue("检件规格\nTest Piece Specification"); ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("检件材质\nTest Piece Material"); ws.GetRow(rowIndex + 3).GetCell(9).SetCellValue("检测比例\nTest Percentage"); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue("检测方法\nTest Position No."); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("热处理状态\nHT Status"); ws.GetRow(rowIndex + 4).GetCell(9).SetCellValue("设备型号\nEquipment Model"); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 5, rowIndex + 20, style, 1, 12, true); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 15; } else { dStart = num == 2 ? 15 : ((num - 2) * 15) + 15; dEnd = ((num - 1) * 15) + 15; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 5; i < 21; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 1, 2)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 7, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 11, 12)); if (i == 5) { ws.GetRow(rowIndex + i).Height = 41 * 20; } else { ws.GetRow(rowIndex + i).Height = 22 * 20; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(3).SetCellValue(dr["PTP_ID"].ToString()); } j++; } } ws.GetRow(rowIndex + 5).GetCell(1).SetCellValue("检测部位编号\nTest Position No."); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue("硬度值\nHardness Value"); ws.GetRow(rowIndex + 5).GetCell(5).SetCellValue("检测部位编号\nTest Position No."); ws.GetRow(rowIndex + 5).GetCell(7).SetCellValue("硬度值\nHardness Value"); ws.GetRow(rowIndex + 5).GetCell(9).SetCellValue("检测部位编号\nTest Position No."); ws.GetRow(rowIndex + 5).GetCell(11).SetCellValue("硬度值\nHardness Value"); #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 21, rowIndex + 22, style, 1, 12, true); ws.GetRow(rowIndex + 21).HeightInPoints = 72f; ws.GetRow(rowIndex + 22).HeightInPoints = 70f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 21, 1, 12)); ws.GetRow(rowIndex + 21).GetCell(1).SetCellValue("检测结论:\nConclusion:\n共检测点,符合标准要求点,不符合标准要求点,具体检测部位详见示意图。\nTotally points are tested, where points are conforming and points are nonconforming. For specific test positions, see the sketch."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 1, 4)); ws.GetRow(rowIndex + 22).GetCell(1).SetCellValue("\n 试验人Tested by:\n\n\n 资格Qualification:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 5, 8)); ws.GetRow(rowIndex + 22).GetCell(5).SetCellValue("\n 审核人Reviewed by:\n\n\n 资格Qualification:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 9, 12)); ws.GetRow(rowIndex + 22).GetCell(9).SetCellValue(" 检测单位:(公章)\n\n Inspection Agency: (Official Seal)\n\n 报告日期Date: 年 月 日"); ws.GetRow(rowIndex + 21).GetCell(1).CellStyle = ws.GetRow(rowIndex + 22).GetCell(1).CellStyle = ws.GetRow(rowIndex + 22).GetCell(5).CellStyle = ws.GetRow(rowIndex + 22).GetCell(9).CellStyle = style2; #endregion rowIndex += 23; } ws.PrintSetup.Landscape = false; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //21-管道焊接工作记录SHT 3503-J415 private void template21(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //获取签名 var getInfo =BLL.Sys_UserService.GetSingtrueImageUrl(info?.Auditer); string sql = @" SELECT WeldSilkId, a.PipelineCode, e.WorkAreaCode, a.WeldJointCode, a.Specification, a.Material1Code, a.WeldingMethodCode, a.WeldingDate, a.WeldSilkCode, a.WeldMatCode, a.BackingWelderCode, a.CoverWelderCode, a.ProjectName, (select top 1 EnProjectName from Base_Project where ProjectId=b.ProjectId ) as EnProjectName, (select top 1 WorkAreaName from Project_WorkArea where WorkAreaId=c.WorkAreaId) as WorkAreaName, (select top 1 EnWorkAreaName from Project_WorkArea where WorkAreaId=c.WorkAreaId) as EnWorkAreaName, a.IsHotProess,(case a.IsHotProess when 1 then '是' else '否' end) as IsHotProessName,PrepareTemp, WeldingLocationCode,a.WeldTypeCode, (SELECT TOP 1 n.NDEReportNo FROM dbo.Batch_NDEItem n WHERE n.TrustBatchItemId= (SELECT TOP 1 bt.TrustBatchItemId FROM dbo.Batch_BatchTrustItem bt WHERE bt.WeldJointId=a.WeldJointId)) AS NDEReportNo FROM PTP_TestPackage as b inner join PTP_PipelineList as c on b.PTP_ID=c.PTP_ID inner join View_Pipeline_WeldJoint as a on c.PipelineId=a.PipelineId left join Project_WorkArea as e on e.WorkAreaId=c.WorkAreaId WHERE Is_hjName='是' and b.PTP_ID=@PTPID and a.projectId=@projectId "; SqlParameter[] parms = { new SqlParameter("@PTPID", this.tvControlItem.SelectedNodeID), new SqlParameter("@projectId", this.CurrUser.LoginProjectId) }; DataTable tb = SQLHelper.GetDataTableRunText(sql, parms); int rowIndex = 0; #region 列宽 ws.SetColumnWidth(0, 15 * 256); ws.SetColumnWidth(1, 6 * 256); ws.SetColumnWidth(2, 6 * 256); ws.SetColumnWidth(3, 9 * 256); ws.SetColumnWidth(4, 11 * 256); ws.SetColumnWidth(5, 9 * 256); ws.SetColumnWidth(6, 8 * 256); ws.SetColumnWidth(7, 10 * 256); ws.SetColumnWidth(8, 6 * 256); ws.SetColumnWidth(9, 6 * 256); ws.SetColumnWidth(10, 6 * 256); ws.SetColumnWidth(11, 6 * 256); ws.SetColumnWidth(12, 9 * 256); ws.SetColumnWidth(13, 11 * 256); ws.SetColumnWidth(14, 10 * 256); #endregion var headerStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 9, true, false); var tbNum = tb.Rows.Count; var pageNum = tbNum < 12 ? 1 : Math.Ceiling((float)(tbNum - 12) / 12) + 1; //循环页 for (int i = 1; i <= pageNum; i++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10, true, false); #region 头部 ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex, rowIndex + 5, style, 0, 14, 18); //行0 CellRangeAddress region = new CellRangeAddress(rowIndex, rowIndex + 3, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T 3503-J415-1"); ws.GetRow(rowIndex).GetCell(0).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10, true, true); region = new CellRangeAddress(rowIndex, rowIndex + 3, 3, 10); ws.AddMergedRegion(region); string titleStr = i == 1 ? "管道焊接工作记录\r\nPiping Welding Record" : "管道焊接工作记录(续)\r\nPiping Welding Record"; ws.GetRow(rowIndex).GetCell(3).SetCellValue(titleStr); ws.GetRow(rowIndex).GetCell(3).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 15, true, true); region = new CellRangeAddress(rowIndex, rowIndex, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(11).SetCellValue($"工程名称:{info?.projectName}"); ws.GetRow(rowIndex).GetCell(11).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Justify, 9.5, true, false); //行1 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(11).SetCellValue($"Project Name:{info?.enProjectName}"); ws.GetRow(rowIndex + 1).GetCell(11).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Justify, 9.5, true, false); //ws.GetRow(rowIndex + 1).Height = 25 * 20; //ws.GetRow(rowIndex + 2).Height = 25 * 20; //ws.GetRow(rowIndex + 3).Height = 25 * 20; //ws.GetRow(rowIndex + 4).Height = 25 * 20; //行2 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(11).SetCellValue($"单位工程名称:{info?.workAreaName}"); ws.GetRow(rowIndex + 2).GetCell(11).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Justify, 10, true, false); //行3 region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 11, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(11).SetCellValue($"Unit Name:{info?.enWorkAreaName}"); ws.GetRow(rowIndex + 3).GetCell(11).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Justify, 10, true, false); //画线 RegionUtil.SetBorderBottom(0, new CellRangeAddress(rowIndex, rowIndex, 11, 14), ws); RegionUtil.SetBorderTop(0, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 11, 14), ws); RegionUtil.SetBorderBottom(0, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 11, 14), ws); RegionUtil.SetBorderTop(0, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 11, 14), ws); RegionUtil.SetBorderBottom(0, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 11, 14), ws); RegionUtil.SetBorderTop(0, new CellRangeAddress(rowIndex + 3, rowIndex + 3, 11, 14), ws); //行4行5 region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 0, 0); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("管道编号/单线号\r\nPiping No./Line No"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 1, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue("焊口编号\r\nWeld No."); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 3, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(3).SetCellValue("焊接形式\r\nWeld Type."); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 4, 4); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(4).SetCellValue("焊工代号\r\nWelder's Stamp No."); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 5, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("规格mm\r\nSpecification\r\nmm"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 6, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(6).SetCellValue("材质\r\nMaterial"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 7, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(7).SetCellValue("焊接位置\r\nWelding\r\nPosition"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 8, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(8).SetCellValue("焊接方法\r\nWelding Process"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 10, 11); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(10).SetCellValue("焊材牌号\r\nWelding Material Designation"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 12, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(12).SetCellValue("实际预热温度℃\r\nActual Preheating Temperature ℃"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 13, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(13).SetCellValue("焊接日期\r\nWelding Date"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 5, 14, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(14).SetCellValue("无损检查报告\r\nNDE Report."); ws.GetRow(rowIndex + 4).GetCell(0).CellStyle = ws.GetRow(rowIndex + 4).GetCell(1).CellStyle = ws.GetRow(rowIndex + 4).GetCell(3).CellStyle = ws.GetRow(rowIndex + 4).GetCell(4).CellStyle = ws.GetRow(rowIndex + 4).GetCell(5).CellStyle = ws.GetRow(rowIndex + 4).GetCell(6).CellStyle = ws.GetRow(rowIndex + 4).GetCell(7).CellStyle = ws.GetRow(rowIndex + 4).GetCell(8).CellStyle = ws.GetRow(rowIndex + 4).GetCell(10).CellStyle = ws.GetRow(rowIndex + 4).GetCell(12).CellStyle = ws.GetRow(rowIndex + 4).GetCell(13).CellStyle = ws.GetRow(rowIndex + 4).GetCell(14).CellStyle = headerStyle; //ws.GetRow(rowIndex + 4).Height = 25 * 20; //ws.GetRow(rowIndex + 5).Height = 25 * 20; #endregion #region 表格 ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 6, rowIndex + 17, style, 0, 14, 18); var dataTit = rowIndex + 6; var tIndex = 5 + 12; var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 12; } else { dStart = i == 2 ? 12 : ((i - 2) * 12) + 12; dEnd = ((i - 1) * 12) + 12; } //合并单元格 for (int hb = dataTit; hb <= rowIndex + tIndex; hb++) { region = new CellRangeAddress(hb, hb, 1, 2); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 8, 9); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 10, 11); ws.AddMergedRegion(region); } //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); int j = 0; for (int k = 0; k < 12; k++) { int dataIndex = dataTit + j; if (pageTb.Rows.Count > k) { DataRow dr = pageTb.Rows[k]; //管道编号/单线号 ws.GetRow(dataIndex).GetCell(0).SetCellValue(dr["PipelineCode"].ToString()); //焊口编号 ws.GetRow(dataIndex).GetCell(1).SetCellValue(dr["WeldJointCode"].ToString()); //焊接形式 ws.GetRow(dataIndex).GetCell(3).SetCellValue(dr["WeldTypeCode"].ToString()); //焊工代号 List welderStr = new List(); if (!string.IsNullOrWhiteSpace(dr["BackingWelderCode"].ToString())) { welderStr.Add(dr["BackingWelderCode"].ToString()); } if (!string.IsNullOrWhiteSpace(dr["CoverWelderCode"].ToString())) { welderStr.Add(dr["CoverWelderCode"].ToString()); } if (welderStr.Count > 0) welderStr = welderStr.GroupBy(x => x).Select(x => x.Key).ToList(); ws.GetRow(dataIndex).GetCell(4).SetCellValue(string.Join("/", welderStr)); //规格mm ws.GetRow(dataIndex).GetCell(5).SetCellValue(dr["Specification"].ToString()); //材质 ws.GetRow(dataIndex).GetCell(6).SetCellValue(dr["Material1Code"].ToString()); //焊接位置 ws.GetRow(dataIndex).GetCell(7).SetCellValue(dr["WeldingLocationCode"].ToString()); //焊接方法 ws.GetRow(dataIndex).GetCell(8).SetCellValue(dr["WeldingMethodCode"].ToString()); //焊材牌号 List silkMats = new List(); if (!string.IsNullOrWhiteSpace(dr["WeldSilkCode"].ToString())) { silkMats.Add(dr["WeldSilkCode"].ToString()); } if (!string.IsNullOrWhiteSpace(dr["WeldMatCode"].ToString())) { silkMats.Add(dr["WeldMatCode"].ToString()); } if (silkMats.Count > 0) silkMats = silkMats.GroupBy(x => x).Select(x => x.Key).ToList(); ws.GetRow(dataIndex).GetCell(10).SetCellValue(string.Join("/", silkMats)); //实际预热温度 ws.GetRow(dataIndex).GetCell(12).SetCellValue(dr["PrepareTemp"].ToString()); //焊接日期 ws.GetRow(dataIndex).GetCell(13).SetCellValue(dr["WeldingDate"].ToString()); //无损检查报告 ws.GetRow(dataIndex).GetCell(14).SetCellValue(dr["NDEReportNo"].ToString()); } j++; ws.GetRow(dataIndex).Height = 20 * 20; } for (int k = rowIndex + 6; k <= rowIndex + 17; k++) { ws.GetRow(k).Height = 20 * 20; } rowIndex += tIndex; #endregion #region 尾部 ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 1, rowIndex + 7, style, 0, 14, 25); //合并单元格 for (int hb = rowIndex + 1; hb <= rowIndex + 7; hb++) { for (int c = 0; c <= 14; c++) { if (hb >= rowIndex + 1 && hb <= rowIndex + 6) { ws.GetRow(hb).GetCell(c).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 10, true, false); } if (hb == rowIndex + 7) { ws.GetRow(hb).GetCell(c).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 10, true, false); } } region = new CellRangeAddress(hb, hb, 0, 3); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 4, 9); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 10, 14); ws.AddMergedRegion(region); } if(!string.IsNullOrEmpty(getInfo.Item1) && !string.IsNullOrEmpty(getInfo.Item2)) { switch (getInfo.Item2) { case "建设方": InsertImage(hssfworkbook, ws, rowIndex + 3, 0, rowIndex + 3, 3, Server.MapPath(getInfo.Item1), 1, 1); break; case "总承包商": InsertImage(hssfworkbook, ws, rowIndex + 3, 4, rowIndex + 3, 9, Server.MapPath(getInfo.Item1), 1, 1); break; case "监理": InsertImage(hssfworkbook, ws, rowIndex + 3, 0, rowIndex + 3, 3, Server.MapPath(getInfo.Item1), 1, 1); break; case "施工": InsertImage(hssfworkbook, ws, rowIndex + 3, 10, rowIndex + 3, 14, Server.MapPath(getInfo.Item1), 1, 1); break; } } //行1 ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue("建设/监理单位"); ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue("总承包单位\r\nGeneral Contractor"); ws.GetRow(rowIndex + 1).GetCell(10).SetCellValue("施工单位\r\nConstruction Contractor"); //行2 ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.GetRow(rowIndex + 2).GetCell(4).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.GetRow(rowIndex + 2).GetCell(10).SetCellValue("记录人 :\r\nRecord Prepared by:"); //行3 ws.GetRow(rowIndex + 4).GetCell(10).SetCellValue("质量检查员:\r\nQuality Inspector:"); //行5 ws.GetRow(rowIndex + 6).GetCell(10).SetCellValue("焊接责任工程师:\r\nWelding Engineer:"); //行6 ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("日期Date: 年 月 日"); ws.GetRow(rowIndex + 7).GetCell(4).SetCellValue("日期Date: 年 月 日"); ws.GetRow(rowIndex + 7).GetCell(10).SetCellValue("日期Date: 年 月 日"); #endregion //style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 10, true, false); //ws = ExcelCreateRowNew(ws, hssfworkbook, rowIndex + 8, rowIndex + 9, style, 0, 14, 18); rowIndex += 9; ws.SetRowBreak(rowIndex - 1); } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; } //22-射线检测比例确认表SHT 3503-J412-2007 private void template22(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //获取签名 var getInfo = BLL.Sys_UserService.GetSingtrueImageUrl(info?.Auditer); string sql = @" select * from ( select d.PipelineCode, (select MaterialCode from Base_Material as m where d.MainMaterialId=m.MaterialId) as MaterialCode , d.Specification, (select count(1) from Pipeline_WeldJoint as joint where joint.PipelineId=a.PipelineId) as jointCount, --当前管线的焊口总数 ( case when a.isAll=1 then (select count(1) from Pipeline_WeldJoint as joint where joint.PipelineId=a.PipelineId and joint.JointAttribute='固定F') else (select count(1) from Pipeline_WeldJoint as joint where joint.PipelineId=a.PipelineId and joint.JointAttribute='固定' and CHARINDEX(','+joint.WeldJointCode+',',','+a.WeldJonintCode+'')>0) end ) as FjointCount, --当前管线的焊口的固定口总数 c.WelderCode, --焊工号 ( case when a.isAll=1 then (select count(1) from View_Pipeline_WeldJoint as vjoint where vjoint.PipelineId=a.PipelineId and vjoint.WelderCode=c.WelderCode) else (select count(1) from View_Pipeline_WeldJoint as vjoint where vjoint.PipelineId=a.PipelineId and CHARINDEX(','+vjoint.WeldJointCode+',',','+a.WeldJonintCode+'')>0 and vjoint.WelderCode=c.WelderCode) end ) as WelderNum, (case when a.isAll=1 then (select count(1) from Batch_NDEItem as nde inner join Batch_BatchTrustItem as trust ON trust.TrustBatchItemId = nde.TrustBatchItemId inner join View_Pipeline_WeldJoint as joint ON joint.WeldJointId=trust.WeldJointId where joint.PipelineId=a.PipelineId and joint.WelderCode=c.WelderCode) else ( select count(1) from Batch_NDEItem as nde inner join Batch_BatchTrustItem as trust ON trust.TrustBatchItemId = nde.TrustBatchItemId inner join View_Pipeline_WeldJoint as joint ON joint.WeldJointId=trust.WeldJointId where joint.PipelineId=a.PipelineId and CHARINDEX(','+joint.WeldJointCode+',',','+a.WeldJonintCode+'')>0 and joint.WelderCode=c.WelderCode ) end ) as NdeNum, --检测口数量 (case when a.isAll=1 then (select count(1) from Batch_NDEItem as nde inner join Batch_BatchTrustItem as trust ON trust.TrustBatchItemId = nde.TrustBatchItemId inner join View_Pipeline_WeldJoint as joint ON joint.WeldJointId=trust.WeldJointId where joint.PipelineId=a.PipelineId and joint.JointAttribute='固定F' and joint.WelderCode=c.WelderCode) else ( select count(1) from Batch_NDEItem as nde inner join Batch_BatchTrustItem as trust ON trust.TrustBatchItemId = nde.TrustBatchItemId inner join View_Pipeline_WeldJoint as joint ON joint.WeldJointId=trust.WeldJointId where joint.PipelineId=a.PipelineId and CHARINDEX(','+joint.WeldJointCode+',',','+a.WeldJonintCode+'')>0 and joint.JointAttribute='固定F' and joint.WelderCode=c.WelderCode ) end ) as FNdeNum , --检测固定口数量 ( case when a.isAll=1 then (stuff((select ','+nde.NDEReportNo from Batch_NDEItem as nde inner join Batch_BatchTrustItem as trust ON trust.TrustBatchItemId = nde.TrustBatchItemId inner join View_Pipeline_WeldJoint as joint ON joint.WeldJointId=trust.WeldJointId where joint.PipelineId=a.PipelineId and joint.WelderCode=c.WelderCode FOR xml path ('') ),1,1,'')) else (stuff((select ','+nde.NDEReportNo from Batch_NDEItem as nde inner join Batch_BatchTrustItem as trust ON trust.TrustBatchItemId = nde.TrustBatchItemId inner join View_Pipeline_WeldJoint as joint ON joint.WeldJointId=trust.WeldJointId where joint.PipelineId=a.PipelineId and CHARINDEX(','+joint.WeldJointCode+',',','+a.WeldJonintCode+'')>0 and joint.WelderCode=c.WelderCode FOR xml path ( '' ) ),1,1,'') ) end) as NdeReportNo from PTP_PipelineList as a inner join PTP_TestPackage as b on a.PTP_ID=b.PTP_ID inner join View_Pipeline_WeldJoint as c on c.PipelineId=a.PipelineId inner join Pipeline_Pipeline as d on c.PipelineId=d.PipelineId where b.PTP_ID=@PTPID and b.ProjectId=@projectId ) as t group by t.PipelineCode,t.MaterialCode,t.Specification,t.jointCount,t.FjointCount,t.WelderCode,t.WelderNum,t.NdeNum,t.FNdeNum,t.NdeReportNo"; SqlParameter[] parms = { new SqlParameter("@PTPID",this.tvControlItem.SelectedNodeID), new SqlParameter("@projectId",this.CurrUser.LoginProjectId) }; DataTable tb = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = tb.Rows.Count; var pageNum = tbNum < 8 ? 1 : Math.Ceiling((float)(tbNum - 8) / 8) + 1; int rowIndex = 0; for (int i = 1; i <= pageNum; i++) { #region 头部 var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10.5, true, false, "宋体"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 4, style, 0, 20, true); //设置列宽 ws.SetColumnWidth(0, 9 * 256);//A ws.SetColumnWidth(1, 4 * 256);//B ws.SetColumnWidth(2, 9 * 256);//C ws.SetColumnWidth(3, 5 * 256);//D ws.SetColumnWidth(4, 5 * 256);//E ws.SetColumnWidth(5, 4 * 256);//F ws.SetColumnWidth(6, 4 * 256);//G ws.SetColumnWidth(7, 7 * 256);//H ws.SetColumnWidth(8, 6 * 256);//I ws.SetColumnWidth(9, 6 * 256);//J ws.SetColumnWidth(10, 5 * 256);//K ws.SetColumnWidth(11, 7 * 256);//L ws.SetColumnWidth(12, 6 * 256);//M ws.SetColumnWidth(13, 5 * 256);//N ws.SetColumnWidth(14, 4 * 256);//O ws.SetColumnWidth(15, 4 * 256);//P ws.SetColumnWidth(16, 4 * 256);//Q ws.SetColumnWidth(17, 5 * 256);//R ws.SetColumnWidth(18, 5 * 256);//S ws.SetColumnWidth(19, 5 * 256);//T ws.SetColumnWidth(20, 18 * 256);//U ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + 3, 0, 2)); ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T 3503-J412-1-2007"); ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 3, 17)); ws.GetRow(rowIndex).GetCell(3).SetCellValue("管道焊接接头射线检测比例确认表(一)"); ws.GetRow(rowIndex).GetCell(3).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 16, true, true); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 2, 3, 17)); ws.GetRow(rowIndex + 1).GetCell(3).SetCellValue("Pipeline Welding Joints Radiographic Examination Rate Confirmation Form(I)"); ws.GetRow(rowIndex + 1).GetCell(3).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true); ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 18, 20)); ws.GetRow(rowIndex).GetCell(18).SetCellValue($"工程名称:{info?.projectName}"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 18, 20)); ws.GetRow(rowIndex + 1).GetCell(18).SetCellValue($"Project Name:{info?.enProjectName}"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 18, 20)); ws.GetRow(rowIndex + 2).GetCell(18).SetCellValue($"单元名称:{info?.workAreaName}"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 18, 20)); ws.GetRow(rowIndex + 3).GetCell(18).SetCellValue($"Unit Name:{info?.enWorkAreaName}"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 3, 17)); ws.GetRow(rowIndex).GetCell(18).CellStyle = ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = ws.GetRow(rowIndex + 2).GetCell(18).CellStyle = ws.GetRow(rowIndex + 3).GetCell(18).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Left, 10.5, true, false); RegionUtil.SetBorderBottom(0, new CellRangeAddress(rowIndex, rowIndex, 18, 20), ws); RegionUtil.SetBorderTop(0, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 18, 20), ws); RegionUtil.SetBorderBottom(0, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 18, 20), ws); RegionUtil.SetBorderTop(0, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 18, 20), ws); RegionUtil.SetBorderBottom(0, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 18, 20), ws); RegionUtil.SetBorderTop(0, new CellRangeAddress(rowIndex + 3, rowIndex + 3, 18, 20), ws); ws.GetRow(rowIndex + 3).GetCell(3).SetCellValue($"共 {pageNum} 页 第 {i} 页"); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("执行标准\r\nApplicable code"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 1, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 8, 15)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 16, 17)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 18, 20)); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue("NB/T47013.2-2015"); ws.GetRow(rowIndex + 4).GetCell(6).SetCellValue("检测方法\r\nExam. Method"); ws.GetRow(rowIndex + 4).GetCell(8).SetCellValue("射线检测\r\nRT"); ws.GetRow(rowIndex + 4).GetCell(16).SetCellValue("检测比例\r\nExam. Rate"); ws.GetRow(rowIndex + 4).GetCell(18).SetCellValue("5%"); ws.GetRow(rowIndex).Height = 27 * 20; ws.GetRow(rowIndex + 1).Height = 27 * 20; ws.GetRow(rowIndex + 2).Height = 15 * 20; ws.GetRow(rowIndex + 3).Height = 20 * 20; ws.GetRow(rowIndex + 4).Height = 40 * 20; #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 5, rowIndex + 6, style, 0, 20, true); ws.GetRow(rowIndex + 5).Height = 25 * 20; ws.GetRow(rowIndex + 6).Height = 30 * 20; var dataTit = rowIndex + 7; var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 8; } else { dStart = i == 2 ? 8 : ((i - 2) * 8) + 8; dEnd = ((i - 1) * 8) + 8; } //这里创建行数据 17-16 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 7, rowIndex + 16, style, 0, 20, true); #region 设置表头部分 //设置表头部分 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 6, 0, 1)); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("管道编号\r\nPipeline No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 6, 2, 2)); ws.GetRow(rowIndex + 5).GetCell(2).SetCellValue("材质\r\nMaterial"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 4)); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue("规 格/Size"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 3, 4)); ws.GetRow(rowIndex + 6).GetCell(3).SetCellValue("mm"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 5, 8)); ws.GetRow(rowIndex + 5).GetCell(5).SetCellValue("管道焊接接头\r\nWelding Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 9, 12)); ws.GetRow(rowIndex + 5).GetCell(9).SetCellValue("施焊焊工\r\nWelder"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 13, 16)); ws.GetRow(rowIndex + 5).GetCell(13).SetCellValue("检测焊接接头\r\nExanined Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 17, 19)); ws.GetRow(rowIndex + 5).GetCell(17).SetCellValue("实际检测比例"); ws.GetRow(rowIndex + 5).GetCell(20).SetCellValue("检测报告编号"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 5, 6)); ws.GetRow(rowIndex + 6).GetCell(5).SetCellValue("总数\r\nTotal"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 7, 8)); ws.GetRow(rowIndex + 6).GetCell(7).SetCellValue("固定口数\r\nField Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 9, 10)); ws.GetRow(rowIndex + 6).GetCell(9).SetCellValue("焊工代号\r\nWelder No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 11, 12)); ws.GetRow(rowIndex + 6).GetCell(11).SetCellValue("施焊数量\r\nWelded Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 13, 14)); ws.GetRow(rowIndex + 6).GetCell(13).SetCellValue("总数\r\nTotal Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 15, 16)); ws.GetRow(rowIndex + 6).GetCell(15).SetCellValue("固定口数\r\nField Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 17, 19)); ws.GetRow(rowIndex + 6).GetCell(17).SetCellValue("Actual exam. Rate"); ws.GetRow(rowIndex + 6).GetCell(20).SetCellValue("Examination Report No."); RegionUtil.SetBorderBottom(0, new CellRangeAddress(rowIndex + 5, rowIndex + 5, 17, 20), ws); RegionUtil.SetBorderTop(0, new CellRangeAddress(rowIndex + 6, rowIndex + 6, 17, 20), ws); #endregion for (int k = rowIndex + 7; k < rowIndex + 16; k++) { ws.GetRow(k).Height = 18 * 20; //小计行 if (k == rowIndex + 15) { ws.AddMergedRegion(new CellRangeAddress(k, k, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(k, k, 3, 4)); ws.AddMergedRegion(new CellRangeAddress(k, k, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(k, k, 7, 8)); } ws.AddMergedRegion(new CellRangeAddress(k, k, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(k, k, 11, 12)); ws.AddMergedRegion(new CellRangeAddress(k, k, 13, 14)); ws.AddMergedRegion(new CellRangeAddress(k, k, 15, 16)); ws.AddMergedRegion(new CellRangeAddress(k, k, 17, 19)); } //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); int j = 0; var pagelist = DataTableEx.ToList(pageTb); int oneNum = 1; int twoNum = 1; int threeNum = 1; int fourNum = 1; int fiveNum = 1; for (int k = 0; k < 8; k++) { int dataIndex = dataTit + j; if (pageTb.Rows.Count > k) { DataRow dr = pageTb.Rows[k]; ws.GetRow(dataIndex).GetCell(0).SetCellValue(dr["PipelineCode"].ToString()); var PipelineCodeNum = pagelist.Count(x => x.PipelineCode == dr["PipelineCode"].ToString()); if (PipelineCodeNum > 1) { if (oneNum == 1) { oneNum += PipelineCodeNum; ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex + PipelineCodeNum - 1, 0, 1)); } oneNum -= 1; } else { ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 0, 1)); } ws.GetRow(dataIndex).GetCell(2).SetCellValue(dr["MaterialCode"].ToString()); var MaterialCodeNum = pagelist.Count(x => x.PipelineCode == dr["PipelineCode"].ToString() && x.MaterialCode == dr["MaterialCode"].ToString()); if (MaterialCodeNum > 1) { if (twoNum == 1) { twoNum += MaterialCodeNum; ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex + PipelineCodeNum - 1, 2, 2)); } twoNum -= 1; } int SpecificationNum = 0; ws.GetRow(dataIndex).GetCell(3).SetCellValue(dr["Specification"].ToString()); if (string.IsNullOrEmpty(dr["Specification"].ToString())) { SpecificationNum = pagelist.Count(x => x.PipelineCode == dr["PipelineCode"].ToString()); } else { SpecificationNum = pagelist.Count(x => x.PipelineCode == dr["PipelineCode"].ToString() && x.Specification == dr["Specification"].ToString()); } if (SpecificationNum > 1) { if (threeNum == 1) { threeNum += SpecificationNum; ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex + PipelineCodeNum - 1, 3, 4)); } threeNum -= 1; } else { ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 3, 4)); } ws.GetRow(dataIndex).GetCell(5).SetCellValue(dr["jointCount"].ToString()); var jointCountNum = pagelist.Count(x => x.PipelineCode == dr["PipelineCode"].ToString() && x.jointCount == dr["jointCount"].ToString()); if (jointCountNum > 1) { if (fourNum == 1) { fourNum += jointCountNum; ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex + PipelineCodeNum - 1, 5, 6)); } fourNum -= 1; } else { ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 5, 6)); } ws.GetRow(dataIndex).GetCell(7).SetCellValue(dr["FjointCount"].ToString()); var FjointCountNum = pagelist.Count(x => x.PipelineCode == dr["PipelineCode"].ToString() && x.FjointCount == dr["FjointCount"].ToString()); if (FjointCountNum > 1) { if (fiveNum == 1) { fiveNum += FjointCountNum; ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex + PipelineCodeNum - 1, 7, 8)); } fiveNum -= 1; } else { ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 7, 8)); } ws.GetRow(dataIndex).GetCell(9).SetCellValue(dr["WelderCode"].ToString()); ws.GetRow(dataIndex).GetCell(11).SetCellValue(dr["WelderNum"].ToString()); ws.GetRow(dataIndex).GetCell(13).SetCellValue(dr["NdeNum"].ToString()); ws.GetRow(dataIndex).GetCell(15).SetCellValue(dr["FNdeNum"].ToString()); string a = string.IsNullOrEmpty(dr["NdeNum"].ToString()) ? "0" : dr["NdeNum"].ToString(); string b = string.IsNullOrEmpty(dr["WelderNum"].ToString()) ? "0" : dr["WelderNum"].ToString(); if (b == "0") { ws.GetRow(dataIndex).GetCell(17).SetCellValue("0%"); } else { decimal rate = Math.Round((decimal.Parse(a) / decimal.Parse(b)), 2); ws.GetRow(dataIndex).GetCell(17).SetCellValue($"{rate * 100}%"); } ws.GetRow(dataIndex).GetCell(20).SetCellValue(dr["NdeReportNo"].ToString()); } else { ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 3, 4)); ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(dataIndex, dataIndex, 7, 8)); } j++; } ws.GetRow(rowIndex + 15).GetCell(0).SetCellValue("小计\r\nTotal"); ws.GetRow(rowIndex + 15).Height = 25 * 20; #endregion #region 尾部 ws.GetRow(rowIndex + 16).GetCell(0).SetCellValue("备注\r\nRemark"); ws.GetRow(rowIndex + 16).GetCell(1).SetCellValue("焊口位置与检测焊口见管道单线图与无损检测报告。\r\nPlease refer to Pipeline Iso-drawing and NDE Report for joints position and examined joints."); ws.GetRow(rowIndex + 16).GetCell(1).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Left, 10.5, true, false); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 1, 20)); ws.GetRow(rowIndex + 16).Height = 25 * 20; style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Left, 10.5, true, false); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10.5, true, false); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Bottom, NPOI.SS.UserModel.HorizontalAlignment.Left, 10.5, true, false); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 17, rowIndex + 23, style, 0, 20, true); ws.GetRow(rowIndex + 17).GetCell(20).CellStyle = style1; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 0, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 4, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 10, 16)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 17, 20)); if (!string.IsNullOrEmpty(getInfo.Item1) && !string.IsNullOrEmpty(getInfo.Item2)) { switch (getInfo.Item2) { case "建设方": InsertImage(hssfworkbook, ws, rowIndex + 20, 0, rowIndex + 20, 3, Server.MapPath(getInfo.Item1), 1, 1,1); break; case "总承包商": InsertImage(hssfworkbook, ws, rowIndex + 20, 4, rowIndex + 20, 9, Server.MapPath(getInfo.Item1), 1, 1,1); break; case "监理": InsertImage(hssfworkbook, ws, rowIndex + 20, 0, rowIndex + 20, 3, Server.MapPath(getInfo.Item1), 1, 1,1); break; case "检测": InsertImage(hssfworkbook, ws, rowIndex + 19, 10, rowIndex + 19, 16, Server.MapPath(getInfo.Item1), 1, 1,1); break; case "施工": InsertImage(hssfworkbook, ws, rowIndex + 20, 17, rowIndex + 20, 20, Server.MapPath(getInfo.Item1), 1, 1,1); break; } } ws.GetRow(rowIndex + 17).GetCell(0).SetCellValue("建设/监理单位\r\nOwner/Supervision Contractor"); ws.GetRow(rowIndex + 17).GetCell(4).SetCellValue("总承包单位\r\nGeneral Contractor"); ws.GetRow(rowIndex + 17).GetCell(10).SetCellValue("检 测 单 位\r\nExamination Contractor"); ws.GetRow(rowIndex + 17).GetCell(17).SetCellValue("施 工 单 位\r\nConstruction Company"); ws.GetRow(rowIndex + 17).GetCell(0).CellStyle = ws.GetRow(rowIndex + 17).GetCell(4).CellStyle = ws.GetRow(rowIndex + 17).GetCell(10).CellStyle = ws.GetRow(rowIndex + 17).GetCell(17).CellStyle = style1; ws.GetRow(rowIndex + 17).Height = 28 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 18, rowIndex + 18, 0, 3)); ws.GetRow(rowIndex + 18).GetCell(0).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.GetRow(rowIndex + 18).Height = 25 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 18, rowIndex + 18, 4, 9)); ws.GetRow(rowIndex + 18).GetCell(4).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 18, rowIndex + 18, 10, 16)); ws.GetRow(rowIndex + 18).GetCell(10).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 18, rowIndex + 18, 17, 20)); ws.GetRow(rowIndex + 18).GetCell(17).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 20, rowIndex + 20, 17, 20)); ws.GetRow(rowIndex + 20).GetCell(17).SetCellValue("质量检查员:\r\nQuality Inspector:"); ws.GetRow(rowIndex + 20).Height = 25 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 22, rowIndex + 22, 17, 20)); ws.GetRow(rowIndex + 22).GetCell(17).SetCellValue("制表:\r\nPrepared:"); ws.GetRow(rowIndex + 22).Height = 25 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 0, 3)); ws.GetRow(rowIndex + 23).GetCell(0).SetCellValue("日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 4, 9)); ws.GetRow(rowIndex + 23).GetCell(4).SetCellValue("日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 10, 16)); ws.GetRow(rowIndex + 23).GetCell(10).SetCellValue("日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 17, 20)); ws.GetRow(rowIndex + 23).GetCell(17).SetCellValue("日期Date: 年 月 日"); ws.GetRow(rowIndex + 23).Height = 25 * 20; ws.GetRow(rowIndex + 23).GetCell(0).CellStyle = ws.GetRow(rowIndex + 23).GetCell(4).CellStyle = ws.GetRow(rowIndex + 23).GetCell(10).CellStyle = ws.GetRow(rowIndex + 23).GetCell(17).CellStyle = style2; ws.GetRow(rowIndex + 19).Height = 14 * 20; ws.GetRow(rowIndex + 20).Height = 14 * 20; ws.GetRow(rowIndex + 21).Height = 14 * 20; ws.GetRow(rowIndex + 22).Height = 25 * 20; RegionUtil.SetBorderLeft(1, new CellRangeAddress(rowIndex + 18, rowIndex + 23, 0, 0), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 17, rowIndex + 17, 0, 20), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 18, rowIndex + 22, 3, 3), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 18, rowIndex + 22, 9, 9), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 18, rowIndex + 22, 16, 16), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 18, rowIndex + 22, 20, 20), ws); RegionUtil.SetBorderTop(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 0, 20), ws); RegionUtil.SetBorderLeft(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 0, 0), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 20, 20), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 0, 20), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 3, 3), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 9, 9), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 16, 16), ws); #endregion rowIndex = rowIndex + 24; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; } //23-TP-09-超声&PAUT&TOFD检测比例确认表 private void template23(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 8 ? 1 : Math.Ceiling((float)(tbNum - 8) / 8) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { #region 头部 var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, false, "宋体"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 5, style, 0, 20, true); for (int i = 0; i < 21; i++) { ws.GetRow(rowIndex).GetCell(i).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10); } //设置列宽 ws.SetColumnWidth(0, 10 * 256);//A ws.SetColumnWidth(1, 4 * 256);//B ws.SetColumnWidth(2, 7 * 256);//C ws.SetColumnWidth(3, 5 * 256);//D ws.SetColumnWidth(4, 5 * 256);//E ws.SetColumnWidth(5, 5 * 256);//F ws.SetColumnWidth(6, 5 * 256);//G ws.SetColumnWidth(7, 6 * 256);//H ws.SetColumnWidth(8, 7 * 256);//I ws.SetColumnWidth(9, 6 * 256);//J ws.SetColumnWidth(10, 4 * 256);//K ws.SetColumnWidth(11, 6 * 256);//L ws.SetColumnWidth(12, 4 * 256);//M ws.SetColumnWidth(13, 4 * 256);//N ws.SetColumnWidth(14, 6 * 256);//O ws.SetColumnWidth(15, 6 * 256);//P ws.SetColumnWidth(16, 5 * 256);//Q ws.SetColumnWidth(17, 6 * 256);//R ws.SetColumnWidth(18, 5 * 256);//S ws.SetColumnWidth(19, 6 * 256);//T ws.SetColumnWidth(20, 13 * 256);//U ws.GetRow(rowIndex).GetCell(20).SetCellValue("Form No. TP-09"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 4, 0, 2)); ws.GetRow(rowIndex + 1).GetCell(1).SetCellValue("SH/T 3503-J412-1-2007"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 3, 17)); ws.GetRow(rowIndex + 1).GetCell(3).SetCellValue("管道焊接接头超声/PAUT/TOFD检测比例确认表(一)"); ws.GetRow(rowIndex + 1).GetCell(3).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 16, true, true); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 3, 3, 17)); ws.GetRow(rowIndex + 2).GetCell(3).SetCellValue("Pipeline Welding Joints Ultrasonic Examination/PAUT/TOFD Rate Confirmation Form(I)"); ws.GetRow(rowIndex + 2).GetCell(3).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 16, true, true); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 4, 18, 20)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 3, 17)); ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, true, false); ws.GetRow(rowIndex + 1).GetCell(18).SetCellValue($"工程名称:{info?.projectName}\nProject Name:{info?.enProjectName}\n单元名称:{info?.workAreaName}\nUnit Name:{info?.enWorkAreaName}"); ws.GetRow(rowIndex + 4).GetCell(3).SetCellValue($"共 {pageNum} 页 第 {num} 页"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 1, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 8, 15)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 16, 17)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 18, 20)); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("执行标准\r\nApplicable code"); ws.GetRow(rowIndex + 5).GetCell(1).SetCellValue("NB/T47013.3-2015"); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("检测方法\r\nExam. Method"); ws.GetRow(rowIndex + 5).GetCell(8).SetCellValue("超声检测\r\nUT"); ws.GetRow(rowIndex + 5).GetCell(16).SetCellValue("检测比例\r\nExam. Rate"); ws.GetRow(rowIndex + 5).GetCell(18).SetCellValue("95%"); //表头部分设置行高 ws.GetRow(rowIndex).Height = 13 * 20; ws.GetRow(rowIndex + 1).Height = 24 * 20; ws.GetRow(rowIndex + 2).Height = 24 * 20; ws.GetRow(rowIndex + 3).Height = 24 * 20; ws.GetRow(rowIndex + 4).Height = 15 * 20; ws.GetRow(rowIndex + 5).Height = 40 * 20; #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 6, rowIndex + 7, style, 0, 20, true); ws.GetRow(rowIndex + 6).Height = 25 * 20; ws.GetRow(rowIndex + 7).Height = 40 * 20; //设置表头部分 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 7, 0, 1)); ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("管道编号\r\nPipeline No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 7, 2, 2)); ws.GetRow(rowIndex + 6).GetCell(2).SetCellValue("材质\r\nMaterial"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 3, 4)); ws.GetRow(rowIndex + 6).GetCell(3).SetCellValue("规 格/Size"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 3, 4)); ws.GetRow(rowIndex + 7).GetCell(3).SetCellValue("mm"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 5, 8)); ws.GetRow(rowIndex + 6).GetCell(5).SetCellValue("管道焊接接头\r\nWelding Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 9, 12)); ws.GetRow(rowIndex + 6).GetCell(9).SetCellValue("施焊焊工\r\nWelder"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 13, 16)); ws.GetRow(rowIndex + 6).GetCell(13).SetCellValue("检测焊接接头\r\nExanined Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 17, 19)); ws.GetRow(rowIndex + 6).GetCell(17).SetCellValue("实际检测比例"); ws.GetRow(rowIndex + 6).GetCell(20).SetCellValue("检测报告编号"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 5, 6)); ws.GetRow(rowIndex + 7).GetCell(5).SetCellValue("总数\r\nTotal"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 7, 8)); ws.GetRow(rowIndex + 7).GetCell(7).SetCellValue("固定口数\r\nField Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 9, 10)); ws.GetRow(rowIndex + 7).GetCell(9).SetCellValue("焊工代号\r\nWelder No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 11, 12)); ws.GetRow(rowIndex + 7).GetCell(11).SetCellValue("施焊数量\r\nWelded Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 13, 14)); ws.GetRow(rowIndex + 7).GetCell(13).SetCellValue("总数\r\nTotal Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 15, 16)); ws.GetRow(rowIndex + 7).GetCell(15).SetCellValue("固定口数\r\nField Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 17, 19)); ws.GetRow(rowIndex + 7).GetCell(17).SetCellValue("Actual exam. Rate"); ws.GetRow(rowIndex + 7).GetCell(20).SetCellValue("Examination Report No."); //这里创建行数据 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 8, rowIndex + 23, style, 0, 20, true); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 8; } else { dStart = num == 2 ? 8 : ((num - 2) * 8) + 8; dEnd = ((num - 1) * 8) + 8; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 8; i < 16; i++) { ws.GetRow(rowIndex + i).Height = 17 * 20; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(0).SetCellValue("模拟数据"); } j++; } //这里循环数据 ws.GetRow(rowIndex + 16).GetCell(0).SetCellValue("小计\r\nTotal"); ws.GetRow(rowIndex + 17).GetCell(0).SetCellValue("备注\r\nRemark"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 1, 20)); ws.GetRow(rowIndex + 17).GetCell(1).SetCellValue("焊口位置与检测焊口见管道单线图与无损检测报告。\r\nPlease refer to Pipeline Iso-drawing and NDE Report for joints position and examined joints."); ws.GetRow(rowIndex + 17).GetCell(1).CellStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, true, false); ws.GetRow(rowIndex + 16).Height = 28 * 20; ws.GetRow(rowIndex + 17).Height = 28 * 20; #endregion #region 尾部 style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, true, false); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 23, rowIndex + 25, style, 0, 20, true); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 0, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 4, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 10, 16)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 17, 20)); ws.GetRow(rowIndex + 23).GetCell(0).SetCellValue("建设/监理单位\r\nOwner/Supervision Contractor"); ws.GetRow(rowIndex + 23).GetCell(4).SetCellValue("总承包单位\r\nGeneral Contractor"); ws.GetRow(rowIndex + 23).GetCell(10).SetCellValue("检 测 单 位\r\nExamination Contractor"); ws.GetRow(rowIndex + 23).GetCell(17).SetCellValue("施 工 单 位\r\nConstruction Company"); ws.GetRow(rowIndex + 23).Height = 28 * 20; var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, false); ws.GetRow(rowIndex + 23).GetCell(0).CellStyle = ws.GetRow(rowIndex + 23).GetCell(4).CellStyle = ws.GetRow(rowIndex + 23).GetCell(10).CellStyle = ws.GetRow(rowIndex + 23).GetCell(17).CellStyle = style1; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 19, rowIndex + 19, 0, 3)); ws.GetRow(rowIndex + 19).GetCell(0).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.GetRow(rowIndex + 19).Height = 28 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 19, rowIndex + 19, 4, 9)); ws.GetRow(rowIndex + 19).GetCell(4).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 19, rowIndex + 19, 10, 16)); ws.GetRow(rowIndex + 19).GetCell(10).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 19, rowIndex + 19, 17, 20)); ws.GetRow(rowIndex + 19).GetCell(17).SetCellValue("专业工程师\r\nDiscipline Engineer:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 21, 17, 20)); ws.GetRow(rowIndex + 21).GetCell(17).SetCellValue("质量检查员:\r\nQuality Inspector:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 23, rowIndex + 23, 17, 20)); ws.GetRow(rowIndex + 23).GetCell(17).SetCellValue("制表:\r\nPrepared:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 25, rowIndex + 25, 0, 3)); ws.GetRow(rowIndex + 25).GetCell(0).SetCellValue("日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 25, rowIndex + 25, 4, 9)); ws.GetRow(rowIndex + 25).GetCell(4).SetCellValue("日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 25, rowIndex + 25, 10, 16)); ws.GetRow(rowIndex + 25).GetCell(10).SetCellValue("日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 25, rowIndex + 25, 17, 20)); ws.GetRow(rowIndex + 25).GetCell(17).SetCellValue("日期Date: 年 月 日"); ws.GetRow(rowIndex + 20).Height = 3 * 20; ws.GetRow(rowIndex + 21).Height = 28 * 20; ws.GetRow(rowIndex + 22).Height = 3 * 20; ws.GetRow(rowIndex + 23).Height = 28 * 20; ws.GetRow(rowIndex + 24).Height = 3 * 20; ws.GetRow(rowIndex + 25).Height = 28 * 20; RegionUtil.SetBorderTop(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 0, 20), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 23, rowIndex + 23, 0, 20), ws); RegionUtil.SetBorderLeft(1, new CellRangeAddress(rowIndex + 23, rowIndex + 25, 0, 0), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 23, rowIndex + 25, 20, 20), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 25, rowIndex + 25, 0, 20), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 23, rowIndex + 25, 3, 3), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 23, rowIndex + 25, 9, 9), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 23, rowIndex + 25, 16, 16), ws); #endregion rowIndex = rowIndex + 26; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////横向打印 //ws.PrintSetup.Landscape = true; ////水平垂直居中 //ws.HorizontallyCenter = true; //ws.VerticallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //24-TP-10-渗透&MT检测比例确认表 private void template24(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 8 ? 1 : Math.Ceiling((float)(tbNum - 8) / 8) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 9, true, false, "Arial Unicode MS"); #region 头部 var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Right, 9, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex, style1, 0, 20, true); //设置行宽度 ws.SetColumnWidth(0, 13 * 256);//A ws.SetColumnWidth(1, 2 * 256);//B ws.SetColumnWidth(2, 7 * 256);//C ws.SetColumnWidth(3, 5 * 256);//D ws.SetColumnWidth(4, 4 * 256);//E ws.SetColumnWidth(5, 5 * 256);//F ws.SetColumnWidth(6, 6 * 256);//G ws.SetColumnWidth(7, 6 * 256);//H ws.SetColumnWidth(8, 6 * 256);//I ws.SetColumnWidth(9, 5 * 256);//J ws.SetColumnWidth(10, 5 * 256);//K ws.SetColumnWidth(11, 5 * 256);//L ws.SetColumnWidth(12, 7 * 256);//M ws.SetColumnWidth(13, 5 * 256);//N ws.SetColumnWidth(14, 5 * 256);//O ws.SetColumnWidth(15, 5 * 256);//P ws.SetColumnWidth(16, 5 * 256);//Q ws.SetColumnWidth(17, 6 * 256);//R ws.SetColumnWidth(18, 6 * 256);//S ws.SetColumnWidth(19, 6 * 256);//T ws.SetColumnWidth(20, 13 * 256);//U //设置行高度 ws.GetRow(rowIndex).HeightInPoints = 10f; ws.GetRow(rowIndex).GetCell(20).CellStyle = style1; ws.GetRow(rowIndex).GetCell(20).SetCellValue("Form No. TP-10"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 1, rowIndex + 2, style, 0, 20, true); //设置行高度 ws.GetRow(rowIndex + 1).HeightInPoints = 90f; ws.GetRow(rowIndex + 2).HeightInPoints = 30f; //合并单元格和填充文本 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 0, 2)); ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue(""); var style3 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 13, true, true, "Arial Unicode MS"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 3, 17)); ws.GetRow(rowIndex + 1).GetCell(3).CellStyle = style3; ws.GetRow(rowIndex + 1).GetCell(3).SetCellValue($"管道焊接接头渗透/磁粉检测比例确认表(一)\nPipeline Welding Joints Penetrant/Magnetic Examination Rate Confirmation Form(I)\n共 {pageNum} 页 第 {num} 页"); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 9, true, false, "Arial Unicode MS"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 18, 20)); ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = style2; ws.GetRow(rowIndex + 1).GetCell(18).SetCellValue($"\n工程名称:{info?.projectName}\n Project Name:{info?.enProjectName}\n 单元名称:{info?.workAreaName}\n Unit Name:{info?.enWorkAreaName}"); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("执行标准\nApplicable code"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 1, 5)); ws.GetRow(rowIndex + 2).GetCell(1).SetCellValue("NB/T47013.3-2015"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 6, 7)); ws.GetRow(rowIndex + 2).GetCell(6).SetCellValue("检测方法\nExam. Method"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 8, 15)); ws.GetRow(rowIndex + 2).GetCell(8).SetCellValue("渗透检测\nPT"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 16, 17)); ws.GetRow(rowIndex + 2).GetCell(16).SetCellValue("检测比例\nExam. Rate"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 18, 20)); ws.GetRow(rowIndex + 2).GetCell(18).SetCellValue("95%"); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 3, rowIndex + 13, style, 0, 20, true); //设置高度和合并列填充文本 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 0, 1)); ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue("管道编号\nPipeline No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 2, 2)); ws.GetRow(rowIndex + 3).GetCell(2).SetCellValue("材质\nMaterial"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 3, 4)); ws.GetRow(rowIndex + 3).GetCell(3).SetCellValue("规 格/Size\n mm"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 5, 8)); ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("管道焊接接头\nWelding Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 9, 12)); ws.GetRow(rowIndex + 3).GetCell(9).SetCellValue("施焊焊工\nWelder"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 13, 16)); ws.GetRow(rowIndex + 3).GetCell(13).SetCellValue("检测焊接接头\nExanined Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 5, 6)); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("总数\nTotal"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 7, 8)); ws.GetRow(rowIndex + 4).GetCell(7).SetCellValue("固定口数\nField Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 9, 10)); ws.GetRow(rowIndex + 4).GetCell(9).SetCellValue("焊工代号\nWelder No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 11, 12)); ws.GetRow(rowIndex + 4).GetCell(11).SetCellValue("施焊数量\nWelded Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 13, 14)); ws.GetRow(rowIndex + 4).GetCell(13).SetCellValue("总数\nTotal Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 15, 16)); ws.GetRow(rowIndex + 4).GetCell(15).SetCellValue("固定口数\nField Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 17, 19)); ws.GetRow(rowIndex + 3).GetCell(17).SetCellValue("实际检测比例\nActual exam. Rate"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 20, 20)); ws.GetRow(rowIndex + 3).GetCell(20).SetCellValue("检测报告编号\nExamination Report No."); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 8; } else { dStart = num == 2 ? 8 : ((num - 2) * 8) + 8; dEnd = ((num - 1) * 8) + 8; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 3; i < 14; i++) { if (i == 3 || i == 4) { ws.GetRow(rowIndex + i).HeightInPoints = 30f; continue; } if (i == 13) { ws.GetRow(rowIndex + i).HeightInPoints = 30f; } else { ws.GetRow(rowIndex + i).HeightInPoints = 17f; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(0).SetCellValue("模拟数据"); } j++; } ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 7, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 11, 12)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 13, 14)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 15, 16)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 17, 19)); } ws.GetRow(rowIndex + 13).GetCell(0).SetCellValue("小计\nTotal"); #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 14, rowIndex + 16, style, 0, 20, true); //设置行高 ws.GetRow(rowIndex + 14).HeightInPoints = 30f; ws.GetRow(rowIndex + 15).HeightInPoints = 30f; ws.GetRow(rowIndex + 16).HeightInPoints = 125f; ws.GetRow(rowIndex + 14).GetCell(0).SetCellValue("备注\nRemark"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 14, rowIndex + 14, 1, 20)); ws.GetRow(rowIndex + 14).GetCell(1).CellStyle = style2; ws.GetRow(rowIndex + 14).GetCell(1).SetCellValue("焊口位置与检测焊口见管道单线图与无损检测报告。\nPlease refer to Pipeline Iso-drawing and NDE Report for joints position and examined joints."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 0, 3)); ws.GetRow(rowIndex + 15).GetCell(0).SetCellValue("建 设 / 监 理 单 位\nOwner/JianLi Company"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 4, 9)); ws.GetRow(rowIndex + 15).GetCell(4).SetCellValue("总 承 包 单 位\nGeneral Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 10, 16)); ws.GetRow(rowIndex + 15).GetCell(10).SetCellValue("检 测 单 位\nExamination Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 17, 20)); ws.GetRow(rowIndex + 15).GetCell(17).SetCellValue("施 工 单 位\nConstruction Company"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 0, 3)); ws.GetRow(rowIndex + 16).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(0).SetCellValue("专业工程师\n Discipline Engineer: \n\n\n\n\n\n 日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 4, 9)); ws.GetRow(rowIndex + 16).GetCell(4).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(4).SetCellValue("专业工程师\n Discipline Engineer: \n\n\n\n\n\n 日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 10, 16)); ws.GetRow(rowIndex + 16).GetCell(10).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(10).SetCellValue("专业工程师\n Discipline Engineer: \n\n\n\n\n\n 日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 17, 20)); ws.GetRow(rowIndex + 16).GetCell(17).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(17).SetCellValue("专业工程师\n Discipline Engineer: \n 质量检查员:\n Quality Inspector:\n 制表:\n\n Prepared:\n 日期Date: 年 月 日"); #endregion rowIndex += 17; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////水平垂直居中 //ws.HorizontallyCenter = true; //ws.VerticallyCenter = true; ////横向打印 //ws.PrintSetup.Landscape = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //24-TP-10-渗透&MT检测比例确认表 private void template25_1(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 8 ? 1 : Math.Ceiling((float)(tbNum - 8) / 8) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { #region 头部 var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Right, 9, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex, style1, 0, 20, true); //设置行宽度 ws.SetColumnWidth(0, 13 * 256);//A ws.SetColumnWidth(1, 2 * 256);//B ws.SetColumnWidth(2, 7 * 256);//C ws.SetColumnWidth(3, 5 * 256);//D ws.SetColumnWidth(4, 4 * 256);//E ws.SetColumnWidth(5, 5 * 256);//F ws.SetColumnWidth(6, 6 * 256);//G ws.SetColumnWidth(7, 6 * 256);//H ws.SetColumnWidth(8, 6 * 256);//I ws.SetColumnWidth(9, 5 * 256);//J ws.SetColumnWidth(10, 5 * 256);//K ws.SetColumnWidth(11, 5 * 256);//L ws.SetColumnWidth(12, 7 * 256);//M ws.SetColumnWidth(13, 5 * 256);//N ws.SetColumnWidth(14, 5 * 256);//O ws.SetColumnWidth(15, 5 * 256);//P ws.SetColumnWidth(16, 5 * 256);//Q ws.SetColumnWidth(17, 6 * 256);//R ws.SetColumnWidth(18, 6 * 256);//S ws.SetColumnWidth(19, 6 * 256);//T ws.SetColumnWidth(20, 13 * 256);//U //设置行高度 ws.GetRow(rowIndex).HeightInPoints = 10f; ws.GetRow(rowIndex).GetCell(20).CellStyle = style1; ws.GetRow(rowIndex).GetCell(20).SetCellValue("Form No. TP-10"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 1, rowIndex + 2, style, 0, 20, true); //设置行高度 ws.GetRow(rowIndex + 1).HeightInPoints = 90f; ws.GetRow(rowIndex + 2).HeightInPoints = 30f; //合并单元格和填充文本 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 0, 2)); ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue(""); var style3 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 13, true, true, "Arial Unicode MS"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 3, 17)); ws.GetRow(rowIndex + 1).GetCell(3).CellStyle = style3; ws.GetRow(rowIndex + 1).GetCell(3).SetCellValue($"管道焊接接头PMI检测比例确认表(一)\nPipeline Welding Joints PMI Examination Rate Confirmation Form(I)\n共 {pageNum} 页 第 {num} 页"); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 9, true, false, "Arial Unicode MS"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 18, 20)); ws.GetRow(rowIndex + 1).GetCell(18).CellStyle = style2; ws.GetRow(rowIndex + 1).GetCell(18).SetCellValue($"\n工程名称:{info?.projectName}\n Project Name:{info?.enProjectName}\n 单元名称:{info?.workAreaName}\n Unit Name:{info?.enWorkAreaName}"); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("执行标准\nApplicable code"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 1, 5)); ws.GetRow(rowIndex + 2).GetCell(1).SetCellValue(""); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 6, 7)); ws.GetRow(rowIndex + 2).GetCell(6).SetCellValue("检测方法\nExam. Method"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 8, 15)); ws.GetRow(rowIndex + 2).GetCell(8).SetCellValue("PMI检测"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 16, 17)); ws.GetRow(rowIndex + 2).GetCell(16).SetCellValue("检测比例\nExam. Rate"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 18, 20)); ws.GetRow(rowIndex + 2).GetCell(18).SetCellValue("2%"); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 3, rowIndex + 13, style, 0, 20, true); //设置高度和合并列填充文本 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 0, 1)); ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue("管道编号\nPipeline No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 2, 2)); ws.GetRow(rowIndex + 3).GetCell(2).SetCellValue("材质\nMaterial"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 3, 4)); ws.GetRow(rowIndex + 3).GetCell(3).SetCellValue("规 格/Size\n mm"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 5, 8)); ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("管道焊接接头\nWelding Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 9, 12)); ws.GetRow(rowIndex + 3).GetCell(9).SetCellValue("施焊焊工\nWelder"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 13, 16)); ws.GetRow(rowIndex + 3).GetCell(13).SetCellValue("检测焊接接头\nExanined Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 5, 6)); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("总数\nTotal"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 7, 8)); ws.GetRow(rowIndex + 4).GetCell(7).SetCellValue("固定口数\nField Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 9, 10)); ws.GetRow(rowIndex + 4).GetCell(9).SetCellValue("焊工代号\nWelder No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 11, 12)); ws.GetRow(rowIndex + 4).GetCell(11).SetCellValue("施焊数量\nWelded Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 13, 14)); ws.GetRow(rowIndex + 4).GetCell(13).SetCellValue("总数\nTotal Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 15, 16)); ws.GetRow(rowIndex + 4).GetCell(15).SetCellValue("固定口数\nField Joints"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 17, 19)); ws.GetRow(rowIndex + 3).GetCell(17).SetCellValue("实际检测比例\nActual exam. Rate"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 20, 20)); ws.GetRow(rowIndex + 3).GetCell(20).SetCellValue("检测报告编号\nExamination Report No."); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 8; } else { dStart = num == 2 ? 8 : ((num - 2) * 8) + 8; dEnd = ((num - 1) * 8) + 8; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 3; i < 14; i++) { if (i == 3 || i == 4) { ws.GetRow(rowIndex + i).HeightInPoints = 30f; continue; } if (i == 13) { ws.GetRow(rowIndex + i).HeightInPoints = 30f; } else { ws.GetRow(rowIndex + i).HeightInPoints = 17f; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(0).SetCellValue("模拟数据"); } j++; } ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 7, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 11, 12)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 13, 14)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 15, 16)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 17, 19)); } ws.GetRow(rowIndex + 13).GetCell(0).SetCellValue("小计\nTotal"); #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 14, rowIndex + 16, style, 0, 20, true); //设置行高 ws.GetRow(rowIndex + 14).HeightInPoints = 30f; ws.GetRow(rowIndex + 15).HeightInPoints = 30f; ws.GetRow(rowIndex + 16).HeightInPoints = 125f; ws.GetRow(rowIndex + 14).GetCell(0).SetCellValue("备注\nRemark"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 14, rowIndex + 14, 1, 20)); ws.GetRow(rowIndex + 14).GetCell(1).CellStyle = style2; ws.GetRow(rowIndex + 14).GetCell(1).SetCellValue("焊口位置与检测焊口见管道单线图与无损检测报告。\nPlease refer to Pipeline Iso-drawing and NDE Report for joints position and examined joints."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 0, 3)); ws.GetRow(rowIndex + 15).GetCell(0).SetCellValue("建 设 / 监 理 单 位\nOwner/JianLi Company"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 4, 9)); ws.GetRow(rowIndex + 15).GetCell(4).SetCellValue("总 承 包 单 位\nGeneral Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 10, 16)); ws.GetRow(rowIndex + 15).GetCell(10).SetCellValue("检 测 单 位\nExamination Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 15, rowIndex + 15, 17, 20)); ws.GetRow(rowIndex + 15).GetCell(17).SetCellValue("施 工 单 位\nConstruction Company"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 0, 3)); ws.GetRow(rowIndex + 16).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(0).SetCellValue("专业工程师\n Discipline Engineer: \n\n\n\n\n\n 日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 4, 9)); ws.GetRow(rowIndex + 16).GetCell(4).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(4).SetCellValue("专业工程师\n Discipline Engineer: \n\n\n\n\n\n 日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 10, 16)); ws.GetRow(rowIndex + 16).GetCell(10).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(10).SetCellValue("专业工程师\n Discipline Engineer: \n\n\n\n\n\n 日期Date: 年 月 日"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 17, 20)); ws.GetRow(rowIndex + 16).GetCell(17).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(17).SetCellValue("专业工程师\n Discipline Engineer: \n 质量检查员:\n Quality Inspector:\n 制表:\n\n Prepared:\n 日期Date: 年 月 日"); #endregion rowIndex += 17; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////水平垂直居中 //ws.HorizontallyCenter = true; //ws.VerticallyCenter = true; ////横向打印 //ws.PrintSetup.Landscape = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //25-管道无损检测结果汇总表SHT 3503-J412-2017 private void template25(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); int rowIndex = 0; string sql = @"SELECT ROW_NUMBER() OVER(ORDER BY c.PipelineCode,c.WeldJointCode) AS Number, c.PipelineCode,c.WeldJointCode, c.WelderCode,'/' AS PointBatchCode, '/' AS Remark, (CASE WHEN c.DetectionTypeCode='RT' THEN c.NDEReportNo ELSE '' END) AS RTNDEReportNo, (CASE WHEN c.DetectionTypeCode='RT' THEN c.CheckResult ELSE '' END) AS RTCheckResult, (CASE WHEN c.DetectionTypeCode<>'RT' THEN c.NDEReportNo ELSE '' END) AS PTNDEReportNo, (CASE WHEN c.DetectionTypeCode<>'RT' THEN c.CheckResult ELSE '' END) AS PTCheckResult FROM dbo.View_CheckResultSummary c WHERE c.WeldJointId IN (SELECT c.WeldJointId FROM dbo.PTP_TestPackage AS a INNER JOIN dbo.PTP_PipelineList AS b ON a.PTP_ID=b.PTP_ID LEFT JOIN dbo.Pipeline_WeldJoint AS C ON b.PipelineId=c.PipelineId WHERE b.isAll=1 AND a.PTP_ID=@PTPID and a.ProjectId=@ProjectId -- 传试压包ID参数 UNION ALL SELECT c.WeldJointId FROM dbo.PTP_TestPackage AS a INNER JOIN dbo.PTP_PipelineList AS b ON a.PTP_ID=b.PTP_ID LEFT JOIN dbo.Pipeline_WeldJoint AS C ON b.PipelineId=c.PipelineId WHERE b.isAll=0 AND a.PTP_ID=@PTPID and a.ProjectId=@ProjectId -- 传试压包ID参数 AND PATINDEX('%'+c.WeldJointCode+'%',b.WeldJonintCode)>0) "; SqlParameter[] parms = { new SqlParameter("@PTPID",this.tvControlItem.SelectedNodeID), new SqlParameter("@ProjectId",this.CurrUser.LoginProjectId) }; DataTable tb = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = tb.Rows.Count; var pageNum = tbNum < 5 ? 1 : Math.Ceiling((float)(tbNum - 5) / 5) + 1; for (int i = 1; i <= pageNum; i++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 1, rowIndex + 3, style, 1, 18, true); ws.SetColumnWidth(0, 1 * 256);//A ws.SetColumnWidth(1, 10 * 256);//B ws.SetColumnWidth(2, 6 * 256);//C ws.SetColumnWidth(3, 6 * 256);//D ws.SetColumnWidth(4, 6 * 256);//E ws.SetColumnWidth(5, 6 * 256);//F ws.SetColumnWidth(6, 12 * 256);//G ws.SetColumnWidth(7, 7 * 256);//H ws.SetColumnWidth(8, 7 * 256);//I ws.SetColumnWidth(9, 7 * 256);//J ws.SetColumnWidth(10, 7 * 256);//K ws.SetColumnWidth(11, 8 * 256);//L ws.SetColumnWidth(12, 7 * 256);//M ws.SetColumnWidth(13, 7 * 256);//N ws.SetColumnWidth(14, 6 * 256);//O ws.SetColumnWidth(15, 8 * 256);//P ws.SetColumnWidth(16, 4 * 256);//Q ws.SetColumnWidth(17, 5 * 256);//R ws.SetColumnWidth(18, 8 * 256);//S ws.GetRow(rowIndex + 1).HeightInPoints = 85f; ws.GetRow(rowIndex + 2).HeightInPoints = 35f; ws.GetRow(rowIndex + 3).HeightInPoints = 35f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 1, 5)); ws.GetRow(rowIndex + 1).GetCell(1).SetCellValue("SH/T 3503-J412-1"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 6, 13)); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); style1.WrapText = true; ws.GetRow(rowIndex + 1).GetCell(6).CellStyle = style1; ws.GetRow(rowIndex + 1).GetCell(6).SetCellValue($"管道无损检测结果汇总表\nSummary of Piping NDT Results\n第 {i} 页 共 {pageNum} 页 Page of "); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 14, 18)); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); style2.WrapText = true; ws.GetRow(rowIndex + 1).GetCell(14).CellStyle = style2; ws.GetRow(rowIndex + 1).GetCell(14).SetCellValue($"工程名称:{info?.projectName}\nProject Name:{info?.enProjectName}\n单位工程名称:{info?.workAreaName}\nUnit Name:{info?.enWorkAreaName}"); ws.GetRow(rowIndex + 2).GetCell(1).SetCellValue("Supervision Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 2, 5)); ws.GetRow(rowIndex + 2).GetCell(6).SetCellValue("Construction Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 7, 10)); ws.GetRow(rowIndex + 2).GetCell(11).SetCellValue("Test Criteria"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 12, 14)); ws.GetRow(rowIndex + 2).GetCell(15).SetCellValue("Piping Class"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 16, 18)); ws.GetRow(rowIndex + 3).GetCell(1).SetCellValue("Area No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 2, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 5, 6)); ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("Test Type No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 7, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 11, 12)); ws.GetRow(rowIndex + 3).GetCell(11).SetCellValue("Piping No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 13, 18)); #endregion #region 表格部分 style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 4, rowIndex + 16, style, 1, 18, true); //第一部分表格部分 ws.GetRow(rowIndex + 4).HeightInPoints = 36f; ws.GetRow(rowIndex + 5).HeightInPoints = 36f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 1, 1)); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue("Test Method"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 2, 9)); ws.GetRow(rowIndex + 4).GetCell(2).SetCellValue("Test Quantity Statistics\n(RT Unit:Weld/Film;UT/MT/PT/ Unit:Weld/Meter)"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 10, 18)); ws.GetRow(rowIndex + 4).GetCell(10).SetCellValue("Non-conformity Statistics\n(RT Unit:Weld/Film;UT/MT/PT/ Unit:Weld/Meter)"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 2, 3)); ws.GetRow(rowIndex + 5).GetCell(2).SetCellValue("Butt-welded Joint"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 4, 5)); ws.GetRow(rowIndex + 5).GetCell(4).SetCellValue("Fillet-welded Joint"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 7)); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("Branch Connection"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 8, 9)); ws.GetRow(rowIndex + 5).GetCell(8).SetCellValue("Groove & Others"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 10, 11)); ws.GetRow(rowIndex + 5).GetCell(10).SetCellValue("Butt-welded Joint"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 12, 13)); ws.GetRow(rowIndex + 5).GetCell(12).SetCellValue("Fillet-welded Joint"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 14, 15)); ws.GetRow(rowIndex + 5).GetCell(14).SetCellValue("Branch Connection"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 16, 18)); ws.GetRow(rowIndex + 5).GetCell(16).SetCellValue("Groove & Others"); ws.GetRow(rowIndex + 6).GetCell(1).SetCellValue("RT"); ws.GetRow(rowIndex + 7).GetCell(1).SetCellValue("UT"); ws.GetRow(rowIndex + 8).GetCell(1).SetCellValue("MT"); ws.GetRow(rowIndex + 9).GetCell(1).SetCellValue("PT"); //第二部分表格部分 ws.GetRow(rowIndex + 11).HeightInPoints = 60f; var qq = from x in Funs.DB.View_CheckResultSummary where x.PTP_ID == this.PTP_ID select x; // 合格 var rt = qq.Where(x => x.DetectionTypeCode == "RT" && x.CheckResult == "合格"); string bRt = "/"; if (rt.Count() > 0) { bRt = rt.Count().ToString() + "/" + rt.Sum(x => x.TotalFilm).ToString(); } var jpt = qq.Where(x => x.DetectionTypeCode == "PT" && x.CheckResult == "合格" && x.WeldType == "2"); string ptj = "/"; if (jpt.Count() > 0) { ptj = jpt.Count().ToString(); } var zpt = qq.Where(x => x.DetectionTypeCode == "PT" && x.CheckResult == "合格" && x.WeldType == "3"); string ptz = "/"; if (zpt.Count() > 0) { ptz = zpt.Count().ToString(); } // 不合格 var nrt = qq.Where(x => x.DetectionTypeCode == "RT" && x.CheckResult == "不合格"); string nbRt = "/"; if (nrt.Count() > 0) { nbRt = nrt.Count().ToString() + "/" + nrt.Sum(x => x.TotalFilm).ToString(); } var njpt = qq.Where(x => x.DetectionTypeCode == "PT" && x.CheckResult == "不合格" && x.WeldType == "2"); string nptj = "/"; if (njpt.Count() > 0) { nptj = njpt.Count().ToString(); } var nzpt = qq.Where(x => x.DetectionTypeCode == "PT" && x.CheckResult == "不合格" && x.WeldType == "3"); string nptz = "/"; if (nzpt.Count() > 0) { nptz = nzpt.Count().ToString(); } for (int k = 6; k < 11; k++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + k, rowIndex + k, 2, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + k, rowIndex + k, 4, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + k, rowIndex + k, 6, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + k, rowIndex + k, 8, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + k, rowIndex + k, 10, 11)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + k, rowIndex + k, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + k, rowIndex + k, 14, 15)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + k, rowIndex + k, 16, 18)); ws.GetRow(rowIndex + k).HeightInPoints = 18f; if (k == 10) break; //RT值 if (k == 6) { ws.GetRow(rowIndex + k).GetCell(2).SetCellValue(bRt); ws.GetRow(rowIndex + k).GetCell(10).SetCellValue(nbRt); } else { ws.GetRow(rowIndex + k).GetCell(2).SetCellValue("/"); } if (k == 9) { ws.GetRow(rowIndex + k).GetCell(4).SetCellValue(ptj); ws.GetRow(rowIndex + k).GetCell(6).SetCellValue(ptz); ws.GetRow(rowIndex + k).GetCell(12).SetCellValue(nptj); ws.GetRow(rowIndex + k).GetCell(14).SetCellValue(nptz); } if (k == 6 || k == 7) { ws.GetRow(rowIndex + k).GetCell(4).SetCellValue("-"); ws.GetRow(rowIndex + k).GetCell(12).SetCellValue("-"); } ws.GetRow(rowIndex + k).GetCell(6).SetCellValue("/"); ws.GetRow(rowIndex + k).GetCell(8).SetCellValue("/"); ws.GetRow(rowIndex + k).GetCell(16).SetCellValue("/"); } ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 1, 2)); ws.GetRow(rowIndex + 11).GetCell(1).SetCellValue("Line No."); ws.GetRow(rowIndex + 11).GetCell(3).SetCellValue("weld No."); ws.GetRow(rowIndex + 11).GetCell(4).SetCellValue("Welder's Stamp No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 5, 6)); ws.GetRow(rowIndex + 11).GetCell(5).SetCellValue("Test Lot No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 7, 8)); ws.GetRow(rowIndex + 11).GetCell(7).SetCellValue("RT/UT Result"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 9, 10)); ws.GetRow(rowIndex + 11).GetCell(9).SetCellValue("Report No."); ws.GetRow(rowIndex + 11).GetCell(11).SetCellValue("MT/PT Result"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 12, 13)); ws.GetRow(rowIndex + 11).GetCell(12).SetCellValue("Report No."); ws.GetRow(rowIndex + 11).GetCell(14).SetCellValue("Result"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 15, 16)); ws.GetRow(rowIndex + 11).GetCell(15).SetCellValue("Report No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 11, rowIndex + 11, 17, 18)); ws.GetRow(rowIndex + 11).GetCell(17).SetCellValue("Remarks"); var dataTit = rowIndex + 12; var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 5; } else { dStart = i == 2 ? 5 : ((i - 2) * 5) + 5; dEnd = ((i - 1) * 5) + 5; } //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); int j = 0; for (int hb = rowIndex + 12; hb < rowIndex + 17; hb++) { ws.GetRow(hb).Height = 18 * 20; ws.AddMergedRegion(new CellRangeAddress(hb, hb, 1, 2)); ws.AddMergedRegion(new CellRangeAddress(hb, hb, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(hb, hb, 7, 8)); ws.AddMergedRegion(new CellRangeAddress(hb, hb, 9, 10)); ws.AddMergedRegion(new CellRangeAddress(hb, hb, 12, 13)); ws.AddMergedRegion(new CellRangeAddress(hb, hb, 15, 16)); ws.AddMergedRegion(new CellRangeAddress(hb, hb, 17, 18)); } foreach (DataRow dr in pageTb.Rows) { var dataIndex = dataTit + j; ws.GetRow(dataIndex).GetCell(1).SetCellValue(dr["PipelineCode"].ToString()); ws.GetRow(dataIndex).GetCell(3).SetCellValue(dr["WeldJointCode"].ToString()); ws.GetRow(dataIndex).GetCell(4).SetCellValue(dr["WelderCode"].ToString()); ws.GetRow(dataIndex).GetCell(5).SetCellValue(dr["PointBatchCode"].ToString()); ws.GetRow(dataIndex).GetCell(7).SetCellValue(dr["RTCheckResult"].ToString()); ws.GetRow(dataIndex).GetCell(9).SetCellValue(dr["RTNDEReportNo"].ToString()); ws.GetRow(dataIndex).GetCell(11).SetCellValue(dr["PTCheckResult"].ToString()); ws.GetRow(dataIndex).GetCell(12).SetCellValue(dr["PTNDEReportNo"].ToString()); ws.GetRow(dataIndex).GetCell(14).SetCellValue(""); ws.GetRow(dataIndex).GetCell(15).SetCellValue(""); ws.GetRow(dataIndex).GetCell(17).SetCellValue(dr["Remark"].ToString()); j++; } #endregion #region 尾部 style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 17, rowIndex + 17, style, 1, 18, true); ws.GetRow(rowIndex + 17).HeightInPoints = 60f; var setStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, false, false, "Arial Unicode MS"); setStyle2.WrapText = true; ws.GetRow(rowIndex + 17).GetCell(1).CellStyle = ws.GetRow(rowIndex + 17).GetCell(7).CellStyle = ws.GetRow(rowIndex + 17).GetCell(13).CellStyle = setStyle2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 1, 6)); ws.GetRow(rowIndex + 17).GetCell(1).SetCellValue(" Responsible Inspector:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 7, 12)); ws.GetRow(rowIndex + 17).GetCell(7).SetCellValue(" Technical Superintendent:\n\n Quality Superintendent:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 17, rowIndex + 17, 13, 18)); ws.GetRow(rowIndex + 17).GetCell(13).SetCellValue(" Inspection Agency: (Seal)\n\n Date:"); #endregion rowIndex += 18; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////横向打印 //ws.PrintSetup.Landscape = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //26-管道无损检测数量统计表SHT 3503-J413-2017 private void template26(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 9 ? 1 : Math.Ceiling((float)(tbNum - 9) / 18) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 1, rowIndex + 6, style, 1, 23, true); ws.SetColumnWidth(0, 2 * 256); ws.SetColumnWidth(1, 9 * 256); ws.SetColumnWidth(2, 3 * 256); ws.SetColumnWidth(3, 11 * 256); ws.SetColumnWidth(4, 3 * 256); ws.SetColumnWidth(5, 9 * 256); ws.SetColumnWidth(6, 2 * 256); ws.SetColumnWidth(7, 5 * 256); ws.SetColumnWidth(8, 5 * 256); ws.SetColumnWidth(9, 5 * 256); ws.SetColumnWidth(10, 5 * 256); ws.SetColumnWidth(11, 5 * 256); ws.SetColumnWidth(12, 5 * 256); ws.SetColumnWidth(13, 5 * 256); ws.SetColumnWidth(14, 5 * 256); ws.SetColumnWidth(15, 5 * 256); ws.SetColumnWidth(16, 5 * 256); ws.SetColumnWidth(17, 5 * 256); ws.SetColumnWidth(18, 5 * 256); ws.SetColumnWidth(19, 5 * 256); ws.SetColumnWidth(20, 5 * 256); ws.SetColumnWidth(21, 5 * 256); ws.SetColumnWidth(22, 5 * 256); ws.SetColumnWidth(23, 9 * 256); for (int i = 1; i < 6; i++) { ws.GetRow(rowIndex + i).HeightInPoints = 16f; } ws.GetRow(rowIndex + 6).HeightInPoints = 30f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 5, 1, 3)); ws.GetRow(rowIndex + 1).GetCell(1).SetCellValue("SH/T 3503-J413-1"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 5, 4, 16)); string title = num == 1 ? $"管道无损检测数量统计表 ;\n Piping NDT Quantity Statistical From ;\n 第 {num} 页 共 {pageNum} 页 Page of " : $"管道无损检测数量统计表(续) ;\n Piping NDT Quantity Statistical From ;\n 第 {num} 页 共 {pageNum} 页 Page of "; ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue(title); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); ws.GetRow(rowIndex + 1).GetCell(4).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 5, 17, 23)); ws.GetRow(rowIndex + 1).GetCell(17).SetCellValue($"工程名称:{info?.projectName}\n Project Name:{info?.enProjectName}\n 单位工程名称:{info?.workAreaName}\n Unit Name:{info?.enWorkAreaName}"); var setStyle1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, false, false, "Arial Unicode MS"); setStyle1.WrapText = true; ws.GetRow(rowIndex + 1).GetCell(17).CellStyle = setStyle1; ws.GetRow(rowIndex + 6).GetCell(1).SetCellValue("Area No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 2, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 4, 5)); ws.GetRow(rowIndex + 6).GetCell(4).SetCellValue("Test Type No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 6, 11)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 12, 14)); ws.GetRow(rowIndex + 6).GetCell(12).SetCellValue("Acceptance Criteria"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 15, 18)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 19, 20)); ws.GetRow(rowIndex + 6).GetCell(19).SetCellValue("Test Criteria"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 21, 23)); #endregion #region 表格部分 var rend = num == 1 ? 18 : 27; style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, false, "Arial Unicode MS"); //ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 7, rowIndex + 18, style, 1, 23, true); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 7, rowIndex + rend, style, 1, 23, true); ws.GetRow(rowIndex + 7).HeightInPoints = 20f; ws.GetRow(rowIndex + 8).HeightInPoints = 30f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 9, 1, 2)); ws.GetRow(rowIndex + 7).GetCell(1).SetCellValue("Piping No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 9, 3, 4)); ws.GetRow(rowIndex + 7).GetCell(3).SetCellValue("Included Line No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 9, 5, 6)); ws.GetRow(rowIndex + 7).GetCell(5).SetCellValue("Test Percentage"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 7, 22)); ws.GetRow(rowIndex + 7).GetCell(7).SetCellValue("Qualified Quantity"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 8, 23, 23)); ws.GetRow(rowIndex + 7).GetCell(23).SetCellValue("Remarks"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 8, 7, 11)); ws.GetRow(rowIndex + 8).GetCell(7).SetCellValue("Butt-welded Joint"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 8, 12, 14)); ws.GetRow(rowIndex + 8).GetCell(12).SetCellValue("Fillet-welded Joint"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 8, 15, 19)); ws.GetRow(rowIndex + 8).GetCell(15).SetCellValue("Branch Connection"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 8, 20, 22)); ws.GetRow(rowIndex + 8).GetCell(20).SetCellValue("Groove & Others"); ws.GetRow(rowIndex + 9).GetCell(7).SetCellValue("Total"); ws.GetRow(rowIndex + 9).GetCell(8).SetCellValue("RT"); ws.GetRow(rowIndex + 9).GetCell(9).SetCellValue("UT"); ws.GetRow(rowIndex + 9).GetCell(10).SetCellValue("MT"); ws.GetRow(rowIndex + 9).GetCell(11).SetCellValue("PT"); ws.GetRow(rowIndex + 9).GetCell(12).SetCellValue("Total"); ws.GetRow(rowIndex + 9).GetCell(13).SetCellValue("MT"); ws.GetRow(rowIndex + 9).GetCell(14).SetCellValue("PT"); ws.GetRow(rowIndex + 9).GetCell(15).SetCellValue("Total"); ws.GetRow(rowIndex + 9).GetCell(16).SetCellValue("RT"); ws.GetRow(rowIndex + 9).GetCell(17).SetCellValue("UT"); ws.GetRow(rowIndex + 9).GetCell(18).SetCellValue("MT"); ws.GetRow(rowIndex + 9).GetCell(19).SetCellValue("PT"); ws.GetRow(rowIndex + 9).GetCell(20).SetCellValue("Total"); ws.GetRow(rowIndex + 9).GetCell(21).SetCellValue("MT"); ws.GetRow(rowIndex + 9).GetCell(22).SetCellValue("PT"); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 9; } else { dStart = num == 2 ? 9 : ((num - 2) * 18) + 9; dEnd = ((num - 1) * 18) + 9; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 10; i <= rend; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 1, 2)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 5, 6)); ws.GetRow(rowIndex + i).HeightInPoints = 18f; if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(1).SetCellValue("模拟数据"); } j++; } #endregion #region 尾部 if (num == 1) { style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 19, rowIndex + 20, style, 1, 23, true); ws.GetRow(rowIndex + 19).HeightInPoints = 25f; ws.GetRow(rowIndex + 20).Height = 20 * 20 * 7; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 19, rowIndex + 19, 1, 7)); ws.GetRow(rowIndex + 19).GetCell(1).SetCellValue("Owner/Supervision Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 19, rowIndex + 19, 8, 15)); ws.GetRow(rowIndex + 19).GetCell(8).SetCellValue("General Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 19, rowIndex + 19, 16, 23)); ws.GetRow(rowIndex + 19).GetCell(16).SetCellValue("Construction Contractor"); var setStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, false, false, "Arial Unicode MS"); setStyle2.WrapText = true; ws.GetRow(rowIndex + 20).GetCell(1).CellStyle = ws.GetRow(rowIndex + 20).GetCell(8).CellStyle = ws.GetRow(rowIndex + 20).GetCell(16).CellStyle = setStyle2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 20, rowIndex + 20, 1, 7)); ws.GetRow(rowIndex + 20).GetCell(1).SetCellValue(" Discipline Engineer:\n\n\n\n\n\nDate:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 20, rowIndex + 20, 8, 15)); ws.GetRow(rowIndex + 20).GetCell(8).SetCellValue(" Discipline Engineer:\n\n\n\n\n\n Date:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 20, rowIndex + 20, 16, 23)); ws.GetRow(rowIndex + 20).GetCell(16).SetCellValue(" Quality Inspector: \n \n Discipline Engineer: \n\n From Prepared by:\n\n Date:"); } #endregion rowIndex += num == 1 ? 21 : 28; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////横向打印 //ws.PrintSetup.Landscape = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //27-TP-11-尾项清单UG-FW-001 private void template27(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //插入图片部分 var img1 = Server.MapPath("~/res/images/bsf/1.png"); var img2 = Server.MapPath("~/res/images/bsf/2.png"); var img3 = Server.MapPath("~/res/images/bsf/3.png"); var img4 = Server.MapPath("~/res/images/bsf/4.png"); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 12 ? 1 : Math.Ceiling((float)(tbNum - 12) / 12) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, false, "Arial Unicode MS"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 12, true, false, "Arial Unicode MS"); var style3 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 16, true, true, "Arial Unicode MS"); var style4 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 24, true, true, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 7, style, 0, 24, true); //设置行高和列宽 ws.SetColumnWidth(0, 5 * 256);//A ws.SetColumnWidth(1, 5 * 256);//B ws.SetColumnWidth(2, 6 * 256);//C ws.SetColumnWidth(3, 2 * 256);//D ws.SetColumnWidth(4, 5 * 256);//E ws.SetColumnWidth(5, 6 * 256);//F ws.SetColumnWidth(6, 6 * 256);//G ws.SetColumnWidth(7, 4 * 256);//H ws.SetColumnWidth(8, 5 * 256);//I ws.SetColumnWidth(9, 5 * 256);//J ws.SetColumnWidth(10, 5 * 256);//K ws.SetColumnWidth(11, 5 * 256);//L ws.SetColumnWidth(12, 4 * 256);//M ws.SetColumnWidth(13, 5 * 256);//N ws.SetColumnWidth(14, 5 * 256);//O ws.SetColumnWidth(15, 5 * 256);//P ws.SetColumnWidth(16, 6 * 256);//Q ws.SetColumnWidth(17, 6 * 256);//R ws.SetColumnWidth(18, 6 * 256);//S ws.SetColumnWidth(19, 6 * 256);//T ws.SetColumnWidth(20, 6 * 256);//U ws.SetColumnWidth(21, 6 * 256);//V ws.SetColumnWidth(22, 7 * 256);//W ws.SetColumnWidth(23, 4 * 256);//X ws.SetColumnWidth(24, 3 * 256);//Y ws.GetRow(rowIndex).HeightInPoints = 10f; ws.GetRow(rowIndex + 1).HeightInPoints = 50f; ws.GetRow(rowIndex + 2).HeightInPoints = 8f; ws.GetRow(rowIndex + 3).HeightInPoints = 35f; ws.GetRow(rowIndex + 4).HeightInPoints = 18f; ws.GetRow(rowIndex + 5).HeightInPoints = 18f; ws.GetRow(rowIndex + 6).HeightInPoints = 18f; ws.GetRow(rowIndex + 7).HeightInPoints = 35f; //合并单元格和填充文本 ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 22, 24)); ws.GetRow(rowIndex).GetCell(22).SetCellValue("Form No. TP-11"); ws.GetRow(rowIndex).GetCell(22).CellStyle = style1; //画线 RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex, rowIndex, 0, 24), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 6, 18)); ws.GetRow(rowIndex + 1).GetCell(6).SetCellValue("巴斯夫(广东)一体化项目\nBASF (Guangdong) Integrated Project"); ws.GetRow(rowIndex + 1).GetCell(6).CellStyle = style3; //画线 RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 0, 24), ws); //画线 RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 0, 24), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 6, 3, 15)); ws.GetRow(rowIndex + 3).GetCell(3).SetCellValue("PUNCH LIST\n尾项清单"); ws.GetRow(rowIndex + 3).GetCell(3).CellStyle = style4; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 16, 18)); ws.GetRow(rowIndex + 3).GetCell(16).CellStyle = style1; ws.GetRow(rowIndex + 3).GetCell(16).SetCellValue("项目/PROJECT"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 19, 24)); ws.GetRow(rowIndex + 3).GetCell(19).CellStyle = style1; ws.GetRow(rowIndex + 3).GetCell(19).SetCellValue("巴斯夫(广东)一体化项目\nBASF (Guangdong) Integrated Project"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 16, 18)); ws.GetRow(rowIndex + 4).GetCell(16).CellStyle = style1; ws.GetRow(rowIndex + 4).GetCell(16).SetCellValue("区域/AREA"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 19, 24)); ws.GetRow(rowIndex + 4).GetCell(19).CellStyle = style1; ws.GetRow(rowIndex + 4).GetCell(19).SetCellValue(info?.workAreaCode); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 6, 16, 18)); ws.GetRow(rowIndex + 5).GetCell(16).CellStyle = style1; ws.GetRow(rowIndex + 5).GetCell(16).SetCellValue("试压包号/TEST PACKAGE No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 6, 19, 24)); ws.GetRow(rowIndex + 5).GetCell(19).CellStyle = style1; ws.GetRow(rowIndex + 5).GetCell(19).SetCellValue(info?.testpackageNo); //画线 RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 6, rowIndex + 6, 0, 24), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 4, rowIndex + 4, 16, 24), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 3, rowIndex + 3, 16, 24), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 3, rowIndex + 6, 18, 18), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 3, rowIndex + 6, 15, 15), ws); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 0, 2)); ws.GetRow(rowIndex + 7).GetCell(0).CellStyle = style1; ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("系统号\nSYSTEM No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 3, 15)); ws.GetRow(rowIndex + 7).GetCell(3).CellStyle = style1; ws.GetRow(rowIndex + 7).GetCell(3).SetCellValue("UG"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 16, 18)); ws.GetRow(rowIndex + 7).GetCell(16).CellStyle = style1; ws.GetRow(rowIndex + 7).GetCell(16).SetCellValue("子系统号\nSUB-SYSTEM No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 19, 24)); ws.GetRow(rowIndex + 7).GetCell(19).CellStyle = style1; ws.GetRow(rowIndex + 7).GetCell(19).SetCellValue("FW"); //画线 RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 2, 2), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 15, 15), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 18, 18), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 0, 24), ws); //插入图片 InsertImage(hssfworkbook, ws, rowIndex + 1, 1, rowIndex + 1, 2, img1, 1.8, 1); InsertImage(hssfworkbook, ws, rowIndex + 1, 4, rowIndex + 1, 5, img2, 1.8, 1, 0, 1); InsertImage(hssfworkbook, ws, rowIndex + 1, 19, rowIndex + 1, 20, img3, 1.8, 0.7, 0, 10); InsertImage(hssfworkbook, ws, rowIndex + 1, 21, rowIndex + 1, 23, img4, 1.2, 0.9, 0, 5); #endregion #region 表格部分 var style5 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 8, rowIndex + 22, style5, 0, 24, true); //设置行高 ws.GetRow(rowIndex + 8).HeightInPoints = 30f; ws.GetRow(rowIndex + 9).HeightInPoints = 30f; ws.GetRow(rowIndex + 10).HeightInPoints = 40f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 10, 0, 0)); ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("序号\nS/N"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 10, 1, 5)); ws.GetRow(rowIndex + 8).GetCell(1).SetCellValue("图纸号\nDrawing No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 10, 6, 6)); ws.GetRow(rowIndex + 8).GetCell(6).SetCellValue("版本\nRev No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 10, 7, 15)); ws.GetRow(rowIndex + 8).GetCell(7).SetCellValue("尾项描述\nPunch Description"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 10, 16, 16)); ws.GetRow(rowIndex + 8).GetCell(16).SetCellValue("尾项类别\n* Punch Category"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 9, 17, 18)); ws.GetRow(rowIndex + 8).GetCell(17).SetCellValue("提出人\nOriginator"); ws.GetRow(rowIndex + 10).GetCell(17).SetCellValue("姓名\nName"); ws.GetRow(rowIndex + 10).GetCell(18).SetCellValue("单位\nCompany"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 8, 19, 24)); ws.GetRow(rowIndex + 8).GetCell(19).SetCellValue("尾项关闭\nRemedial Acceptance and Signature"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 9, rowIndex + 9, 19, 20)); ws.GetRow(rowIndex + 9).GetCell(19).SetCellValue("CC7"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 9, rowIndex + 9, 21, 22)); ws.GetRow(rowIndex + 9).GetCell(21).SetCellValue("Worley/BASF"); ws.GetRow(rowIndex + 10).GetCell(19).SetCellValue("签名\nSign"); ws.GetRow(rowIndex + 10).GetCell(20).SetCellValue("日期Date"); ws.GetRow(rowIndex + 10).GetCell(21).SetCellValue("签名\nSign"); ws.GetRow(rowIndex + 10).GetCell(22).SetCellValue("日期Date"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 9, rowIndex + 10, 23, 24)); ws.GetRow(rowIndex + 9).GetCell(23).SetCellValue("Remark"); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 12; } else { dStart = num == 2 ? 12 : ((num - 2) * 12) + 12; dEnd = ((num - 1) * 12) + 12; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 11; i < 23; i++) { ws.GetRow(rowIndex + i).HeightInPoints = 17f; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 1, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 7, 15)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 23, 24)); if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(1).SetCellValue(dr["PTP_ID"].ToString()); } j++; } #endregion #region 尾部 var style6 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 8, false, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 23, rowIndex + 27, style6, 0, 24, true); ws.GetRow(rowIndex + 23).HeightInPoints = 8f; for (int i = 24; i < 28; i++) { ws.GetRow(rowIndex + i).HeightInPoints = 10f; } ws.GetRow(rowIndex + 24).GetCell(0).SetCellValue("LEGEND"); ws.GetRow(rowIndex + 24).GetCell(1).SetCellValue(" N.A.: Not Applicable"); ws.GetRow(rowIndex + 24).GetCell(10).SetCellValue("*PUNCH CATEGORY:"); ws.GetRow(rowIndex + 25).GetCell(11).SetCellValue("A - PUNCH ITEM MUST BE COMPLETED BEFORE TESTING."); ws.GetRow(rowIndex + 26).GetCell(11).SetCellValue("B - PUNCH ITEM TO BE COMPLETED AFTER TESTING BUT SHALL BE COMPLETED PRIOR TO SYSTEM TURN-OVER"); ws.GetRow(rowIndex + 27).GetCell(11).SetCellValue("C - PUNCH ITEM TO BE COMPLETED AFTER SYSTEM TURNOVER."); //划线 RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex, rowIndex + 23, 24, 24), ws); #endregion rowIndex += 28; } ws.PrintSetup.Landscape = true; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////横向打印 //ws.PrintSetup.Landscape = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //28-TP-12-试压用水(工具)检查清单UG-FW-001 private void template28(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //插入图片部分 var img1 = Server.MapPath("~/res/images/bsf/1.png"); var img2 = Server.MapPath("~/res/images/bsf/2.png"); var img3 = Server.MapPath("~/res/images/bsf/3.png"); var img4 = Server.MapPath("~/res/images/bsf/4.png"); //模拟数据 string sql = @"select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User union all select '模拟数据' as PTP_ID, '' as TestPackageNo, '' WorkAreaId, '' WorkAreaCode, '' PipelineId, '' PipelineCode, '' SystemNumber, '' as TestHeat, '' as TestType, '' SingleNumber, '' DrawingsNum, '' as Remark, '' as PageNum from Sys_User"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@PTP_ID", this.tvControlItem.SelectedNodeID) }; var dt = SQLHelper.GetDataTableRunText(sql, parms); var tbNum = dt.Rows.Count; var pageNum = tbNum < 25 ? 1 : Math.Ceiling((float)(tbNum - 25) / 25) + 1; int rowIndex = 0; for (int num = 1; num <= pageNum; num++) { var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 14, style, 0, 17, true); ws.GetRow(rowIndex).GetCell(15).SetCellValue("Form No."); ws.GetRow(rowIndex).GetCell(16).SetCellValue("TP-06"); //设置列宽度 ws.SetColumnWidth(0, 1 * 256);//A ws.SetColumnWidth(1, 1 * 256);//B ws.SetColumnWidth(2, 4 * 256);//C ws.SetColumnWidth(3, 5 * 256);//D ws.SetColumnWidth(4, 5 * 256);//E ws.SetColumnWidth(5, 2 * 256);//F ws.SetColumnWidth(6, 5 * 256);//G ws.SetColumnWidth(7, 6 * 256);//H ws.SetColumnWidth(8, 6 * 256);//I ws.SetColumnWidth(9, 6 * 256);//J ws.SetColumnWidth(10, 6 * 256);//K ws.SetColumnWidth(11, 6 * 256);//L ws.SetColumnWidth(12, 1 * 256);//M ws.SetColumnWidth(13, 7 * 256);//N ws.SetColumnWidth(14, 5 * 256);//O ws.SetColumnWidth(15, 9 * 256);//P ws.SetColumnWidth(16, 9 * 256);//Q ws.SetColumnWidth(17, 1 * 256);//R //设置前3行高度 ws.GetRow(rowIndex + 0).HeightInPoints = 15f; ws.GetRow(rowIndex + 1).HeightInPoints = 15f; ws.GetRow(rowIndex + 2).HeightInPoints = 14f; //设置3-15行的行高度 for (int i = rowIndex + 3; i < rowIndex + 15; i++) { ws.GetRow(i).HeightInPoints = 18f; } RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex, rowIndex, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 16, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 17), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 1, rowIndex + 1, 2, 16), ws); RegionUtil.SetBorderTop(2, new CellRangeAddress(rowIndex + 2, rowIndex + 2, 2, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 1, rowIndex + 14, 0, 0), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 1, 1), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 16, 16), ws); RegionUtil.SetBorderRight(2, new CellRangeAddress(rowIndex + 2, rowIndex + 14, 17, 17), ws); RegionUtil.SetBorderLeft(2, new CellRangeAddress(rowIndex + 9, rowIndex + 14, 2, 2), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 7, rowIndex + 7, 2, 16), ws); RegionUtil.SetBorderBottom(2, new CellRangeAddress(rowIndex + 8, rowIndex + 8, 2, 16), ws); //插入图片 InsertImage(hssfworkbook, ws, rowIndex + 3, 2, rowIndex + 4, 3, img1, 1.2, 1.8); InsertImage(hssfworkbook, ws, rowIndex + 3, 3, rowIndex + 4, 4, img2, 1.9, 1.9); InsertImage(hssfworkbook, ws, rowIndex + 3, 13, rowIndex + 4, 14, img3, 1.5, 1.5); InsertImage(hssfworkbook, ws, rowIndex + 3, 15, rowIndex + 4, 16, img4, 1.5, 1.5); ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("巴斯夫(广东)一体化项目"); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 5, 13)); ws.GetRow(rowIndex + 4).GetCell(5).SetCellValue("BASF (GUANGDONG) INTEGRATED PROJECT"); ws.GetRow(rowIndex + 4).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 5, 13)); ws.GetRow(rowIndex + 5).GetCell(5).SetCellValue("试压用水(工具)检查清单"); ws.GetRow(rowIndex + 5).GetCell(5).CellStyle = setStyle; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 5, 13)); ws.GetRow(rowIndex + 6).GetCell(5).SetCellValue("WATER(MACHINE) CALIBREATION LIST"); ws.GetRow(rowIndex + 6).GetCell(5).CellStyle = setStyle; var cellStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 11, false, false, "Arial Unicode MS"); ws.GetRow(rowIndex + 9).GetCell(2).SetCellValue("Test Package No"); ws.GetRow(rowIndex + 9).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(5).SetCellValue(info?.testpackageNo); ws.GetRow(rowIndex + 9).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(9).SetCellValue("Area"); ws.GetRow(rowIndex + 9).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 9).GetCell(13).SetCellValue(info?.workAreaCode); ws.GetRow(rowIndex + 10).GetCell(2).SetCellValue("试压包号"); ws.GetRow(rowIndex + 10).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 10).GetCell(9).SetCellValue("区域"); ws.GetRow(rowIndex + 10).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(2).SetCellValue("System No"); ws.GetRow(rowIndex + 11).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(5).SetCellValue(info?.SystemNo); ws.GetRow(rowIndex + 11).GetCell(5).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(9).SetCellValue("Test Pressure"); ws.GetRow(rowIndex + 11).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 11).GetCell(13).SetCellValue(info?.TestPressure); ws.GetRow(rowIndex + 11).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(2).SetCellValue("系统号"); ws.GetRow(rowIndex + 12).GetCell(2).CellStyle = cellStyle2; ws.GetRow(rowIndex + 12).GetCell(9).SetCellValue("试验压力"); ws.GetRow(rowIndex + 12).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(9).SetCellValue("Test Type"); ws.GetRow(rowIndex + 13).GetCell(9).CellStyle = cellStyle2; ws.GetRow(rowIndex + 13).GetCell(13).SetCellValue(info?.TestType); ws.GetRow(rowIndex + 13).GetCell(13).CellStyle = cellStyle2; ws.GetRow(rowIndex + 14).GetCell(9).SetCellValue("试验方式"); ws.GetRow(rowIndex + 14).GetCell(9).CellStyle = cellStyle2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 5, 13)); #endregion #region 表格部分 style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 15, rowIndex + 40, style, 0, 17, true); var dStart = 0; var dEnd = 0; if (num == 1) { dStart = 0; dEnd = 25; } else { dStart = num == 2 ? 25 : ((num - 2) * 25) + 25; dEnd = ((num - 1) * 25) + 25; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int i = 15; i <= 40; i++) { ws.GetRow(rowIndex + i).HeightInPoints = 18f; ws.GetRow(rowIndex + i).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None); ws.GetRow(rowIndex + i).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.GetRow(rowIndex + i).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 3, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 6, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 9, 12)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 13, 14)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 15, 16)); if (i > 15) { if (pageTb.Rows.Count > j) { var dr = pageTb.Rows[j]; ws.GetRow(rowIndex + i).GetCell(3).SetCellValue(dr["PTP_ID"].ToString()); } j++; } } ws.GetRow(rowIndex + 15).HeightInPoints = 30f; //数据表头部分 ws.GetRow(rowIndex + 15).GetCell(2).SetCellValue("No\r\n序号"); ws.GetRow(rowIndex + 15).GetCell(3).SetCellValue("Report Name\r\n报告名称"); ws.GetRow(rowIndex + 15).GetCell(6).SetCellValue("Report No.\r\n报告编号"); ws.GetRow(rowIndex + 15).GetCell(9).SetCellValue("Date of Issue report\r\n报告出具日期"); ws.GetRow(rowIndex + 15).GetCell(13).SetCellValue("Expiry Date\r\n有效期"); ws.GetRow(rowIndex + 15).GetCell(15).SetCellValue("Remark\r\n备注"); #endregion #region 尾部 //此处的尾部行数需要根据 得到的动态数据量 来计算,默认写死从50行开始。 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 41, rowIndex + 46, style, 0, 17, true); for (int i = rowIndex + 41; i <= rowIndex + 46; i++) { ws.GetRow(i).HeightInPoints = 14f; ws.GetRow(i).GetCell(0).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.Medium); ws.GetRow(i).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.Medium); ws.GetRow(i).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium); } for (int i = 2; i < 17; i++) { ws.GetRow(rowIndex + 46).GetCell(i).CellStyle = SetStyle(hssfworkbook, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None, BorderStyle.None); } ws.GetRow(rowIndex + 46).GetCell(1).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None); ws.GetRow(rowIndex + 46).GetCell(16).CellStyle = SetStyle(hssfworkbook, BorderStyle.Medium, BorderStyle.Medium, BorderStyle.None, BorderStyle.None); ws.GetRow(rowIndex + 46).GetCell(17).CellStyle = SetStyle(hssfworkbook, BorderStyle.None, BorderStyle.Medium, BorderStyle.None, BorderStyle.Medium); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 43, 2, 4)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 43, 5, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 43, 7, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 43, 10, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 43, 14, 16)); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 44, rowIndex + 44, 2, 4)); ws.GetRow(rowIndex + 44).GetCell(2).SetCellValue("PREPARED"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 44, rowIndex + 44, 5, 6)); ws.GetRow(rowIndex + 44).GetCell(5).SetCellValue("REVIEW"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 44, rowIndex + 45, 7, 9)); ws.GetRow(rowIndex + 44).GetCell(7).SetCellValue("JIANLI"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 44, rowIndex + 45, 10, 13)); ws.GetRow(rowIndex + 44).GetCell(10).SetCellValue("Worley"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 44, rowIndex + 45, 14, 16)); ws.GetRow(rowIndex + 44).GetCell(14).SetCellValue("BASF"); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 45, rowIndex + 45, 2, 6)); ws.GetRow(rowIndex + 45).GetCell(2).SetCellValue("CC7"); #endregion rowIndex += 47; } ws.PrintSetup.Landscape = false; ws.ForceFormulaRecalculation = true; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //ws.PrintSetup.FitWidth = 1; //ws.PrintSetup.FitHeight = 0; //ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //ws.FitToPage = true; ////垂直水平居中 //ws.VerticallyCenter = true; //ws.HorizontallyCenter = true; ////打印边距设置 厘米/3 //ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); //ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); //ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); ////页眉页脚间距 //ws.SetMargin(MarginType.HeaderMargin, 0); //ws.SetMargin(MarginType.FooterMargin, 0); } //32-管道系统压力试验记录SHT 3503-J406-2 private void template32(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); int rowIndex = 0; var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 2, style, 0, 8, true); //设置行高度 ws.GetRow(rowIndex).Height = 20 * 20 * 6; ws.GetRow(rowIndex + 1).Height = 20 * 20 * 2; ws.GetRow(rowIndex + 2).Height = 20 * 20 * 2; //设置列宽度 ws.SetColumnWidth(0, 24 * 256); ws.SetColumnWidth(1, 9 * 256); ws.SetColumnWidth(2, 9 * 256); ws.SetColumnWidth(3, 9 * 256); ws.SetColumnWidth(4, 9 * 256); ws.SetColumnWidth(5, 9 * 256); ws.SetColumnWidth(6, 9 * 256); ws.SetColumnWidth(7, 9 * 256); ws.SetColumnWidth(8, 9 * 256); //合并单元格和填充文本 ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T 3503—J406-2"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); style1.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 1, 5)); ws.GetRow(rowIndex).GetCell(1).CellStyle = style1; ws.GetRow(rowIndex).GetCell(1).SetCellValue("管道系统压力试验记录\nPiping System Pressure Test Record"); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, true, false, "Arial Unicode MS"); style2.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 6, 8)); ws.GetRow(rowIndex).GetCell(6).CellStyle = style2; ws.GetRow(rowIndex).GetCell(6).SetCellValue($"项目名称:{info?.projectName}\n Project Name:{info?.enProjectName}\n 单位名称:{info?.workAreaName}\n Unit Name:{info?.enWorkAreaName}"); ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue("系统名称\nSystem Description"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 1, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 4, 5)); ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue("系统编号\nSystem No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 1, 6, 8)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 2, rowIndex + 2, 0, 8)); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("试验记录\nTest Record"); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 3, rowIndex + 15, style, 0, 8, true); //设置行高 ws.GetRow(rowIndex + 3).Height = 20 * 20 * 5; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 0, 1)); ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue("管道编号/单线号\nPiping No./ Line No."); ws.GetRow(rowIndex + 3).GetCell(2).SetCellValue("设计压力\nDesign Pressure Mpa"); ws.GetRow(rowIndex + 3).GetCell(3).SetCellValue("设计温度\nDesign Temperature ℃"); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue("试验环境温度\nTest Ambient Temperature ℃"); ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("试验介质\nTest Medium"); ws.GetRow(rowIndex + 3).GetCell(6).SetCellValue("试验介质温度\nTest Medium Temperature ℃"); ws.GetRow(rowIndex + 3).GetCell(7).SetCellValue("试验压力\nTest Pressure Mpa"); ws.GetRow(rowIndex + 3).GetCell(8).SetCellValue("稳压时间\nHolding Time min"); for (int i = 4; i < 16; i++) { ws.GetRow(rowIndex + i).Height = 38 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 1)); } #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 16, rowIndex + 23, style, 0, 8, true); //设置行高 ws.GetRow(rowIndex + 16).Height = 50 * 20; ws.GetRow(rowIndex + 17).Height = 50 * 20; ws.GetRow(rowIndex + 23).Height = 150 * 20; //合并单元格填充文本数据 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 16, rowIndex + 16, 0, 8)); ws.GetRow(rowIndex + 16).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(0).SetCellValue("试验结论:\nConclusion"); for (int i = 17; i < 19; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 2, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 6, 8)); } ws.GetRow(rowIndex + 17).GetCell(0).SetCellValue("建设/监理单位\nOwner/Construction Supervision Contractor"); ws.GetRow(rowIndex + 17).GetCell(2).SetCellValue("总承包单位\nGeneral Contractor"); ws.GetRow(rowIndex + 17).GetCell(6).SetCellValue("施工单位\nConstruction Company"); ws.GetRow(rowIndex + 23).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 23).GetCell(0).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n\n\n\n\n\n\n 日期Date:"); ws.GetRow(rowIndex + 23).GetCell(2).CellStyle = style2; ws.GetRow(rowIndex + 23).GetCell(2).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n\n\n\n\n\n\n 日期Date:"); ws.GetRow(rowIndex + 23).GetCell(6).CellStyle = style2; ws.GetRow(rowIndex + 23).GetCell(6).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n 质量检查员:\n Quality Inspector:\n\n 班(组)长:\n Leader:\n\n 日期Date:"); #endregion ws.PrintSetup.FitWidth = 1; ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; ws.FitToPage = true; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //打印边距设置 厘米/3 ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); //页眉页脚间距 ws.SetMargin(MarginType.HeaderMargin, 0); ws.SetMargin(MarginType.FooterMargin, 0); } //33-管道吹扫清洗记录SHT 3503-J408 UG-FW-001 private void template33(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); int rowIndex = 0; var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); string sql = @"select a.PTP_ID, a.TestPackageNo, a.OperationMedium, a.PurgingMedium, a.CleaningMedium, '' as SubSystemName, '' as SubSystemNo, b.PipelineId, (select PipelineCode from Pipeline_Pipeline where PipelineId=b.PipelineId) as PipelineCode, (select d.MaterialCode from Pipeline_Pipeline as c inner join Base_Material as d on c.MainMaterialId=d.MaterialId where PipelineId=b.PipelineId ) as MaterialCode, e.ProjectName, e.EnProjectName, (select UnitName from Base_Unit where UnitId=a.UnitId) as UnitName, (select UnitCode from Base_Unit where UnitId=a.UnitId) as UnitCode from PTP_TestPackage as a inner join PTP_PipelineList as b on a.PTP_ID=b.PTP_ID left join Base_Project as e on a.ProjectId=e.ProjectId where a.PTP_ID=@PTP_ID and a.projectId=@projectId "; SqlParameter[] parmas = { new SqlParameter("@projectId",this.CurrUser.LoginProjectId), new SqlParameter("@PTP_ID",tvControlItem.SelectedNodeID) }; DataTable dt = SQLHelper.GetDataTableRunText(sql, parmas); var tbNum = dt.Rows.Count; var pageNum = tbNum < 16 ? 1 : Math.Ceiling((float)(tbNum - 16) / 16) + 1; for (int i = 1; i <= pageNum; i++) { #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 9, style, 0, 6, true); //设置头部行高 ws.GetRow(rowIndex).Height = 13 * 20; ws.GetRow(rowIndex + 1).Height = 22 * 20; ws.GetRow(rowIndex + 2).Height = 56 * 20; ws.GetRow(rowIndex + 3).Height = 12 * 20; ws.GetRow(rowIndex + 4).Height = 12 * 20; ws.GetRow(rowIndex + 5).Height = 27 * 20; ws.GetRow(rowIndex + 6).Height = 26 * 20; ws.GetRow(rowIndex + 7).Height = 36 * 20; ws.GetRow(rowIndex + 8).Height = 26 * 20; ws.GetRow(rowIndex + 9).Height = 26 * 20; //设置列宽 ws.SetColumnWidth(0, 19 * 256); ws.SetColumnWidth(1, 9 * 256); ws.SetColumnWidth(2, 16 * 256); ws.SetColumnWidth(3, 15 * 256); ws.SetColumnWidth(4, 11 * 256); ws.SetColumnWidth(5, 5 * 256); ws.SetColumnWidth(6, 9 * 256); //合并单元格和填充单元格值 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 0, rowIndex + 2, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 0, rowIndex + 2, 2, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 0, rowIndex + 2, 4, 6)); ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T 3503-J408"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 11, true, true, "Arial"); style1.WrapText = true; ws.GetRow(rowIndex).GetCell(2).CellStyle = style1; ws.GetRow(rowIndex).GetCell(2).SetCellValue("管道吹扫/清洗检验记录(I)\nPipline Flushing and Blowing Inspection Record(I)"); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, true, false, "Arial"); style2.WrapText = true; ws.GetRow(rowIndex).GetCell(4).CellStyle = style2; ws.GetRow(rowIndex).GetCell(4).SetCellValue($"项目名称:{info?.projectName}\nProject Name:{info?.enProjectName}\n单位名称:{info?.workAreaName}\n Unit Name:{info?.enWorkAreaName}"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 2, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 4, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 2, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 4, 6)); ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue("子系统名称 Subsystem Name"); ws.GetRow(rowIndex + 3).GetCell(2).SetCellValue("子系统编号 Subsystem No."); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue("试压包号 Test Package No."); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue(""); ws.GetRow(rowIndex + 4).GetCell(2).SetCellValue(""); ws.GetRow(rowIndex + 4).GetCell(4).SetCellValue(info?.testpackageNo); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 6, rowIndex + 6, 0, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 0, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 8, rowIndex + 8, 0, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 9, rowIndex + 9, 0, 5)); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检查项目及要求\nInspection items and requirements"); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("检查结果\nResult"); var style3 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 9, true, false, "Arial"); ws.GetRow(rowIndex + 6).GetCell(0).CellStyle = style3; ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("管线压力试验检查合格。Pipeline pressure test is acceptable."); ws.GetRow(rowIndex + 7).GetCell(0).CellStyle = style3; ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("与吹扫及清洗无关的安全附件和仪表元件已经拆除或按要求隔离。Safety attachments and instruments not involved in purging and cleaning have been dismantled or isolated as per requirement."); ws.GetRow(rowIndex + 8).GetCell(0).CellStyle = style3; ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("管线系统内阀门已按要求开启。All piping system valves have been opened."); ws.GetRow(rowIndex + 9).GetCell(0).CellStyle = style3; ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("不锈钢管线系统清洗用水应符合规范要求。Test use water of stainless steel pipeline shall be in compliance with specification."); #endregion #region 表格部分 var style4 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 10, rowIndex + 26, style4, 0, 6, true); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 10, rowIndex + 10, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 10, rowIndex + 10, 5, 6)); ws.GetRow(rowIndex + 10).GetCell(0).SetCellValue("管道编号\nPipeline No."); ws.GetRow(rowIndex + 10).GetCell(2).SetCellValue("管线材质\nMaterial"); ws.GetRow(rowIndex + 10).GetCell(3).SetCellValue("操作介质\nOperation Medium"); ws.GetRow(rowIndex + 10).GetCell(4).SetCellValue("吹扫介质\nBlowing Meadium"); ws.GetRow(rowIndex + 10).GetCell(5).SetCellValue("清洗介质\nFlushing Medium"); var dataTit = rowIndex + 11; var dStart = 0; var dEnd = 0; if (i == 1) { dStart = 0; dEnd = 15; } else { dStart = i == 2 ? 15 : ((i - 2) * 15) + 15; dEnd = ((i - 1) * 15) + 15; } var pageTb = GetPageToTable(dt, dStart, dEnd); int j = 0; for (int k = rowIndex + 11; k <= rowIndex + 26; k++) { ws.GetRow(k).Height = 20 * 20; ws.AddMergedRegion(new CellRangeAddress(k, k, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(k, k, 5, 6)); } foreach (DataRow dr in pageTb.Rows) { int dataIndex = dataTit + j; ws.GetRow(dataIndex).GetCell(0).SetCellValue(dr["PipelineCode"].ToString()); ws.GetRow(dataIndex).GetCell(2).SetCellValue(dr["MaterialCode"].ToString()); ws.GetRow(dataIndex).GetCell(3).SetCellValue(dr["OperationMedium"].ToString()); ws.GetRow(dataIndex).GetCell(4).SetCellValue(dr["PurgingMedium"].ToString()); ws.GetRow(dataIndex).GetCell(5).SetCellValue(dr["CleaningMedium"].ToString()); j++; } #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 27, rowIndex + 34, style, 0, 6, true); //合并单元格合和填充值 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 0, 6)); ws.GetRow(rowIndex + 27).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 27).GetCell(0).SetCellValue("检验方法及结果:\nInspection method and conclusion:"); ws.GetRow(rowIndex + 27).Height = 32 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 29, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 29, 2, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 28, rowIndex + 29, 4, 6)); ws.GetRow(rowIndex + 29).GetCell(0).SetCellValue("建设/监理单位\nOwner/Construction Supervision Contractor"); ws.GetRow(rowIndex + 29).GetCell(2).SetCellValue("总承包单位\nGeneral Contractor"); ws.GetRow(rowIndex + 29).GetCell(4).SetCellValue("施工单位\nConstruction Company"); ws.GetRow(rowIndex + 28).Height = 13 * 20; ws.GetRow(rowIndex + 29).Height = 13 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 30, rowIndex + 34, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 30, rowIndex + 34, 2, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 30, rowIndex + 34, 4, 6)); ws.GetRow(rowIndex + 30).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 30).GetCell(0).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n\n\n\n\n\n\n 日期Date:\n\n"); ws.GetRow(rowIndex + 30).GetCell(2).CellStyle = style2; ws.GetRow(rowIndex + 30).GetCell(2).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n\n\n\n\n\n\n 日期Date:\n\n"); ws.GetRow(rowIndex + 30).GetCell(4).CellStyle = style2; ws.GetRow(rowIndex + 30).GetCell(4).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n 质量检查员:\n Quality Inspector:\n\n 班(组)长:\n Leader:\n\n 日期Date:\n\n"); ws.GetRow(rowIndex + 30).Height = 40 * 20; ws.GetRow(rowIndex + 31).Height = 24 * 20; ws.GetRow(rowIndex + 32).Height = 16 * 20; ws.GetRow(rowIndex + 33).Height = 26 * 20; ws.GetRow(rowIndex + 34).Height = 33 * 20; #endregion rowIndex = rowIndex + 12; } ws.PrintSetup.FitWidth = 1; ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; ws.FitToPage = true; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //打印边距设置 厘米/3 ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); //页眉页脚间距 ws.SetMargin(MarginType.HeaderMargin, 0); ws.SetMargin(MarginType.FooterMargin, 0); } //34-管道系统压力试验条件确认记录SHT 3503-J406-1 private void template34(XSSFWorkbook hssfworkbook, XSSFSheet ws) { int rowIndex = 0; var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 5, style, 0, 8, true); //循环设置表头高度 for (int i = 0; i < 6; i++) { ws.GetRow(rowIndex + i).Height = 20 * 20; } //设置每列的宽度 ws.SetColumnWidth(0, 19 * 256); ws.SetColumnWidth(1, 9 * 256); ws.SetColumnWidth(2, 9 * 256); ws.SetColumnWidth(3, 9 * 256); ws.SetColumnWidth(4, 9 * 256); ws.SetColumnWidth(5, 9 * 256); ws.SetColumnWidth(6, 9 * 256); ws.SetColumnWidth(7, 9 * 256); ws.SetColumnWidth(8, 9 * 256); //合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + 3, 0, 0)); ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T 3503—J406-1"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 14, true, true, "Arial Unicode MS"); style1.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + 3, 1, 5)); ws.GetRow(rowIndex).GetCell(1).CellStyle = style1; ws.GetRow(rowIndex).GetCell(1).SetCellValue("管道系统压力试验条件确认记录\nPiping System Pressure Test Condition Confirmation Record"); var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, true, false, "Arial Unicode MS"); style2.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex + 3, 6, 8)); ws.GetRow(rowIndex).GetCell(6).CellStyle = style2; ws.GetRow(rowIndex).GetCell(6).SetCellValue($"工程名称:{info?.projectName}\n Project Name:{info?.enProjectName}\n 单位工程名称:{info?.workAreaName}\n Unit Name:{info?.enWorkAreaName}"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 0, 0)); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("系统名称\nSystem Description"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 1, 3)); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue(""); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 4, 5)); ws.GetRow(rowIndex + 4).GetCell(4).SetCellValue("系统编号\nSystem No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 5, 6, 8)); ws.GetRow(rowIndex + 4).GetCell(6).SetCellValue(info?.SystemNo); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 6, rowIndex + 19, style, 0, 8, true); //循环设置高度和合并单元格 for (int i = 6; i < 20; i++) { if (i == 13) ws.GetRow(rowIndex + i).Height = 43 * 20; else ws.GetRow(rowIndex + i).Height = 42 * 20; if (i == 6) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 0, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 8, 8)); continue; } if (i == 7) continue; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 7)); } ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("检查项目与要求\nInspection Item and Requirement"); ws.GetRow(rowIndex + 6).GetCell(8).SetCellValue("检查结果\nInspection Result"); ws.GetRow(rowIndex + 8).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("管道安装符合最新设计文件和规范要求。Pipe installation must be in compliance with latest design documents and specification."); ws.GetRow(rowIndex + 9).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("管道组成件复验合格。Pipline components have been re-inspected and are accepatble."); ws.GetRow(rowIndex + 10).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 10).GetCell(0).SetCellValue("焊接工作记录齐全。Welders complete operation records are available."); ws.GetRow(rowIndex + 11).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 11).GetCell(0).SetCellValue("无损检测符合设计文件和规范要求。NDE results must be in compliance with design document and specification."); ws.GetRow(rowIndex + 12).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 12).GetCell(0).SetCellValue("热处理结果符合设计文件和规范要求。PWHT results must be in compliance with design document and specification."); ws.GetRow(rowIndex + 13).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 13).GetCell(0).SetCellValue("支、吊架安装正确。Support and hangers must be correctly installed."); ws.GetRow(rowIndex + 14).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 14).GetCell(0).SetCellValue("合金钢管道材质标记清楚。Identifications on material of alloy steel pipline are clear."); ws.GetRow(rowIndex + 15).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 15).GetCell(0).SetCellValue("不参与管道系统试验的 安全附件、仪表已按规定拆除或隔离,参与试压的系统内的阀门已开启。Safety attachments and instruments not involved in test have been dismatled or isolated as requirement, all system valves involved in test have been opened. "); ws.GetRow(rowIndex + 16).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 16).GetCell(0).SetCellValue("临时加固措施、盲板位置与标识符和施工方案要求。Temporary reinforcement measures, blind position and markings must be incompliance with Specification."); ws.GetRow(rowIndex + 17).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 17).GetCell(0).SetCellValue("焊接接头及需要检验的部位未被覆盖。Welds and other positions to be tested have not yet been painted and heat-insulated."); ws.GetRow(rowIndex + 23).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 23).GetCell(0).SetCellValue("试压用压力表量程、精度等级、检定状态符合规范要求。Scale, accuracy and calibration state of test use pressure gauge must be incompliance with specification. "); ws.GetRow(rowIndex + 19).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 19).GetCell(0).SetCellValue("不锈钢管道试验用水符合规范要求。Test use water of stainless steel pipline must be incompliance with specification."); #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 20, rowIndex + 22, style, 0, 8, true); ws.GetRow(rowIndex + 20).Height = 20 * 20 * 2; ws.GetRow(rowIndex + 21).Height = 20 * 20 * 3; ws.GetRow(rowIndex + 22).Height = 20 * 20 * 7; //循环合并单元格 ws.AddMergedRegion(new CellRangeAddress(rowIndex + 20, rowIndex + 20, 0, 8)); for (int i = 21; i < 23; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 2, 5)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 6, 8)); } //填充文本 ws.GetRow(rowIndex + 20).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 20).GetCell(0).SetCellValue("备注:\nRemark"); ws.GetRow(rowIndex + 21).GetCell(0).SetCellValue("建设/监理单位\nOwner/Construction Supervision Contractor"); ws.GetRow(rowIndex + 21).GetCell(2).SetCellValue("总承包单位\nGeneral Contractor"); ws.GetRow(rowIndex + 21).GetCell(6).SetCellValue("施工单位\nConstruction Company"); ws.GetRow(rowIndex + 22).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 22).GetCell(0).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n\n\n\n\n\n\n 日期Date:"); ws.GetRow(rowIndex + 22).GetCell(2).CellStyle = style2; ws.GetRow(rowIndex + 22).GetCell(2).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n\n\n\n\n\n\n 日期Date:"); ws.GetRow(rowIndex + 22).GetCell(6).CellStyle = style2; ws.GetRow(rowIndex + 22).GetCell(6).SetCellValue(" 专业工程师\n Discipline Engineer: \n\n 质量检查员:\n Quality Inspector:\n\n 班(组)长:\n Leader:\n\n 日期Date:"); #endregion ws.PrintSetup.FitWidth = 1; ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; ws.FitToPage = true; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //打印边距设置 厘米/3 ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); //页眉页脚间距 ws.SetMargin(MarginType.HeaderMargin, 0); ws.SetMargin(MarginType.FooterMargin, 0); } //35-TP-13-管道复位记录UG-FW-001 之 sheet1 private void template35_sheet1(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); int rowIndex = 0; var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 7, style, 0, 6, true); //设置单元格高宽 ws.GetRow(rowIndex).Height = 100 * 20; ws.GetRow(rowIndex + 1).Height = 20 * 20; ws.GetRow(rowIndex + 2).Height = 20 * 20; ws.GetRow(rowIndex + 3).Height = 40 * 20; ws.GetRow(rowIndex + 4).Height = 20 * 20; ws.GetRow(rowIndex + 5).Height = 40 * 20; ws.GetRow(rowIndex + 6).Height = 20 * 20; ws.GetRow(rowIndex + 7).Height = 40 * 20; ws.SetColumnWidth(0, 20 * 256); ws.SetColumnWidth(1, 8 * 256); ws.SetColumnWidth(2, 15 * 256); ws.SetColumnWidth(3, 15 * 256); ws.SetColumnWidth(4, 10 * 256); ws.SetColumnWidth(5, 8 * 256); ws.SetColumnWidth(6, 10 * 256); //合并填充单元格 for (int i = 0; i < 3; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 2, 3)); if (i == 2) continue; if (i == 0) ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 4, 6)); else ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 4, 6)); } ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T3503-J408"); ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue("Subsystem Name子系统名称"); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("Fire Water"); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 12, true, true, "Arial Unicode MS"); setStyle.WrapText = true; ws.GetRow(rowIndex).GetCell(2).CellStyle = setStyle; ws.GetRow(rowIndex).GetCell(2).SetCellValue("Pipline Flushing and Blowing \nInspection Record(I)\n管道吹扫/清洗检验记录(I)"); ws.GetRow(rowIndex + 1).GetCell(2).SetCellValue("Subsystem No.子系统编号"); ws.GetRow(rowIndex + 2).GetCell(2).SetCellValue("UG-FW"); var setStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); setStyle2.WrapText = true; ws.GetRow(rowIndex).GetCell(4).CellStyle = setStyle2; ws.GetRow(rowIndex).GetCell(4).SetCellValue($"Project Name:{info?.enProjectName}\n 项目名称:{info?.projectName}\n Unit Name:{info?.enWorkAreaName}\n 单位名称:{info.workAreaName}"); ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue(" Test Package No.试压包号"); for (int i = 3; i < 8; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 5)); } ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue("Inspection items and requirements\n检查项目及要求"); ws.GetRow(rowIndex + 3).GetCell(6).SetCellValue("Result\n检查结果"); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("Pipeline pressure test is acceptable.管线压力试验检查合格"); ws.GetRow(rowIndex + 4).GetCell(0).CellStyle = setStyle2; ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("Safety attachments and instruments not involved in purging and cleaning have been dismantled or isolated as per requirement.与吹扫及清洗无关的安全附件和仪表元件已经拆除或按要求隔离"); ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = setStyle2; ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("All piping system valves have been opened.管线系统内阀门已按要求开启"); ws.GetRow(rowIndex + 6).GetCell(0).CellStyle = setStyle2; ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("Test use water of stainless steel pipeline shall be in compliance with specification.不锈钢管线系统清洗用水应符合规范要求"); ws.GetRow(rowIndex + 7).GetCell(0).CellStyle = setStyle2; #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 8, rowIndex + 24, style, 0, 6, true); //设置单元格高度和合并单元格 for (int i = 8; i < 25; i++) { if (i == 8) ws.GetRow(rowIndex + i).Height = 40 * 20; else ws.GetRow(rowIndex + i).Height = 20 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 5, 6)); } ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("Pipeline No.\n管道编号"); ws.GetRow(rowIndex + 8).GetCell(2).SetCellValue("Material\n管线材质"); ws.GetRow(rowIndex + 8).GetCell(3).SetCellValue("Operation Medium\n操作介质"); ws.GetRow(rowIndex + 8).GetCell(4).SetCellValue("Blowing Meadium\n吹扫介质"); ws.GetRow(rowIndex + 8).GetCell(5).SetCellValue("Flushing Medium\n清洗介质"); #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 25, rowIndex + 27, style, 0, 6, true); ws.GetRow(rowIndex + 25).Height = 30 * 20; ws.GetRow(rowIndex + 26).Height = 40 * 20; ws.GetRow(rowIndex + 27).Height = 125 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 25, rowIndex + 25, 0, 6)); ws.GetRow(rowIndex + 25).GetCell(0).CellStyle = setStyle2; ws.GetRow(rowIndex + 25).GetCell(0).SetCellValue("Inspection method and conclusion:\n检验方法及结果:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 26, rowIndex + 26, 0, 1)); ws.GetRow(rowIndex + 26).GetCell(0).SetCellValue("建设/监理单位\nOwner/Construction Supervision Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 26, rowIndex + 26, 2, 3)); ws.GetRow(rowIndex + 26).GetCell(2).SetCellValue("总承包单位\nGeneral Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 26, rowIndex + 26, 4, 6)); ws.GetRow(rowIndex + 26).GetCell(4).SetCellValue("施工单位\nConstruction Company"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 0, 1)); ws.GetRow(rowIndex + 27).GetCell(0).CellStyle = setStyle2; ws.GetRow(rowIndex + 27).GetCell(0).SetCellValue(" Discipline Engineer:\n 专业工程师\n\n\n\n\n Date\n 日期:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 2, 3)); ws.GetRow(rowIndex + 27).GetCell(2).CellStyle = setStyle2; ws.GetRow(rowIndex + 27).GetCell(2).SetCellValue(" Discipline Engineer:\n 专业工程师\n\n\n\n\n Date\n 日期:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 27, rowIndex + 27, 4, 6)); ws.GetRow(rowIndex + 27).GetCell(4).CellStyle = setStyle2; ws.GetRow(rowIndex + 27).GetCell(4).SetCellValue(" Discipline Engineer:\n 专业工程师:\n Quality Inspector:\n 质量检查员:\n Group Leader:\n 班(组)长∶\n Date\n 日期:"); #endregion ws.PrintSetup.FitWidth = 1; ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; ws.FitToPage = true; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //打印边距设置 厘米/3 ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); //页眉页脚间距 ws.SetMargin(MarginType.HeaderMargin, 0); ws.SetMargin(MarginType.FooterMargin, 0); } //35-TP-13-管道复位记录UG-FW-001 之 sheet2 private void template35_sheet2(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); int rowIndex = 0; var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 1, style1, 0, 8, true); ws.GetRow(rowIndex).Height = 15 * 20; ws.SetColumnWidth(0, 18 * 256); ws.SetColumnWidth(1, 4 * 256); ws.SetColumnWidth(2, 8 * 256); ws.SetColumnWidth(3, 8 * 256); ws.SetColumnWidth(4, 8 * 256); ws.SetColumnWidth(5, 8 * 256); ws.SetColumnWidth(6, 8 * 256); ws.SetColumnWidth(7, 9 * 256); ws.SetColumnWidth(8, 9 * 256); ws.GetRow(rowIndex).GetCell(7).SetCellValue("Form No."); ws.GetRow(rowIndex).GetCell(8).SetCellValue("TP-13"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 1, rowIndex + 4, style, 0, 8, true); ws.GetRow(rowIndex + 1).Height = 30 * 20; ws.GetRow(rowIndex + 2).Height = 60 * 20; ws.GetRow(rowIndex + 3).Height = 30 * 20; ws.GetRow(rowIndex + 4).Height = 20 * 20; var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 12, true, true, "Arial Unicode MS"); setStyle.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 2, 0, 0)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 2, 1, 5)); ws.GetRow(rowIndex + 1).GetCell(1).CellStyle = setStyle; ws.GetRow(rowIndex + 1).GetCell(1).SetCellValue("复位检查\nRe-instatement Certificate"); var setStyle2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); setStyle2.WrapText = true; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 2, 6, 8)); ws.GetRow(rowIndex + 1).GetCell(6).CellStyle = setStyle2; ws.GetRow(rowIndex + 1).GetCell(6).SetCellValue($"项目名称:{info?.projectName}\nProject Name:{info?.enProjectName}\n单位名称:{info?.workAreaName}\nUnit Name:{info?.enWorkAreaName}"); //头部列表部分 ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue("子系统名称 Subsystem Name"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 1, 5)); ws.GetRow(rowIndex + 3).GetCell(1).SetCellValue("子系统编号 Subsystem No."); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 3, 6, 8)); ws.GetRow(rowIndex + 3).GetCell(6).SetCellValue("试压包号 Test Package No."); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue(""); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 1, 5)); ws.GetRow(rowIndex + 4).GetCell(1).SetCellValue(""); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 4, rowIndex + 4, 6, 8)); ws.GetRow(rowIndex + 4).GetCell(6).SetCellValue(info.testpackageNo); #endregion #region 表格部分 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 5, rowIndex + 19, style, 0, 8, true); for (int i = 5; i < 20; i++) { ws.GetRow(rowIndex + i).Height = 40 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 6)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 7, 8)); } ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("检查内容\nInspection Items and requirements"); ws.GetRow(rowIndex + 5).GetCell(7).SetCellValue("Results\n检查结果"); ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("吹扫试压完成后,对管线的干燥情况进行检查。Flushing and hydrostatic testing have been satisfactorily completed and recorded ,Check drying of lines complete."); ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("按照P&ID恢复因清洗和试压拆除如调节阀等事项。All items (control valves ,etc.)removed for cleaning and testing have been reinstated as per P&ID."); ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("试压后机械之间连接的正式螺栓垫片,根据要求记录螺栓的扭矩值。Correct bolts,gasket used to reinstate all mechanical joints disturbed post test,torque record available as required. "); ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("所有临时放空及排放已拆除并按图恢复。All temporary vents and drains have been removed,and reinstated in accrodance with drawings."); ws.GetRow(rowIndex + 10).GetCell(0).SetCellValue("根据P&ID指示按照正确方向安装管道的原件。Directional sensitive piping elements are all correctly installed as indicated on P&ID."); ws.GetRow(rowIndex + 11).GetCell(0).SetCellValue("根据P&ID和图纸正确安装永久插板和盲板。Permanent spectacle and process blinds are in the correct position as indicated on P&ID and drawings. "); ws.GetRow(rowIndex + 12).GetCell(0).SetCellValue("正确安装指定阀门的延长手柄和链条。Extended spindles and chain wheels for specified valves have been correctly installed."); ws.GetRow(rowIndex + 13).GetCell(0).SetCellValue("All locking devices and interlocks for specified valves have been correctly installed.正确安装指定阀门的锁定装置和联动装置。"); ws.GetRow(rowIndex + 14).GetCell(0).SetCellValue("按照PID&图纸要求恢复临时拆除的管道、仪表和机械设备。All temporary removed piping,instrumentation,mechanical equipment are re-intated in accordance with the P&ID's and drawings."); ws.GetRow(rowIndex + 15).GetCell(0).SetCellValue("所有的阀门涂油脂和试压已经完成。All valves have been greased and stroked."); ws.GetRow(rowIndex + 16).GetCell(0).SetCellValue("螺纹连接根据规范要求进行。Compound on screwed connections in accordance with specification."); ws.GetRow(rowIndex + 17).GetCell(0).SetCellValue("安装所有的制动装置和联动装置。All locking device/interlocks installed."); ws.GetRow(rowIndex + 23).GetCell(0).SetCellValue("检查和确定弹簧支架、滑动支架装置。Spring Support,Gags removed&support settings confirmed/Checked."); ws.GetRow(rowIndex + 19).GetCell(0).SetCellValue("如果需要,释放给化学清洗、油洗。System released for chemical cleaning /hot oil flushing ,if required."); #endregion #region 尾部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 20, rowIndex + 26, style, 0, 8, true); ws.GetRow(rowIndex + 20).Height = 40 * 20; ws.GetRow(rowIndex + 21).Height = 15 * 20; ws.GetRow(rowIndex + 22).Height = 15 * 20; ws.GetRow(rowIndex + 23).Height = 15 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 20, rowIndex + 20, 0, 8)); ws.GetRow(rowIndex + 20).GetCell(0).CellStyle = setStyle2; ws.GetRow(rowIndex + 20).GetCell(0).SetCellValue(" Conclusion:\n 检查结果:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 23, 0, 1)); ws.GetRow(rowIndex + 21).GetCell(0).SetCellValue("建设/监理单位\nOwner/Construction Supervision\nContractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 23, 2, 5)); ws.GetRow(rowIndex + 21).GetCell(2).SetCellValue("总承包单位\nGeneral Contractor"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 21, rowIndex + 23, 6, 8)); ws.GetRow(rowIndex + 21).GetCell(6).SetCellValue("施工单位\nConstruction Company"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 24, rowIndex + 26, 0, 1)); ws.GetRow(rowIndex + 24).GetCell(0).CellStyle = setStyle2; ws.GetRow(rowIndex + 24).GetCell(0).SetCellValue(" 专业工程师\n Discipline Engineer:\n\n\n\n\n\n 日期Date: "); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 24, rowIndex + 26, 2, 5)); ws.GetRow(rowIndex + 24).GetCell(2).CellStyle = setStyle2; ws.GetRow(rowIndex + 24).GetCell(2).SetCellValue(" 专业工程师\n Discipline Engineer:\n\n\n\n\n\n 日期Date: "); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 24, rowIndex + 26, 6, 8)); ws.GetRow(rowIndex + 24).GetCell(6).CellStyle = setStyle2; ws.GetRow(rowIndex + 24).GetCell(6).SetCellValue(" 专业工程师\n Discipline Engineer:\n 质量检查员:\n Quality Inspector:\n 班(组)长:\n Leader:\n\n 日期Date: "); #endregion ws.PrintSetup.FitWidth = 1; ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; ws.FitToPage = true; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //打印边距设置 厘米/3 ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); //页眉页脚间距 ws.SetMargin(MarginType.HeaderMargin, 0); ws.SetMargin(MarginType.FooterMargin, 0); } //36-TP-14-法兰螺栓扭矩记录表 private void template36(XSSFWorkbook hssfworkbook, XSSFSheet ws) { var info = GetTestPackageInfo(this.tvControlItem.SelectedNodeID); //插入图片部分 var img1 = Server.MapPath("~/res/images/bsf/1.png"); var img2 = Server.MapPath("~/res/images/bsf/2.png"); var img3 = Server.MapPath("~/res/images/bsf/3.png"); var img4 = Server.MapPath("~/res/images/bsf/4.png"); int rowIndex = 0; var style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); #region 头部 ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, rowIndex + 8, style, 0, 26, true); for (int i = 0; i < 27; i++) { ws.SetColumnWidth(i, 4 * 256); } ws.GetRow(rowIndex).Height = 15 * 20; ws.GetRow(rowIndex + 1).Height = 20 * 20; ws.GetRow(rowIndex + 2).Height = 20 * 20; ws.GetRow(rowIndex + 3).Height = 20 * 20; ws.GetRow(rowIndex + 4).Height = 20 * 20; ws.GetRow(rowIndex + 5).Height = 10 * 20; ws.GetRow(rowIndex + 6).Height = 10 * 20; ws.GetRow(rowIndex + 8).Height = 15 * 20; RegionUtil.SetBorderBottom(1, new CellRangeAddress(0, 0, 0, 26), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(6, 6, 0, 26), ws); RegionUtil.SetBorderTop(1, new CellRangeAddress(6, 6, 0, 26), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(7, 7, 0, 26), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(7, 7, 6, 6), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(7, 7, 13, 13), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(7, 7, 19, 19), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(0, 20, 26, 26), ws); RegionUtil.SetBorderBottom(1, new CellRangeAddress(8, 8, 0, 26), ws); InsertImage(hssfworkbook, ws, 1, 1, 2, 2, img1, 2, 1.8); InsertImage(hssfworkbook, ws, 1, 3, 2, 4, img2, 2, 1.8, 0, 3); InsertImage(hssfworkbook, ws, 1, 20, 2, 23, img3, 1.2, 2, 0, 10); InsertImage(hssfworkbook, ws, 1, 24, 2, 26, img4, 1.2, 2, 0, 10); ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 23, 24)); ws.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 25, 26)); ws.GetRow(rowIndex).GetCell(23).SetCellValue("Form No."); ws.GetRow(rowIndex).GetCell(25).SetCellValue("TP-06"); var setStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 12, true, true, "Arial Unicode MS"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 2, 5, 22)); ws.GetRow(rowIndex + 1).GetCell(5).CellStyle = setStyle; ws.GetRow(rowIndex + 1).GetCell(5).SetCellValue("巴斯夫(广东)一体化项目\nBASF (GUANGDONG) INTEGRATED PROJECT"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 1, rowIndex + 5, 23, 26)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 3, rowIndex + 4, 5, 22)); ws.GetRow(rowIndex + 3).GetCell(5).CellStyle = setStyle; ws.GetRow(rowIndex + 3).GetCell(5).SetCellValue("螺栓扭矩报告\nBOLT TORQUE / TIGHTENING REPORT"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 0, 6)); ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("试压包号\nTEST PACKAGE NO.:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 7, 13)); ws.GetRow(rowIndex + 7).GetCell(7).SetCellValue(info?.testpackageNo); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 14, 19)); ws.GetRow(rowIndex + 7).GetCell(14).SetCellValue("系统号\nSYSTEM NO.:"); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 7, rowIndex + 7, 20, 26)); ws.GetRow(rowIndex + 7).GetCell(20).SetCellValue(info?.SystemNo); #endregion #region 表格部分 var style1 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, NPOI.SS.UserModel.HorizontalAlignment.Center, 10, true, false, "Arial Unicode MS"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 9, rowIndex + 33, style1, 0, 26, true); for (int i = 9; i < 34; i++) { if (i == 10) continue; //列表头部两行合并 if (i == 9) { ws.GetRow(rowIndex + i).Height = 25 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 2, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 8, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 11, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 14, 16)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 17, 19)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 20, 22)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 23, 24)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i + 1, 25, 26)); } else { ws.GetRow(rowIndex + i).Height = 18 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 1)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 2, 7)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 8, 10)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 11, 13)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 14, 16)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 17, 19)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 20, 22)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 23, 24)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 25, 26)); } } ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("序号\nNo."); ws.GetRow(rowIndex + 9).GetCell(2).SetCellValue("单线图号\nIsometric Line No."); ws.GetRow(rowIndex + 9).GetCell(8).SetCellValue("法兰编号\nFlange No."); ws.GetRow(rowIndex + 9).GetCell(11).SetCellValue("螺栓尺寸\nBolt Size"); ws.GetRow(rowIndex + 9).GetCell(14).SetCellValue("螺栓等级\nBolt Class"); ws.GetRow(rowIndex + 9).GetCell(17).SetCellValue("要求扭矩值\nRequired Torque"); ws.GetRow(rowIndex + 9).GetCell(20).SetCellValue("实际扭矩值\nActual Torque"); ws.GetRow(rowIndex + 9).GetCell(23).SetCellValue("接受\nACC"); ws.GetRow(rowIndex + 9).GetCell(25).SetCellValue("拒绝\nReject"); #endregion #region 尾部 //文本左对齐置顶方式加换行 var style2 = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, NPOI.SS.UserModel.HorizontalAlignment.Left, 10, false, false, "Arial Unicode MS"); style2.WrapText = true; ws = ExcelCreateRow(ws, hssfworkbook, rowIndex + 34, rowIndex + 45, style1, 0, 26, true); ws.GetRow(rowIndex + 34).Height = 40 * 20; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 34, rowIndex + 34, 0, 10)); ws.GetRow(rowIndex + 34).GetCell(0).SetCellValue("总计检查螺栓\nTotal Bolts Checked"); ws.GetRow(rowIndex + 34).GetCell(0).CellStyle = style2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 34, rowIndex + 34, 11, 26)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 35, rowIndex + 35, 0, 26)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + 36, rowIndex + 39, 0, 26)); ws.GetRow(rowIndex + 36).GetCell(0).SetCellValue("备注/意见:\nRemarks/Comments"); ws.GetRow(rowIndex + 36).GetCell(0).CellStyle = style2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 40, rowIndex + 40, 0, 26)); ws.GetRow(rowIndex + 40).GetCell(0).SetCellValue("说明:按照BASF要求对螺栓进行扭矩工作。\nNotes: According to the BASF standard value to tighten the bolts."); ws.GetRow(rowIndex + 40).GetCell(0).CellStyle = style2; ws.AddMergedRegion(new CellRangeAddress(rowIndex + 41, rowIndex + 41, 0, 26)); ws.GetRow(rowIndex + 41).GetCell(0).SetCellValue("批准:\nAccepted by:"); ws.GetRow(rowIndex + 41).GetCell(0).CellStyle = style2; //循环合并单元格 for (int i = 42; i < 46; i++) { ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 0, 3)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 4, 9)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 10, 15)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 16, 21)); ws.AddMergedRegion(new CellRangeAddress(rowIndex + i, rowIndex + i, 22, 26)); } ws.GetRow(rowIndex + 42).GetCell(4).SetCellValue("CC7"); ws.GetRow(rowIndex + 42).GetCell(10).SetCellValue("JIANLI"); ws.GetRow(rowIndex + 42).GetCell(16).SetCellValue("Worley"); ws.GetRow(rowIndex + 42).GetCell(22).SetCellValue("BASF"); ws.GetRow(rowIndex + 43).GetCell(0).SetCellValue("姓名Name"); ws.GetRow(rowIndex + 43).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 44).GetCell(0).SetCellValue("签名Signature"); ws.GetRow(rowIndex + 44).GetCell(0).CellStyle = style2; ws.GetRow(rowIndex + 45).GetCell(0).SetCellValue("日期Date"); ws.GetRow(rowIndex + 45).GetCell(0).CellStyle = style2; //划线 RegionUtil.SetBorderLeft(1, new CellRangeAddress(rowIndex, rowIndex + 45, 0, 0), ws); RegionUtil.SetBorderRight(1, new CellRangeAddress(rowIndex, rowIndex + 45, 26, 26), ws); #endregion ws.PrintSetup.FitWidth = 1; ws.PrintSetup.FitHeight = 0; ws.PrintSetup.PaperSize = (int)PaperSize.A4_Small; //垂直水平居中 ws.VerticallyCenter = true; ws.HorizontallyCenter = true; //打印边距设置 厘米/3 ws.SetMargin(MarginType.RightMargin, (double)2.4 / 3); ws.SetMargin(MarginType.LeftMargin, (double)2.9 / 3); ws.SetMargin(MarginType.TopMargin, (double)2.4 / 3); ws.SetMargin(MarginType.BottomMargin, (double)2.4 / 3); //页眉页脚间距 ws.SetMargin(MarginType.HeaderMargin, 0); ws.SetMargin(MarginType.FooterMargin, 0); ws.FitToPage = true; } #endregion private void CreateDataExcel(string[] templateFileIds) { var result = Funs.DB.Template_Files; if (result == null) return; string rootPath = Server.MapPath("~/") + Const.ExcelUrl; //导出文件 string filePath = rootPath + "\\"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = "试压包报表-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx"; string ReportFileName = filePath + fileName; //XSSFWorkbook hssfworkbook = new XSSFWorkbook(); string sourceFile = Server.MapPath("~/File/Excel/目录模版.xlsx"); // 打开源工作簿 XSSFWorkbook hssfworkbook; using (FileStream file = new FileStream(sourceFile, FileMode.Open, FileAccess.Read)) { hssfworkbook = (XSSFWorkbook)WorkbookFactory.Create(file); } //操作目录模版sheet是否存在,不存在就把对应的sheet删除掉(特殊处理) int index = 0; if (!templateFileIds.Contains("2BEFB0F4-A466-4C59-963F-9092BACF2E52")) { hssfworkbook.RemoveAt(0); index++; } //'2-TP-02-试压包封面UG-FW-001 if (!templateFileIds.Contains("D4B4DD64-8361-4A75-AA3E-E484934B9B06")) { hssfworkbook.RemoveAt(1); index++; } //3-TP-03-试压包目录UG-FW-001 if (!templateFileIds.Contains("6CD2710C-2AD6-4E7D-BED7-C8BEDAD300DE")) { hssfworkbook.RemoveAt(2 - index); index++; } //4-TP-04-试压标识 if (!templateFileIds.Contains("87A66CAA-CA30-4A1E-8382-E8503059A0D0")) { hssfworkbook.RemoveAt(3 - index); index++; } //对应正常sheet处理 foreach (var templateFileId in templateFileIds) { var oneTemp = result.FirstOrDefault(s => s.Id == templateFileId); if (oneTemp == null) continue; switch (templateFileId) { //6-TP-05-P&ID清单UG-FW-001 模版 case "811EF650-7686-447F-BEE8-776D50041CD0": XSSFSheet sheet6 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template6(hssfworkbook, sheet6); break; //8-TP-06-单线图清单UG-FW-001 模版 case "A1E35220-A321-482A-B745-5F6456ADFE43": XSSFSheet sheet8 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template8(hssfworkbook, sheet8); break; //11-TP-07-盲板清单UG-FW-001 case "F20D530C-29BB-405F-AB0E-342496134375": XSSFSheet sheet11 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template11(hssfworkbook, sheet11); break; //13-弹簧支吊架安装检验记录SHT 3503-J403 case "0F1A38BB-C98E-4C21-B9EC-8B03CCB22BF2": XSSFSheet sheet13 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template13(hssfworkbook, sheet13); break; //14-滑动固定管托安装检验记录SHT 3503-J404 case "9C6CB4B3-446D-4C24-ADD8-DAC5F5DEF302": XSSFSheet sheet14 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template14(hssfworkbook, sheet14); break; //15-管道补偿器安装检验记录SHT 3503-J405 case "854BF339-C7FA-4935-9CBD-C844904F62FB": XSSFSheet sheet15 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template15(hssfworkbook, sheet15); break; //16-TP-08-静电接地清单UG-FW-001 case "FEF7F71B-E630-49CE-AB3D-6BFADA074DB6": XSSFSheet sheet16 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template16(hssfworkbook, sheet16); break; //17-管道焊接接头热处理报告SHT 3503-J411 case "1E3D0EA0-CE64-44EA-964F-5B289F5A588B": XSSFSheet sheet17 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template17(hssfworkbook, sheet17); break; //18-金属材料化学成分检验报告SHT 3503-J129 case "0DAD1096-EA35-446E-B628-2F20C449C641": XSSFSheet sheet18 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template18(hssfworkbook, sheet18); break; //19-硬度检查报告SHT 3503-J130 case "4B60CC6A-4431-49DF-A754-8B2C595C8C27": XSSFSheet sheet19 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template19(hssfworkbook, sheet19); break; //21-管道焊接工作记录SHT 3503-J415 case "1BDF3627-8632-48A3-B8CB-1D388D8A112A": XSSFSheet sheet21 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template21(hssfworkbook, sheet21); break; //22-射线检测比例确认表SHT 3503-J412-2007 case "857BDF12-E4E1-4FF1-A8D5-FC96CF09E70D": XSSFSheet sheet22 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template22(hssfworkbook, sheet22); break; //23-TP-09-超声&PAUT&TOFD检测比例确认表 case "0400055B-388A-40B0-BB7E-283B94864893": XSSFSheet sheet23 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template23(hssfworkbook, sheet23); break; //24-TP-10-渗透&MT检测比例确认表 case "B33E6C98-F999-4DC6-B0A4-633AE85B349C": XSSFSheet sheet24 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template24(hssfworkbook, sheet24); break; //25-1-管道无损检测结果汇总表SHT 3503-J412-2017 case "95125974-3DD4-4E16-B4F0-A9D9C9A1406D": XSSFSheet sheet25_1 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template25_1(hssfworkbook, sheet25_1); break; //25-管道无损检测结果汇总表SHT 3503-J412-2017 case "4C45ABAB-89E9-4874-8F55-5050CDE98DFC": XSSFSheet sheet25 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template25(hssfworkbook, sheet25); break; //26-管道无损检测数量统计表SHT 3503-J413-2017 case "6947FAA5-0475-4BEA-BE3A-C88BA503A0A5": XSSFSheet sheet26 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template26(hssfworkbook, sheet26); break; //27-TP-11-尾项清单UG-FW-001 case "012F03CB-85D7-4F57-8A4D-38AC209886BF": XSSFSheet sheet27 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template27(hssfworkbook, sheet27); break; //28-TP-12-试压用水(工具)检查清单UG-FW-001 case "DD6E665D-F784-41BA-88EF-E836AB1EC02F": XSSFSheet sheet28 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template28(hssfworkbook, sheet28); break; //32-管道系统压力试验记录SHT 3503-J406-2 case "A5F52E0C-90D2-4228-96ED-5FC4125159C5": XSSFSheet sheet32 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template32(hssfworkbook, sheet32); break; //33-管道吹扫清洗记录SHT 3503-J408 UG-FW-001 case "B1AE758D-3850-4397-A036-7FA54EFD0A69": XSSFSheet sheet33 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template33(hssfworkbook, sheet33); break; //34-管道系统压力试验条件确认记录SHT 3503-J406-1 case "AFC08566-A8D0-4118-B240-AADA04305E1B": XSSFSheet sheet34 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template34(hssfworkbook, sheet34); break; //35-TP-13-管道复位记录UG-FW-001 case "114E0846-93CB-4F12-A8BA-CE5B80C26A9C": XSSFSheet sheet35_sheet1 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title + "-sheet1"); template35_sheet1(hssfworkbook, sheet35_sheet1); XSSFSheet sheet35_sheet2 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title + "-sheet2"); template35_sheet2(hssfworkbook, sheet35_sheet2); break; //36-TP-14-法兰螺栓扭矩记录表 case "1C555FBB-DC81-4D2E-8EA7-8F6F0D4A4142": XSSFSheet sheet36 = (XSSFSheet)hssfworkbook.CreateSheet(oneTemp.Title); template36(hssfworkbook, sheet36); break; } } //生成第{N}个模版 using (FileStream filess = System.IO.File.OpenWrite(ReportFileName)) { hssfworkbook.Write(filess); } try { FileInfo filet = new FileInfo(ReportFileName); Response.Clear(); Response.ContentType = "application/x-zip-compressed"; Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.AddHeader("Content-Length", filet.Length.ToString()); Response.TransmitFile(ReportFileName, 0, filet.Length); Response.Flush(); Response.Close(); System.IO.File.Delete(ReportFileName); } catch (Exception ex) { BLL.ErrLogInfo.WriteLog(ex.Message); } } #region 私有方法 public static TestPackageInfoViewModel GetTestPackageInfo(string ptpId) { var result = (from a in Funs.DB.PTP_TestPackage join b in Funs.DB.PTP_PipelineList on a.PTP_ID equals b.PTP_ID join c in Funs.DB.Base_Project on a.ProjectId equals c.ProjectId join d in Funs.DB.Project_WorkArea on b.WorkAreaId equals d.WorkAreaId where a.PTP_ID == ptpId select new TestPackageInfoViewModel { enProjectName = c.EnProjectName, projectName = c.ProjectName, enWorkAreaName = d.EnWorkAreaName, workAreaName = d.WorkAreaName, workAreaCode = d.WorkAreaCode, SystemNo = a.TestPackageName, Auditer = a.Auditer, testpackageNo = a.TestPackageNo, TestPressure = a.TestPressure, TestType = a.TestType }).FirstOrDefault(); return result; } /// /// 查询指定条数分页 /// /// 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; } /// /// 获取某一列的所有值 /// /// 列数据类型 /// 数据表 /// 列名 /// public static List GetColumnValues(DataTable dtSource, string filedName) { return (from r in dtSource.AsEnumerable() select r.Field(filedName)).ToList(); } /// /// 行和列 /// /// private XSSFSheet ExcelCreateRow(XSSFSheet ws, XSSFWorkbook hssfworkbook, int sRows, int eRows, ICellStyle style, int cStart, int cEnd, bool istitle = false) { for (int i = sRows; i <= eRows; i++) { ws.CreateRow(i); if (istitle) { ws.GetRow(i).HeightInPoints = i == sRows ? 49.75f : i == (sRows + 1) ? 13.75f : 38f; } else { ws.GetRow(i).HeightInPoints = 38f; } for (int j = cStart; j <= cEnd; j++) { ws.GetRow(i).CreateCell(j); ws.GetRow(i).GetCell(j).CellStyle = style; } } return ws; } /// /// 行和列 /// /// private XSSFSheet ExcelCreateRowNew(XSSFSheet ws, XSSFWorkbook hssfworkbook, int sRows, int eRows, ICellStyle style, int cStart, int cEnd, float rowheigth = 13) { for (int i = sRows; i <= eRows; i++) { ws.CreateRow(i); ws.GetRow(i).HeightInPoints = rowheigth; for (int j = cStart; j <= cEnd; j++) { ws.GetRow(i).CreateCell(j); ws.GetRow(i).GetCell(j).CellStyle = style; } } return ws; } private ICellStyle SetStyle(XSSFWorkbook ws, BorderStyle top, BorderStyle bottom, BorderStyle left, BorderStyle right) { ICellStyle style = ws.CreateCellStyle(); style.BorderLeft = left; style.BorderRight = right; style.BorderTop = top; style.BorderBottom = bottom; return style; } private void InsertImage(XSSFWorkbook hssfworkbook, XSSFSheet ws, int row1, int col1, int row2, int col2, string img, double w, double h, int dx1 = 0, int dy1 = 0, int dx2 = 0, int dy2 = 0) { int pictureIdx = hssfworkbook.AddPicture(System.IO.File.ReadAllBytes(img), PictureType.PNG); IDrawing drawing = ws.CreateDrawingPatriarch(); IClientAnchor anchor = new XSSFClientAnchor(dx1 * XSSFShape.EMU_PER_PIXEL, dy1 * XSSFShape.EMU_PER_POINT, dx2 * XSSFShape.EMU_PER_PIXEL, dy2 * XSSFShape.EMU_PER_POINT, col1, row1, col2, row2); IDrawing patriarch = ws.CreateDrawingPatriarch(); IPicture pict = (XSSFPicture)patriarch.CreatePicture(anchor, pictureIdx); pict.Resize(w, h); } /// /// 22 实体 /// private class template22Dto { public string PipelineCode { get; set; } public string MaterialCode { get; set; } public string Specification { get; set; } public string jointCount { get; set; } public string FjointCount { get; set; } public string WelderCode { get; set; } public string WelderNum { get; set; } public string NdeNum { get; set; } public string FNdeNum { get; set; } public string NdeReportNo { get; set; } } #endregion } #endregion }