using BLL; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Web; using System.Web.UI; namespace FineUIPro.Web.ContinuousPrint { public partial class WeldingJointInspection : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindGrid(); } } #region 绑定Grid1 /// /// 绑定Grid1 /// public void BindGrid() { var project = BLL.Base_ProjectService.GetOnProjectListByUserId(this.CurrUser.UserId, "1"); if (!string.IsNullOrEmpty(txtProjectCode.Text)) { project = project.Where(e => e.ProjectCode.Contains(txtProjectCode.Text.Trim())).ToList(); } Grid1.RecordCount = project.Count; var table = this.GetPagedDataTable(Grid1, project); Grid1.DataSource = table; Grid1.DataBind(); } #endregion #region 绑定Grid2 /// /// 绑定Grid2 /// public void BindGrid1(string ProjectId) { string strSql = @" SELECT v.ProjectId,project.ProjectCode,project.ProjectName,v.JOTY_Group, (CASE WHEN v.JOTY_Group='1' THEN '对接焊缝' WHEN v.JOTY_Group='2' THEN '角焊缝' WHEN v.JOTY_Group='3' THEN '支管连接焊缝' END) AS JointType, v.VICheckDate,v.NDTR_ID,rate.NDTR_Name FROM (SELECT batch.ProjectId,batchDetail.VICheckDate,batch.NDTR_ID,jointType.JOTY_Group FROM dbo.HJGL_BO_BatchDetail batchDetail LEFT JOIN dbo.HJGL_BO_Batch batch ON batch.BatchId=batchDetail.BatchId LEFT JOIN dbo.HJGL_PW_JointInfo joint ON joint.JOT_ID=batchDetail.JOT_ID LEFT JOIN dbo.HJGL_BS_JointType jointType ON jointType.JOTY_ID = joint.JOTY_ID WHERE BatchDetail.VICheckDate IS NOT NULL GROUP BY batch.ProjectId,jointType.JOTY_Group,batchDetail.VICheckDate,batch.NDTR_ID) v LEFT JOIN dbo.Base_Project project ON project.ProjectId = v.ProjectId LEFT JOIN dbo.HJGL_BS_NDTRate rate ON rate.NDTR_ID = v.NDTR_ID where v.ProjectId= @ProjectId"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", ProjectId)); SqlParameter[] parameter = listStr.ToArray(); Grid2.DataSource = SQLHelper.GetDataTableRunText(strSql, parameter); Grid2.DataBind(); Grid2.SelectAllRows(); } #endregion #region 分页、排序 /// /// 分页 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { Grid1.PageIndex = e.NewPageIndex; BindGrid(); } /// /// 分页显示条数下拉框 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e) { Grid1.SortDirection = e.SortDirection; Grid1.SortField = e.SortField; BindGrid(); } #endregion #region 选择加载 /// /// 选择加载 /// /// /// protected void Grid1_RowClick(object sender, GridRowClickEventArgs e) { BindGrid1(this.Grid1.SelectedRowID); } #endregion #region 私有方法 /// /// 得到热处理类型 /// /// protected string ConvertProessTypes(object ProessTypes) { string proessTypes = string.Empty; if (ProessTypes != null) { proessTypes = BLL.HJGL_PW_JointInfoService.ConvertProessTypes(ProessTypes.ToString()); } return proessTypes; } #endregion #region 关闭弹出窗口 /// /// 关闭窗口 /// /// /// protected void Window1_Close(object sender, EventArgs e) { BindGrid(); } #endregion #region 查询 /// /// 查询 /// protected void btnSubmit_Click(object sender, EventArgs e) { BindGrid(); } #endregion #region 焊接接头报检检查记录打印 /// /// 焊接接头报检检查记录打印 /// protected void btnWeldingRecord_Click(object sender, EventArgs e) { if (Grid2.SelectedRowIndexArray.Length <= 0) { Alert.ShowInTop("最少选中一行!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/") + Const.ExcelUrl; //导出文件 string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string ReportFileName = filePath + "out.xlsx"; if (Grid2.Rows.Count > 0) { int rowIndex = 0; XSSFWorkbook hssfworkbook = new XSSFWorkbook(); XSSFSheet ws = (XSSFSheet)hssfworkbook.CreateSheet("管道焊接接头报检检查记录"); #region 列宽 ws.SetColumnWidth(0, (5 * 256) - 15);//(4.33)4.36 ws.SetColumnWidth(1, (6 * 256) - 95);//(5.08)5.09 ws.SetColumnWidth(2, (7 * 256) - 95);//(6.08)6.09 ws.SetColumnWidth(3, (7 * 256) - 95);//(5.08)6.09 ws.SetColumnWidth(4, (6 * 256) - 95);//(5.08)5.09 ws.SetColumnWidth(5, (4 * 256) + 120);//(3.92)3.91 ws.SetColumnWidth(6, (6 * 256) - 95);//(5.08)5.09 ws.SetColumnWidth(7, (4 * 256) + 60);//(3.67)3.64 ws.SetColumnWidth(8, (16 * 256) - 95);//(15.08)15.09 ws.SetColumnWidth(9, (7 * 256) - 95);//(6.08)6.09 ws.SetColumnWidth(10, (7 * 256) - 95);//(6.08)6.09 ws.SetColumnWidth(11, (6 * 256) - 95);//(5.08)5.09 ws.SetColumnWidth(12, (11 * 256) - 95);//(10.08)10.09 ws.SetColumnWidth(13, (8 * 256) - 95);//(7.08)7.09 ws.SetColumnWidth(14, (6 * 256) - 95);//(5.08)5.09 ws.SetColumnWidth(15, (8 * 256) + 55);//(7.67)7.64 ws.SetColumnWidth(16, (4 * 256) - 15);//(3.33)3.36 ws.SetColumnWidth(17, (8 * 256) + 50);//(7.58)7.64 ws.SetColumnWidth(18, (9 * 256) - 15);//(8.33)8.36 ws.SetColumnWidth(19, (8 * 256) + 50);//(7.58)7.64 ws.SetColumnWidth(20, (3 * 256) + 50);//(2.58)2.64 #endregion for (int gi = 0; gi < Grid2.Rows.Count; gi++) { if (Grid2.SelectedRowIndexArray.Contains(gi)) { System.Web.UI.WebControls.HiddenField hidProjectId = Grid2.Rows[gi].FindControl("hidProjectId") as System.Web.UI.WebControls.HiddenField; System.Web.UI.WebControls.HiddenField hidNDTR_ID = Grid2.Rows[gi].FindControl("hidNDTR_ID") as System.Web.UI.WebControls.HiddenField; System.Web.UI.WebControls.HiddenField hidJOTY_Group = Grid2.Rows[gi].FindControl("hidJOTY_Group") as System.Web.UI.WebControls.HiddenField; System.Web.UI.WebControls.HiddenField hidVICheckDate = Grid2.Rows[gi].FindControl("hidVICheckDate") as System.Web.UI.WebControls.HiddenField; System.Web.UI.WebControls.HiddenField hidProjectName = Grid2.Rows[gi].FindControl("hidProjectName") as System.Web.UI.WebControls.HiddenField; var listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", hidProjectId.Value)); listStr.Add(new SqlParameter("@NDTR_ID", hidNDTR_ID.Value)); listStr.Add(new SqlParameter("@JOTY_Group", hidJOTY_Group.Value)); listStr.Add(new SqlParameter("@VICheckDate", hidVICheckDate.Value)); SqlParameter[] parameter = listStr.ToArray(); var tb = SQLHelper.GetDataTableRunProc("HJGL_sp_WeldInspectionCheckRecordNew", parameter); if (tb.Rows.Count > 0) { CellRangeAddress region; //尾页面总数 var pageNum = 0d; //尾部增加行 var endaddNum = 0; //公共样式 ICellStyle style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 11, true); //头部样式 ICellStyle styleTou = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 16, true, true); //文字靠左 ICellStyle styleFontLeft = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 11, true); //文字靠左,左侧无边框 ICellStyle styleFontLeftNone = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 11, true); //右侧无边框 ICellStyle styleRightNone = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 11, true); //计算页 pageNum = tb.Rows.Count < 11 ? 1 : Math.Ceiling((float)(tb.Rows.Count - 11) / 11) + 1; //循环页 for (int i = 1; i <= pageNum; i++) { //取数据开始和结束条数 var dStart = 0; var dEnd = 0; //excel数据开始行和结束行 var tStart = 0; var tEnd = 0; #region 头部和每页数据参数 //第一页和第二页需要创建头 if (i == 1) { //尾部增加行 endaddNum = 5; //创建头部行和列 ws = ExcelCreateRowTitle(ws, hssfworkbook, rowIndex, rowIndex + 4, style, 0, 20); //取数据开始和结束条数 dStart = 0; dEnd = 11; //excel数据开始行和结束行 tStart = rowIndex + 5; tEnd = rowIndex + 15; #region 头部 //行1 region = new CellRangeAddress(rowIndex, rowIndex + 1, 0, 4); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T 3543—G402"); region = new CellRangeAddress(rowIndex, rowIndex + 1, 5, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(5).SetCellValue("管道焊接接头报检/检查记录"); ws.GetRow(rowIndex).GetCell(5).CellStyle = styleTou; region = new CellRangeAddress(rowIndex, rowIndex, 14, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(14).SetCellValue("工程名称:"); ws.GetRow(rowIndex).GetCell(14).CellStyle = ws.GetRow(rowIndex).GetCell(15).CellStyle = ws.GetRow(rowIndex).GetCell(16).CellStyle = styleRightNone; region = new CellRangeAddress(rowIndex, rowIndex, 17, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(17).SetCellValue(hidProjectName.Value); ws.GetRow(rowIndex).GetCell(17).CellStyle = styleFontLeftNone; //行2 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 14, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(14).SetCellValue("单位工程名称:"); ws.GetRow(rowIndex + 1).GetCell(14).CellStyle = ws.GetRow(rowIndex + 1).GetCell(15).CellStyle = ws.GetRow(rowIndex + 1).GetCell(16).CellStyle = styleRightNone; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(17).SetCellValue("管道"); ws.GetRow(rowIndex + 1).GetCell(17).CellStyle = styleFontLeftNone; //行3 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("报检/检查记录编号"); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 3, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(3).SetCellValue(""); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 7, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(7).SetCellValue("无损检测方法"); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 10, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(10).SetCellValue(""); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(13).SetCellValue("报检数量"); ws.GetRow(rowIndex + 2).GetCell(15).SetCellValue(tb.Rows.Count.ToString()); ws.GetRow(rowIndex + 2).GetCell(16).SetCellValue("个"); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 17, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(17).SetCellValue("检测比例"); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 19, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(19).SetCellValue("100%"); //行4-5,列头 region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 0, 0); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue("序号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 1, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(1).SetCellValue("管道编号/单线号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 4, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue("焊口编号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 6, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(6).SetCellValue("焊工代号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 8, 8); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(8).SetCellValue("规格 mm"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 9, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(9).SetCellValue("材质"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 11, 11); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(11).SetCellValue("焊接位置"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 12, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(12).SetCellValue("焊接方法"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(13).SetCellValue("焊材牌号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 15, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(15).SetCellValue("实际预热温度℃"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 17, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(17).SetCellValue("焊缝外观检查"); ws.GetRow(rowIndex + 4).GetCell(17).SetCellValue("□合格"); ws.GetRow(rowIndex + 4).GetCell(18).SetCellValue("□不合格"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 19, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(19).SetCellValue("备注"); #endregion } else { //尾部增加行 endaddNum = 5; //创建头部行和列 ws = ExcelCreateRowTitle(ws, hssfworkbook, rowIndex, rowIndex + 4, style, 0, 20); var pNum = (i - 1) * 11; //取数据开始和结束条数 dStart = 11 + ((i - 2) * 11); dEnd = 11 + pNum; //数据开始行和结束行 tStart = rowIndex + 5; tEnd = rowIndex + 15; #region 头部 //行1 region = new CellRangeAddress(rowIndex, rowIndex + 1, 0, 4); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(0).SetCellValue("SH/T 3543—G402"); region = new CellRangeAddress(rowIndex, rowIndex + 1, 5, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(5).SetCellValue("管道焊接接头报检/检查记录"); ws.GetRow(rowIndex).GetCell(5).CellStyle = styleTou; region = new CellRangeAddress(rowIndex, rowIndex, 14, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(14).SetCellValue("工程名称:"); ws.GetRow(rowIndex).GetCell(14).CellStyle = ws.GetRow(rowIndex).GetCell(15).CellStyle = ws.GetRow(rowIndex).GetCell(16).CellStyle = styleRightNone; region = new CellRangeAddress(rowIndex, rowIndex, 17, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(17).SetCellValue(hidProjectName.Value); ws.GetRow(rowIndex).GetCell(17).CellStyle = styleFontLeftNone; //行2 region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 14, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(14).SetCellValue("单位工程名称:"); ws.GetRow(rowIndex + 1).GetCell(14).CellStyle = ws.GetRow(rowIndex + 1).GetCell(15).CellStyle = ws.GetRow(rowIndex + 1).GetCell(16).CellStyle = styleRightNone; region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 17, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(17).SetCellValue("管道"); ws.GetRow(rowIndex + 1).GetCell(17).CellStyle = styleFontLeftNone; //行3 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(0).SetCellValue("报检/检查记录编号"); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 3, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(3).SetCellValue(""); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 7, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(7).SetCellValue("无损检测方法"); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 10, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(10).SetCellValue(""); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(13).SetCellValue("报检数量"); ws.GetRow(rowIndex + 2).GetCell(15).SetCellValue(tb.Rows.Count.ToString()); ws.GetRow(rowIndex + 2).GetCell(16).SetCellValue("个"); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 17, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(17).SetCellValue("检测比例"); region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 19, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(19).SetCellValue("100%"); //行4-5,列头 region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 0, 0); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue("序号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 1, 3); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(1).SetCellValue("管道编号/单线号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 4, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue("焊口编号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 6, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(6).SetCellValue("焊工代号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 8, 8); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(8).SetCellValue("规格 mm"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 9, 10); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(9).SetCellValue("材质"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 11, 11); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(11).SetCellValue("焊接位置"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 12, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(12).SetCellValue("焊接方法"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(13).SetCellValue("焊材牌号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 15, 16); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(15).SetCellValue("实际预热温度℃"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 17, 18); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(17).SetCellValue("焊缝外观检查"); ws.GetRow(rowIndex + 4).GetCell(17).SetCellValue("□合格"); ws.GetRow(rowIndex + 4).GetCell(18).SetCellValue("□不合格"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 19, 20); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(19).SetCellValue("备注"); #endregion } #endregion #region 数据 //创建数据行和列 ws = ExcelCreateRow(ws, hssfworkbook, tStart, tEnd, style, 0, 20); //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); //数据 for (int j = 0; j < pageTb.Rows.Count; j++) { var number = dStart == 0 ? j + 1 : dStart + 1 + j; int dataIndex = tStart + j; ws.GetRow(dataIndex).GetCell(0).SetCellValue(number); ws.GetRow(dataIndex).GetCell(1).SetCellValue(pageTb.Rows[j]["ISO_IsoNo"].ToString()); ws.GetRow(dataIndex).GetCell(4).SetCellValue(pageTb.Rows[j]["JOT_JointNo"].ToString()); ws.GetRow(dataIndex).GetCell(6).SetCellValue(pageTb.Rows[j]["WED_Code"].ToString()); ws.GetRow(dataIndex).GetCell(8).SetCellValue(pageTb.Rows[j]["JOT_JointDesc"].ToString()); ws.GetRow(dataIndex).GetCell(9).SetCellValue(pageTb.Rows[j]["STE_Code"].ToString()); ws.GetRow(dataIndex).GetCell(11).SetCellValue(pageTb.Rows[j]["JOT_Location"].ToString()); ws.GetRow(dataIndex).GetCell(12).SetCellValue(pageTb.Rows[j]["WME_Name"].ToString()); ws.GetRow(dataIndex).GetCell(13).SetCellValue(pageTb.Rows[j]["WMT_MatName"].ToString()); ws.GetRow(dataIndex).GetCell(15).SetCellValue(pageTb.Rows[j]["JOT_PrepareTemp"].ToString()); ws.GetRow(dataIndex).GetCell(17).SetCellValue(pageTb.Rows[j]["PassVI"].ToString()); ws.GetRow(dataIndex).GetCell(18).SetCellValue(pageTb.Rows[j]["NoPassVI"].ToString()); ws.GetRow(dataIndex).GetCell(19).SetCellValue(pageTb.Rows[j]["Remark"].ToString()); } #endregion #region 尾部 var tailIndex = tEnd + 1; //创建尾部行 ws.CreateRow(tailIndex); ws.CreateRow(tailIndex).HeightInPoints = 23f; ws.CreateRow(tailIndex + 1); ws.CreateRow(tailIndex + 1).HeightInPoints = 23f; for (int eIndex = 0; eIndex <= 20; eIndex++) { //行1 ws.GetRow(tailIndex).CreateCell(eIndex); ws.GetRow(tailIndex).GetCell(eIndex).CellStyle = styleFontLeft; //行2 ws.GetRow(tailIndex + 1).CreateCell(eIndex); ws.GetRow(tailIndex + 1).GetCell(eIndex).CellStyle = styleFontLeft; } //尾部行1 region = new CellRangeAddress(tailIndex, tailIndex, 0, 2); ws.AddMergedRegion(region); ws.GetRow(tailIndex).GetCell(0).SetCellValue("施工班组长:"); ws.GetRow(tailIndex).GetCell(0).CellStyle = styleFontLeft; region = new CellRangeAddress(tailIndex, tailIndex, 3, 10); ws.AddMergedRegion(region); ws.GetRow(tailIndex).GetCell(3).SetCellValue(""); ws.GetRow(tailIndex).GetCell(3).CellStyle = styleFontLeft; region = new CellRangeAddress(tailIndex, tailIndex, 11, 12); ws.AddMergedRegion(region); ws.GetRow(tailIndex).GetCell(11).SetCellValue("质量检查员:"); ws.GetRow(tailIndex).GetCell(11).CellStyle = styleFontLeft; region = new CellRangeAddress(tailIndex, tailIndex, 13, 20); ws.AddMergedRegion(region); ws.GetRow(tailIndex).GetCell(13).SetCellValue(""); ws.GetRow(tailIndex).GetCell(13).CellStyle = styleFontLeft; //尾部行2 region = new CellRangeAddress(tailIndex + 1, tailIndex + 1, 0, 2); ws.AddMergedRegion(region); ws.GetRow(tailIndex + 1).GetCell(0).SetCellValue("日期:"); ws.GetRow(tailIndex + 1).GetCell(0).CellStyle = styleFontLeft; region = new CellRangeAddress(tailIndex + 1, tailIndex + 1, 3, 10); ws.AddMergedRegion(region); ws.GetRow(tailIndex + 1).GetCell(3).SetCellValue(""); ws.GetRow(tailIndex + 1).GetCell(3).CellStyle = styleFontLeft; region = new CellRangeAddress(tailIndex + 1, tailIndex + 1, 11, 12); ws.AddMergedRegion(region); ws.GetRow(tailIndex + 1).GetCell(11).SetCellValue("日期:"); ws.GetRow(tailIndex + 1).GetCell(11).CellStyle = styleFontLeft; region = new CellRangeAddress(tailIndex + 1, tailIndex + 1, 13, 20); ws.AddMergedRegion(region); ws.GetRow(tailIndex + 1).GetCell(13).SetCellValue(""); ws.GetRow(tailIndex + 1).GetCell(13).CellStyle = styleFontLeft; #endregion rowIndex = tEnd + endaddNum; } } } } ws.SetMargin(MarginType.LeftMargin, 0.1); ws.SetMargin(MarginType.RightMargin, 0); //ws.SetMargin(MarginType.BottomMargin, 1.2); //ws.SetMargin(MarginType.TopMargin, 1.2); ws.PrintSetup.Landscape = true; ws.PrintSetup.PaperSize = 9; ws.ForceFormulaRecalculation = true; using (FileStream filess = File.OpenWrite(ReportFileName)) { hssfworkbook.Write(filess); } FileInfo filet = new FileInfo(ReportFileName); Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF8; // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("管道焊接接头报检检查记录.xlsx")); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", filet.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(filet.FullName); // 停止页面的执行 Response.End(); } } #endregion #region 私有方法 /// /// 行和列 /// /// private XSSFSheet ExcelCreateRowTitle(XSSFSheet ws, XSSFWorkbook hssfworkbook, int sRows, int eRows, ICellStyle style, int cStart, int cEnd) { for (int i = sRows; i <= eRows; i++) { ws.CreateRow(i); ws.GetRow(i).HeightInPoints = i == sRows ? 30 : i == (sRows + 1) ? 27 : i == (sRows + 2) ? 28 : 23; for (int j = cStart; j <= cEnd; j++) { ws.GetRow(i).CreateCell(j); ws.GetRow(i).GetCell(j).CellStyle = style; } } return ws; } /// /// 数据行 /// /// private XSSFSheet ExcelCreateRow(XSSFSheet ws, XSSFWorkbook hssfworkbook, int sRows, int eRows, ICellStyle style, int cStart, int cEnd) { CellRangeAddress region; for (int i = sRows; i <= eRows; i++) { ws.CreateRow(i); ws.GetRow(i).HeightInPoints = 23f; for (int j = cStart; j <= cEnd; j++) { ws.GetRow(i).CreateCell(j); ws.GetRow(i).GetCell(j).CellStyle = style; } region = new CellRangeAddress(i, i, 1, 3); ws.AddMergedRegion(region); region = new CellRangeAddress(i, i, 4, 5); ws.AddMergedRegion(region); region = new CellRangeAddress(i, i, 6, 7); ws.AddMergedRegion(region); region = new CellRangeAddress(i, i, 9, 10); ws.AddMergedRegion(region); region = new CellRangeAddress(i, i, 13, 14); ws.AddMergedRegion(region); region = new CellRangeAddress(i, i, 15, 16); ws.AddMergedRegion(region); region = new CellRangeAddress(i, i, 19, 20); ws.AddMergedRegion(region); } return ws; } /// /// 查询指定条数分页 /// /// public static DataTable GetPageToTable(DataTable dt, int StartNum, int EndNum) { //0页代表每页数据,直接返回 if (EndNum == 0) return dt; //数据源为空返回空DataTable if (dt == null) return new DataTable(); DataTable newdt = dt.Copy(); newdt.Clear();//copy dt的框架 if (StartNum >= dt.Rows.Count) return newdt;//源数据记录数小于等于要显示的记录,直接返回dt if (EndNum > dt.Rows.Count) EndNum = dt.Rows.Count; for (int i = StartNum; i <= EndNum - 1; i++) { DataRow newdr = newdt.NewRow(); DataRow dr = dt.Rows[i]; foreach (DataColumn column in dt.Columns) { newdr[column.ColumnName] = dr[column.ColumnName]; } newdt.Rows.Add(newdr); } return newdt; } #endregion } }