using BLL; using NPOI.OpenXmlFormats.Wordprocessing; 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.Runtime.InteropServices; using System.Web; using System.Web.UI; namespace FineUIPro.Web.ContinuousPrint { public partial class TestOrderPrint : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.drpIsPrint.DataTextField = "Text"; this.drpIsPrint.DataValueField = "Value"; this.drpIsPrint.DataSource = BLL.DropListService.IsTrueOrFalseDrpList(); this.drpIsPrint.DataBind(); Funs.FineUIPleaseSelect(this.drpIsPrint); 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) { var str = string.Empty; // 筛选关闭的批 if (this.drpIsPrint.SelectedValue != "null") { if (Convert.ToBoolean(drpIsPrint.SelectedValue)) { str += " and isnull(a.CH_PrintDate,'')!=''"; } else { str += " and isnull(a.CH_PrintDate,'')=''"; } } str += " ORDER BY a.CH_TrustDate DESC"; string strSql = @"select a.CH_TrustID,a.CH_TrustCode,a.CH_TrustDate,a.CH_Printer, a.CH_PrintDate,b.ProjectCode,b.ProjectName,b.ShortName,b.StartDate,b.EndDate from HJGL_CH_Trust as a inner join Base_Project as b on a.ProjectId=b.ProjectId where 1=1 and a.ProjectId= @ProjectId" + str; 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(); } protected void Grid2_Sort(object sender, FineUIPro.GridSortEventArgs e) { BindGrid1(this.Grid1.SelectedRowID); } #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(); } /// /// 是否打印 /// /// /// protected void drpIsPrint_SelectedIndexChanged(object sender, EventArgs e) { BindGrid1(this.Grid1.SelectedRowID); } #endregion #region 检测委托单打印 /// /// 检测委托单打印 /// protected void btnPrint_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 + "out1.xlsx"; if (Grid2.Rows.Count > 0) { int rowIndex = 0; XSSFWorkbook hssfworkbook = new XSSFWorkbook(); XSSFSheet ws = (XSSFSheet)hssfworkbook.CreateSheet("检测委托单"); #region 列宽 ws.SetColumnWidth(0, (4 * 256) + 126);//3.92 ws.SetColumnWidth(1, 3 * 256);//2.42 ws.SetColumnWidth(2, (3 * 256) + 75); //2.67 ws.SetColumnWidth(3, 4 * 256); //3.42 ws.SetColumnWidth(4, (7 * 256) + 200);//7.17 ws.SetColumnWidth(5, (4 * 256) + 145);//4 ws.SetColumnWidth(6, (5 * 256) + 15);//4.5 ws.SetColumnWidth(7, (6 * 256) + 126);//5.92 ws.SetColumnWidth(8, (8 * 256) + 145);//8 ws.SetColumnWidth(9, (3 * 256) + 200);//3.17 ws.SetColumnWidth(10, (2 * 256) + 75);//1.67 ws.SetColumnWidth(11, 250);//0.63 ws.SetColumnWidth(12, (7 * 256) + 126);//6.92 ws.SetColumnWidth(13, (5 * 256) - 50);//4.25 ws.SetColumnWidth(14, (6 * 256) + 15);//5.5 ws.SetColumnWidth(15, (14 * 256) - 50);//13.25 #endregion //图片地址 byte[] bytes = File.ReadAllBytes(Server.MapPath("~/") + "Images\\PrintLog.png"); int pictureIdx = hssfworkbook.AddPicture(bytes, PictureType.JPEG); for (int gi = 0; gi < Grid2.Rows.Count; gi++) { if (Grid2.SelectedRowIndexArray.Contains(gi)) { System.Web.UI.WebControls.HiddenField CH_TrustID = Grid2.Rows[gi].FindControl("hidCH_TrustID") as System.Web.UI.WebControls.HiddenField; System.Web.UI.WebControls.HiddenField hidProjectName = Grid2.Rows[gi].FindControl("hidProjectName") as System.Web.UI.WebControls.HiddenField; //修改数据 Model.HJGL_CH_Trust trust = HJGL_TrustManageEditService.GetCH_TrustByID(CH_TrustID.Value); if (trust != null) { trust.CH_PrintDate = DateTime.Now.Date; trust.CH_Printer = this.CurrUser.UserName; HJGL_TrustManageEditService.PrintCH_Trust(trust); } //列表 var listStr = new List(); listStr.Add(new SqlParameter("@CH_TrustID", CH_TrustID.Value)); SqlParameter[] parameter = listStr.ToArray(); var tb = SQLHelper.GetDataTableRunProc("HJGL_sp_rpt_TrustItem", parameter); //头部 var listTitleStr = new List(); listTitleStr.Add(new SqlParameter("@CH_TrustID", CH_TrustID.Value)); SqlParameter[] titleparameter = listTitleStr.ToArray(); var tbTitle = SQLHelper.GetDataTableRunProc("HJGL_sp_rpt_Trust", titleparameter); if (tb.Rows.Count > 0 && tbTitle.Rows.Count > 0) { var allPageNum = Math.Ceiling((float)tb.Rows.Count / 20); var titIsXu = 30; for (int i = 1; i <= allPageNum; i++) { //公共样式 ICellStyle style = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10, true); //有边框文字居左 ICellStyle leftstyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 10, true); //底部双底虚线 ICellStyle doubleLinestyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Double, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10, true); //无边框文字靠左 ICellStyle leftNoneStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Left, 10, true); //无边框文字靠右 ICellStyle rightNoneStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Right, 10, true); //头部样式 ICellStyle titleStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 11, true, true, "黑体"); ws = ExcelCreateRow(ws, hssfworkbook, rowIndex, int.Parse((rowIndex + titIsXu).ToString()), style, 0, 15); #region 头部 //行0 CellRangeAddress region = new CellRangeAddress(rowIndex, rowIndex, 0, 4); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(0).SetCellValue("文件版本:1"); ws.GetRow(rowIndex).GetCell(0).CellStyle = leftNoneStyle; region = new CellRangeAddress(rowIndex, rowIndex, 14, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex).GetCell(14).SetCellValue("保管期限:5年"); ws.GetRow(rowIndex).GetCell(14).CellStyle = rightNoneStyle; //行1 region = new CellRangeAddress(rowIndex + 1, rowIndex + 3, 0, 3); ws.AddMergedRegion(region); IDrawing patriarch = ws.CreateDrawingPatriarch(); IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 0, rowIndex + 1, 4, rowIndex + 4); IPicture pict = patriarch.CreatePicture(anchor, pictureIdx); //pict.Resize(); region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 4, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue("中国石油化工股份有限公司镇海炼化分公司管理体系"); //行2 region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 4, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 2).GetCell(4).SetCellValue("项目管理部焊缝检测委托单"); ws.GetRow(rowIndex + 2).GetCell(4).CellStyle = titleStyle; //行3 region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 4, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(4).SetCellValue("记录编号"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 6, 9); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(6).SetCellValue("PMT-T10.326.06.040.2016"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 10, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(10).SetCellValue("使用单位"); region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 13, 15); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 3).GetCell(13).SetCellValue("镇海石化建安工程有限公司"); //行4 region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(0).SetCellValue("项目号"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(3).SetCellValue(tbTitle.Rows[0]["ProjectCode"].ToString()); region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 6, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(6).SetCellValue("项目名称"); region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 8, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(8).SetCellValue(tbTitle.Rows[0]["ProjectName"].ToString()); ws.GetRow(rowIndex + 4).GetCell(8).CellStyle = leftstyle; region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 4).GetCell(13).SetCellValue("委托单编号"); ws.GetRow(rowIndex + 4).GetCell(15).SetCellValue(tbTitle.Rows[0]["CH_TrustCode"].ToString()); //行5 region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("区域号"); region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(3).SetCellValue(tbTitle.Rows[0]["WorkAreaCode"].ToString()); region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 6, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(6).SetCellValue("分项工程"); region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 8, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(8).SetCellValue(""); region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 5).GetCell(13).SetCellValue("检测时机"); ws.GetRow(rowIndex + 5).GetCell(15).SetCellValue("焊后"); //行6 region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(0).SetCellValue("检件编号"); region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(3).SetCellValue("见下"); region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 6, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(6).SetCellValue("检件名称"); region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 8, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(8).SetCellValue("管道焊接"); region = new CellRangeAddress(rowIndex + 6, rowIndex + 6, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 6).GetCell(13).SetCellValue("热处理状态"); ws.GetRow(rowIndex + 6).GetCell(15).SetCellValue(tbTitle.Rows[0]["IsHot"].ToString()); //行7 region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(0).SetCellValue("检测方法"); region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(3).SetCellValue(tbTitle.Rows[0]["NDT_Code"].ToString()); region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 6, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(6).SetCellValue("焊接方法"); region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 8, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(8).SetCellValue(tbTitle.Rows[0]["WME_Code"].ToString()); region = new CellRangeAddress(rowIndex + 7, rowIndex + 7, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 7).GetCell(13).SetCellValue("坡口形式"); ws.GetRow(rowIndex + 7).GetCell(15).SetCellValue(tbTitle.Rows[0]["JST_Name"].ToString()); //行8 region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 0, 2); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(0).SetCellValue("检测比例"); region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 3, 5); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(3).SetCellValue(tbTitle.Rows[0]["NDTR_Name"].ToString()); region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 6, 7); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(6).SetCellValue("检测标准"); region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 8, 12); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(8).SetCellValue(tbTitle.Rows[0]["CH_NDTCriteria"].ToString()); region = new CellRangeAddress(rowIndex + 8, rowIndex + 8, 13, 14); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 8).GetCell(13).SetCellValue("合格级别"); ws.GetRow(rowIndex + 8).GetCell(15).SetCellValue(tbTitle.Rows[0]["AcceptGrade"].ToString()); //行9 region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 0, 1); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(0).SetCellValue("委托人"); ws.GetRow(rowIndex + 9).GetCell(0).CellStyle = ws.GetRow(rowIndex + 9).GetCell(1).CellStyle = doubleLinestyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 2, 4); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(2).SetCellValue(tbTitle.Rows[0]["TrustManName"].ToString()); ws.GetRow(rowIndex + 9).GetCell(2).CellStyle = ws.GetRow(rowIndex + 9).GetCell(3).CellStyle = ws.GetRow(rowIndex + 9).GetCell(4).CellStyle = doubleLinestyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 5, 6); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(5).SetCellValue("审核人"); ws.GetRow(rowIndex + 9).GetCell(5).CellStyle = ws.GetRow(rowIndex + 9).GetCell(6).CellStyle = doubleLinestyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 7, 8); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(7).SetCellValue(tbTitle.Rows[0]["AuditManName"].ToString()); ws.GetRow(rowIndex + 9).GetCell(7).CellStyle = ws.GetRow(rowIndex + 9).GetCell(8).CellStyle = doubleLinestyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 9, 11); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(9).SetCellValue("接收人"); ws.GetRow(rowIndex + 9).GetCell(9).CellStyle = ws.GetRow(rowIndex + 9).GetCell(10).CellStyle = ws.GetRow(rowIndex + 9).GetCell(11).CellStyle = doubleLinestyle; region = new CellRangeAddress(rowIndex + 9, rowIndex + 9, 12, 13); ws.AddMergedRegion(region); ws.GetRow(rowIndex + 9).GetCell(12).SetCellValue(""); ws.GetRow(rowIndex + 9).GetCell(14).SetCellValue("日期"); ws.GetRow(rowIndex + 9).GetCell(15).SetCellValue(tbTitle.Rows[0]["CH_TrustDate"].ToString()); ws.GetRow(rowIndex + 9).GetCell(12).CellStyle = ws.GetRow(rowIndex + 9).GetCell(13).CellStyle = ws.GetRow(rowIndex + 9).GetCell(14).CellStyle = ws.GetRow(rowIndex + 9).GetCell(15).CellStyle = doubleLinestyle; #endregion #region 表格 var dataTit = rowIndex + 10; //合并单元格 for (int hb = dataTit; hb <= rowIndex + titIsXu; hb++) { region = new CellRangeAddress(hb, hb, 1, 3); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 4, 5); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 6, 7); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 8, 9); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 10, 12); ws.AddMergedRegion(region); region = new CellRangeAddress(hb, hb, 13, 14); ws.AddMergedRegion(region); } //每页数据开始和结束条数 var dStart = i == 1 ? 0 : (i - 1) * 20; var dEnd = i * 20; //获取当前页数据 var pageTb = GetPageToTable(tb, dStart, dEnd); //列头 ws.GetRow(dataTit).GetCell(0).SetCellValue("序号"); ws.GetRow(dataTit).GetCell(1).SetCellValue("检测批号"); ws.GetRow(dataTit).GetCell(4).SetCellValue("检件编号"); ws.GetRow(dataTit).GetCell(6).SetCellValue("焊缝编号"); ws.GetRow(dataTit).GetCell(8).SetCellValue("焊工号"); ws.GetRow(dataTit).GetCell(10).SetCellValue("焊缝规格"); ws.GetRow(dataTit).GetCell(13).SetCellValue("材质"); ws.GetRow(dataTit).GetCell(15).SetCellValue("备注"); //数据 for (int j = 0; j < pageTb.Rows.Count; j++) { int dataIndex = dataTit + j + 1; ws.GetRow(dataIndex).GetCell(0).SetCellValue(pageTb.Rows[j]["Number"].ToString()); ws.GetRow(dataIndex).GetCell(1).SetCellValue(pageTb.Rows[j]["BatchCode"].ToString()); ws.GetRow(dataIndex).GetCell(4).SetCellValue(pageTb.Rows[j]["ISO_IsoNo"].ToString()); ws.GetRow(dataIndex).GetCell(6).SetCellValue(pageTb.Rows[j]["JOT_JointNo"].ToString()); ws.GetRow(dataIndex).GetCell(8).SetCellValue(pageTb.Rows[j]["WED_Code"].ToString()); ws.GetRow(dataIndex).GetCell(10).SetCellValue(pageTb.Rows[j]["JOT_JointDesc"].ToString()); ws.GetRow(dataIndex).GetCell(13).SetCellValue(pageTb.Rows[j]["STE_Code"].ToString()); ws.GetRow(dataIndex).GetCell(15).SetCellValue(pageTb.Rows[j]["CH_Remark"].ToString()); } #endregion #region 尾部 //尾部样式 ICellStyle noneStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 10); //创建尾部行 var tEnd = int.Parse((rowIndex + titIsXu + 1).ToString()); ws.CreateRow(tEnd); ws.CreateRow(tEnd).HeightInPoints = 21f; //创建尾部列 for (int eIndex = 0; eIndex <= 15; eIndex++) { ws.GetRow(tEnd).CreateCell(eIndex); ws.GetRow(tEnd).GetCell(eIndex).CellStyle = noneStyle; } region = new CellRangeAddress(tEnd, tEnd, 14, 15); ws.AddMergedRegion(region); ws.GetRow(tEnd).GetCell(14).SetCellValue(string.Format("第 {0} 页 共 {1} 页", i, allPageNum)); #endregion rowIndex += int.Parse((titIsXu + 2).ToString()); } } } } ws.SetMargin(MarginType.LeftMargin, 0.7); ws.SetMargin(MarginType.RightMargin, 0.5); //ws.SetMargin(MarginType.BottomMargin, 1); //ws.SetMargin(MarginType.TopMargin, 1); //ws.SetMargin(MarginType.FooterMargin, 0.5); //ws.SetMargin(MarginType.HeaderMargin, 0.5); ws.PrintSetup.Landscape = false; ws.PrintSetup.PaperSize = 9; ws.ForceFormulaRecalculation = true; using (FileStream filess = File.OpenWrite(ReportFileName)) { hssfworkbook.Write(filess); } FileInfo filet = new FileInfo(ReportFileName); Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF8; // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("检测委托单.xlsx")); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", filet.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(filet.FullName); // 停止页面的执行 Response.End(); } } #endregion #region 私有方法 /// /// 行和列 /// /// private XSSFSheet ExcelCreateRow(XSSFSheet ws, XSSFWorkbook hssfworkbook, int sRows, int eRows, ICellStyle style, int cStart, int cEnd, int ptype = 1) { var noneStyle = CommonPrint.SetExcelStyle(hssfworkbook, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None, VerticalAlignment.Center, HorizontalAlignment.Center, 7, true); for (int i = sRows; i <= eRows; i++) { ws.CreateRow(i); ws.GetRow(i).HeightInPoints = i == sRows ? 19.5f : i == (sRows + 1) ? 20.3f : i == (sRows + 2) ? 31.5f : i == (sRows + 3) ? 21.8f : i == (sRows + 5) ? 21f : i == (sRows + 6) ? 21.8f : i == (sRows + 7) ? 21.8f : i == (sRows + 8) ? 21.8f : i == (sRows + 9) ? 21.8f : i == (sRows + 10) ? 25.5f : 22.5f; for (int j = cStart; j <= cEnd; j++) { ws.GetRow(i).CreateCell(j); ws.GetRow(i).GetCell(j).CellStyle = i == sRows ? noneStyle : style; } } return ws; } /// /// 查询指定条数分页 /// /// public static DataTable GetPageToTable(DataTable dt, int StartNum, int EndNum) { //0页代表每页数据,直接返回 if (EndNum == 0) return dt; //数据源为空返回空DataTable if (dt == null) return new DataTable(); DataTable newdt = dt.Copy(); newdt.Clear();//copy dt的框架 if (StartNum >= dt.Rows.Count) return newdt;//源数据记录数小于等于要显示的记录,直接返回dt if (EndNum > dt.Rows.Count) EndNum = dt.Rows.Count; for (int i = StartNum; i <= EndNum - 1; i++) { DataRow newdr = newdt.NewRow(); DataRow dr = dt.Rows[i]; foreach (DataColumn column in dt.Columns) { newdr[column.ColumnName] = dr[column.ColumnName]; } newdt.Rows.Add(newdr); } return newdt; } #endregion } }