using BLL; using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Web.UI.WebControls; namespace FineUIPro.Web.Report { public partial class FCRReport : PageBase { #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { // 表头过滤 FilterDataRowItem = FilterDataRowItemImplement; if (!IsPostBack) { GetButtonPower();//权限设置 ddlPageSize.SelectedValue = Grid1.PageSize.ToString(); // 绑定表格 BindGrid(); } else if (GetRequestEventArgument() == "FilterChange") { BindGrid(); } } /// /// 绑定数据 /// private void BindGrid() { string strSql = @"SELECT fcrLog.FCRLogId, eproject.ProjectControl_JobNo, fcrLog.DisciplineName, fcrLog.FCRNo, fcrLog.CostYorN AS FCR_COST, fcrLog.CostCNY AS FCR_COST_CNY, fcrLog.SchYorN AS FCR_SCH, fcrLog.SchDays AS FCR_SCH_DAY, fcrLog.InitiatorName AS FCR_INITATOR, fcrLog.CategoryName AS FCR_CATETORY, fcrLog.TDCRecDate AS DATE_RECEIVE, fcrLog.FCRIssueDate AS DATE_ISSUE, fcrLog.ConReturnDate AS DATE_RETURN, fcrLog.DesignReason AS Design_Reason_Related_With, fcrLog.CDIName AS FCR_CDI, fcrLog.Remark, eproject.ProjectControl_JobStatus, eproject.ProjectControl_LeadByName, CONVERT(VARCHAR(10), eproject.CM_MA_MC, 23) AS MC_Date, CONVERT(VARCHAR(10), ProjectControl_ClosedDate, 23) AS Closed_Date FROM Editor_FCRLog AS fcrLog LEFT JOIN dbo.Editor_EProject AS eproject ON eproject.EProjectId = fcrLog.EProjectId WHERE 1=1 "; List listStr = new List(); if (!string.IsNullOrEmpty(this.txtJobNo.Text.Trim())) { strSql += " AND eproject.ProjectControl_JobNo LIKE @JobNO "; listStr.Add(new SqlParameter("@JobNO", this.txtJobNo.Text.Trim() + "%")); } SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); // 2.获取当前分页数据 //var table = this.GetPagedDataTable(Grid1, tb1); Grid1.RecordCount = tb.Rows.Count; tb = GetFilteredTable(Grid1.FilteredData, tb); var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } #endregion #region 过滤表头 /// /// 过滤表头 /// /// /// protected void Grid1_FilterChange(object sender, EventArgs e) { BindGrid(); } /// /// 根据表头信息过滤列表数据 /// /// /// /// /// /// private bool FilterDataRowItemImplement(object sourceObj, string fillteredOperator, object fillteredObj, string column) { bool valid = false; if (column == "ProjectControl_JobNo") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "DisciplineName") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "FCRNo") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "FCR_COST") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "FCR_COST_CNY") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "FCR_SCH") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "FCR_SCH_DAY") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "FCR_INITATOR") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "FCR_CATETORY") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "DATE_RECEIVE") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "DATE_ISSUE") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "DATE_RETURN") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "FCR_CDI") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "Remark") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } return valid; } #endregion #region 查询 /// /// 下拉框选择事件 /// /// /// protected void btnSearch_Click(object sender, EventArgs e) { BindGrid(); } #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 btnExport_Click(object sender, EventArgs e) { string rootPath = Server.MapPath("~/") + Const.ExcelUrl; //模板文件 string TempletFileName = rootPath + "FCR_Report.xlsx"; //导出文件 string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string ReportFileName = filePath + "out.xlsx"; FileStream file = new FileStream(TempletFileName, FileMode.Open, FileAccess.Read); XSSFWorkbook hssfworkbook = new XSSFWorkbook(file); #region FCR_Report XSSFSheet reportModel = (XSSFSheet)hssfworkbook.GetSheet("FCR_Report"); XSSFFont cs_content_Font = (XSSFFont)hssfworkbook.CreateFont(); //创建字体 cs_content_Font.FontName = "sans-serif";//字体 cs_content_Font.FontHeightInPoints = 10; //字体大小 IDataFormat dataformat = hssfworkbook.CreateDataFormat(); ICellStyle styleDate = hssfworkbook.CreateCellStyle(); styleDate.DataFormat = dataformat.GetFormat("yyyy/m/d"); var list = (from x in Funs.DB.View_FCR_Report orderby x.ProjectControl_JobNo descending select x).ToList(); if (!string.IsNullOrEmpty(this.txtJobNo.Text.Trim())) { list = list.Where(x => x.ProjectControl_JobNo.Contains(this.txtJobNo.Text.Trim())).ToList(); } if (list.Count > 0) { var rowIndex = 1; foreach (var itemOver in list) { if (reportModel.GetRow(rowIndex) == null) reportModel.CreateRow(rowIndex); #region 列赋值 //Job No. if (reportModel.GetRow(rowIndex).GetCell(0) == null) reportModel.GetRow(rowIndex).CreateCell(0); reportModel.GetRow(rowIndex).GetCell(0).SetCellValue(itemOver.ProjectControl_JobNo); reportModel.GetRow(rowIndex).GetCell(0).CellStyle.SetFont(cs_content_Font);//将字体绑定到样式 //FCR_DISC if (reportModel.GetRow(rowIndex).GetCell(1) == null) reportModel.GetRow(rowIndex).CreateCell(1); reportModel.GetRow(rowIndex).GetCell(1).SetCellValue(itemOver.DisciplineName); //FCR_NO if (reportModel.GetRow(rowIndex).GetCell(2) == null) reportModel.GetRow(rowIndex).CreateCell(2); reportModel.GetRow(rowIndex).GetCell(2).SetCellValue(itemOver.FCRNo); //FCR_COST if (reportModel.GetRow(rowIndex).GetCell(3) == null) reportModel.GetRow(rowIndex).CreateCell(3); reportModel.GetRow(rowIndex).GetCell(3).SetCellValue(itemOver.FCR_COST); //FCR_COST_CNY if (reportModel.GetRow(rowIndex).GetCell(4) == null) reportModel.GetRow(rowIndex).CreateCell(4); if (itemOver.FCR_COST_CNY.HasValue) { reportModel.GetRow(rowIndex).GetCell(4).SetCellValue(string.Format("{0:N}",itemOver.FCR_COST_CNY)); } //FCR_SCH if (reportModel.GetRow(rowIndex).GetCell(5) == null) reportModel.GetRow(rowIndex).CreateCell(5); reportModel.GetRow(rowIndex).GetCell(5).SetCellValue(itemOver.FCR_SCH); //FCR_SCH_DAY if (reportModel.GetRow(rowIndex).GetCell(6) == null) reportModel.GetRow(rowIndex).CreateCell(6); if (itemOver.FCR_SCH_DAY.HasValue) { reportModel.GetRow(rowIndex).GetCell(6).SetCellValue(Convert.ToDouble(itemOver.FCR_SCH_DAY)); } //FCR_INITATOR if (reportModel.GetRow(rowIndex).GetCell(7) == null) reportModel.GetRow(rowIndex).CreateCell(7); reportModel.GetRow(rowIndex).GetCell(7).SetCellValue(itemOver.FCR_INITATOR); //FCR_CATETORY if (reportModel.GetRow(rowIndex).GetCell(8) == null) reportModel.GetRow(rowIndex).CreateCell(8); reportModel.GetRow(rowIndex).GetCell(8).SetCellValue(itemOver.FCR_CATETORY); //DATE_RECEIVE if (reportModel.GetRow(rowIndex).GetCell(9) == null) reportModel.GetRow(rowIndex).CreateCell(9); if (itemOver.DATE_RECEIVE.HasValue) { reportModel.GetRow(rowIndex).GetCell(9).SetCellValue((DateTime)itemOver.DATE_RECEIVE.Value); reportModel.GetRow(rowIndex).GetCell(9).CellStyle = styleDate; } //DATE_ISSUE if (reportModel.GetRow(rowIndex).GetCell(10) == null) reportModel.GetRow(rowIndex).CreateCell(10); if (itemOver.DATE_ISSUE.HasValue) { reportModel.GetRow(rowIndex).GetCell(10).SetCellValue((DateTime)itemOver.DATE_ISSUE.Value); reportModel.GetRow(rowIndex).GetCell(10).CellStyle = styleDate; } //reportModel.GetRow(rowIndex).GetCell(10).SetCellValue(itemOver.DATE_ISSUE.HasValue?string.Format("{0:yyyy-MM-dd}",itemOver.DATE_ISSUE):""); //DATE_RETURN if (reportModel.GetRow(rowIndex).GetCell(11) == null) reportModel.GetRow(rowIndex).CreateCell(11); if (itemOver.DATE_RETURN.HasValue) { reportModel.GetRow(rowIndex).GetCell(11).SetCellValue((DateTime)itemOver.DATE_RETURN.Value); reportModel.GetRow(rowIndex).GetCell(11).CellStyle = styleDate; } //Design_Reason_Related_With if (reportModel.GetRow(rowIndex).GetCell(12) == null) reportModel.GetRow(rowIndex).CreateCell(12); reportModel.GetRow(rowIndex).GetCell(12).SetCellValue(itemOver.Design_Reason_Related_With); //FCR_CDI if (reportModel.GetRow(rowIndex).GetCell(13) == null) reportModel.GetRow(rowIndex).CreateCell(13); reportModel.GetRow(rowIndex).GetCell(13).SetCellValue(itemOver.FCR_CDI); //Remarks if (reportModel.GetRow(rowIndex).GetCell(14) == null) reportModel.GetRow(rowIndex).CreateCell(14); reportModel.GetRow(rowIndex).GetCell(14).SetCellValue(itemOver.Remark); //Job Status if (reportModel.GetRow(rowIndex).GetCell(15) == null) reportModel.GetRow(rowIndex).CreateCell(15); reportModel.GetRow(rowIndex).GetCell(15).SetCellValue(itemOver.ProjectControl_JobStatus); //Close(Act) if (reportModel.GetRow(rowIndex).GetCell(16) == null) reportModel.GetRow(rowIndex).CreateCell(16); if (!string.IsNullOrEmpty(itemOver.Closed_Date)) { reportModel.GetRow(rowIndex).GetCell(16).SetCellValue((DateTime)Convert.ToDateTime(itemOver.Closed_Date.ToString())); reportModel.GetRow(rowIndex).GetCell(16).CellStyle = styleDate; } //MC (Act) if (reportModel.GetRow(rowIndex).GetCell(17) == null) reportModel.GetRow(rowIndex).CreateCell(17); if (!string.IsNullOrEmpty(itemOver.MC_Date)) { reportModel.GetRow(rowIndex).GetCell(17).SetCellValue((DateTime)Convert.ToDateTime(itemOver.MC_Date.ToString())); reportModel.GetRow(rowIndex).GetCell(17).CellStyle = styleDate; } //Lead By if (reportModel.GetRow(rowIndex).GetCell(18) == null) reportModel.GetRow(rowIndex).CreateCell(18); reportModel.GetRow(rowIndex).GetCell(18).SetCellValue(itemOver.ProjectControl_LeadByName); #endregion rowIndex++; } } #endregion reportModel.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=P23_FCR_Report_" + Server.UrlEncode(DateTime.Now.ToString("yyyyMMddhhmmss") + ".xlsx")); // 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHeader("Content-Length", filet.Length.ToString()); // 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = "application/ms-excel"; // 把文件流发送到客户端 Response.WriteFile(filet.FullName); // 停止页面的执行 Response.End(); } #endregion #region 权限设置 /// /// 菜单按钮权限 /// private void GetButtonPower() { var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.FCRReportMenuId); if (buttonList.Count() > 0) { if (buttonList.Contains(BLL.Const.BtnOut)) { this.btnExport.Hidden = false; } } } #endregion } }