ZHJA_HJGL/HJGL_ZH/FineUIPro.Web/ContinuousPrint/WeldingJointInspection.aspx.cs

679 lines
40 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}