679 lines
40 KiB
C#
679 lines
40 KiB
C#
|
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
|
|||
|
/// <summary>
|
|||
|
/// 绑定Grid1
|
|||
|
/// </summary>
|
|||
|
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
|
|||
|
/// <summary>
|
|||
|
/// 绑定Grid2
|
|||
|
/// </summary>
|
|||
|
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<SqlParameter> listStr = new List<SqlParameter>();
|
|||
|
listStr.Add(new SqlParameter("@ProjectId", ProjectId));
|
|||
|
SqlParameter[] parameter = listStr.ToArray();
|
|||
|
Grid2.DataSource = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|||
|
Grid2.DataBind();
|
|||
|
Grid2.SelectAllRows();
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 分页、排序
|
|||
|
/// <summary>
|
|||
|
/// 分页
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
|
|||
|
{
|
|||
|
Grid1.PageIndex = e.NewPageIndex;
|
|||
|
BindGrid();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 分页显示条数下拉框
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
|
|||
|
BindGrid();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 排序
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
|
|||
|
{
|
|||
|
Grid1.SortDirection = e.SortDirection;
|
|||
|
Grid1.SortField = e.SortField;
|
|||
|
BindGrid();
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 选择加载
|
|||
|
/// <summary>
|
|||
|
/// 选择加载
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
protected void Grid1_RowClick(object sender, GridRowClickEventArgs e)
|
|||
|
{
|
|||
|
BindGrid1(this.Grid1.SelectedRowID);
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 私有方法
|
|||
|
/// <summary>
|
|||
|
/// 得到热处理类型
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
protected string ConvertProessTypes(object ProessTypes)
|
|||
|
{
|
|||
|
string proessTypes = string.Empty;
|
|||
|
if (ProessTypes != null)
|
|||
|
{
|
|||
|
proessTypes = BLL.HJGL_PW_JointInfoService.ConvertProessTypes(ProessTypes.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return proessTypes;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 关闭弹出窗口
|
|||
|
/// <summary>
|
|||
|
/// 关闭窗口
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
protected void Window1_Close(object sender, EventArgs e)
|
|||
|
{
|
|||
|
BindGrid();
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 查询
|
|||
|
/// <summary>
|
|||
|
/// 查询
|
|||
|
/// </summary>
|
|||
|
protected void btnSubmit_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
BindGrid();
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 焊接接头报检检查记录打印
|
|||
|
/// <summary>
|
|||
|
/// 焊接接头报检检查记录打印
|
|||
|
/// </summary>
|
|||
|
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<SqlParameter>();
|
|||
|
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 私有方法
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 行和列
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
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;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 数据行
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
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;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 查询指定条数分页
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
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
|
|||
|
}
|
|||
|
}
|