Basf_FCL/FCL/FineUIPro.Web/CPT/CPTReportList.aspx.cs

1176 lines
66 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 Model;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace FineUIPro.Web.CPT
{
public partial class CPTReportList : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 绑定表格
BindGrid();
if (CurrUser.Account == Const.Gly)
{
this.btnDelete.Hidden = false;
}
else
{
this.btnDelete.Hidden = true;
}
}
}
#region
/// <summary>
/// 绑定CPTlist
/// </summary>
private void BindGrid(string CPT_No = "")
{
string strSql = @"SELECT cpt.ID,cpt.CPT_No,cpt.Contract_No,
(cpt.ContractorEng+' '+cpt.ContractorCN) AS Contractor,
cpt.FC_Desctription,cpt.Report_Date,ps.PriceScheme,
cpt.FC_Start_Date,cpt.FC_End_Date,u.UserName
FROM dbo.CPTList cpt
LEFT JOIN dbo.Base_PriceScheme ps ON ps.PriceSchemeId=cpt.FC_Price_Scheme
LEFT JOIN dbo.Sys_User u ON u.UserId = cpt.UserId
WHERE 1=1";
List<SqlParameter> listStr = new List<SqlParameter>();
if (!string.IsNullOrEmpty(txtContract_No.Text))
{
strSql = strSql + " AND cpt.Contract_No=@Contract_No";
listStr.Add(new SqlParameter("@Contract_No", txtContract_No.Text.Trim()));
}
if (!string.IsNullOrEmpty(CPT_No))
{
strSql = strSql + " AND CHARINDEX(cpt.CPT_No,@CPT_No)>0";
//strSql = strSql + " AND cpt.CPT_No=@CPT_No";
listStr.Add(new SqlParameter("@CPT_No", CPT_No));
}
strSql = strSql + " ORDER BY cpt.Report_Date DESC";
SqlParameter[] parameter = listStr.ToArray();
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
Grid1.RecordCount = dt.Rows.Count;
var table = this.GetPagedDataTable(Grid1, dt);
Grid1.DataSource = table;
Grid1.DataBind();
//List<CPTList> sesCPTList = new List<CPTList>();
//Expression<Func<CPTList, bool>> express = PredicateExtensions.True<CPTList>();
//if (!string.IsNullOrEmpty(txtContract_No.Text))
//{
// express = express.And(p => p.Contract_No == txtContract_No.Text.Trim());
//}
//if (!string.IsNullOrEmpty(CPT_No))
//{
// express = express.And(p => p.CPT_No == CPT_No.Trim());
//}
//sesCPTList = Funs.DB.CPTList.Where(express).OrderByDescending(p => p.Report_Date).ToList();
//Grid1.RecordCount = sesCPTList.Count;
//var table = this.GetPagedDataTable(Grid1, sesCPTList);
//Grid1.DataSource = table;
//Grid1.DataBind();
}
/// <summary>
/// 绑定SESList
/// </summary>
private void BindGrid1(string CPT_No)
{
if (!string.IsNullOrEmpty(CPT_No))
{
string strSql = @" SELECT * FROM dbo.SESList WHERE CPT_No=@CPT_No";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@CPT_No", CPT_No));
SqlParameter[] parameter = listStr.ToArray();
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
Grid2.RecordCount = dt.Rows.Count;
//var table = this.GetPagedDataTable(Grid2, tb);
Grid2.DataSource = dt;
Grid2.DataBind();
//List<SESList> sesSESList = new List<SESList>();
//Expression<Func<SESList, bool>> express = PredicateExtensions.True<SESList>();
//express = express.And(p => p.CPT_No == CPT_No);
//if (!string.IsNullOrEmpty(SES_No))
//{
// express = express.And(p => p.SES == SES_No.Trim());
//}
//sesSESList = Funs.DB.SESList.Where(express).OrderByDescending(p => p.Submit_Date).ToList();
//Grid2.DataSource = sesSESList;
//Grid2.DataBind();
}
else
{
Grid2.DataSource = null;
Grid2.DataBind();
}
}
#endregion
#region
/// <summary>
/// 打印
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//protected void btnView_Click(object sender, EventArgs e)
//{
// if (Grid1.SelectedRowIndexArray.Length == 0)
// {
// Alert.ShowInParent("Please select at least one record!");
// return;
// }
// string No = Grid1.SelectedRowID;
// PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("../Report/ReportPrint.aspx?report=3&CptNo=" + No + "", "Print - ")));
//}
/// <summary>
/// 右键编辑事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//protected void btnMenuEdit_Click(object sender, EventArgs e)
//{
// btnView_Click(null, null);
//}
/// <summary>
/// Grid行双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
//{
// btnView_Click(null, null);
//}
#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>
/// <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>
/// <param name="sender"></param>
/// <param name="e"></param>
//protected void btnPrint_Click(object sender, EventArgs e)
//{
// if (Grid1.SelectedRowIndexArray.Length == 0)
// {
// Alert.ShowInParent("Please select at least one record!");
// return;
// }
// string No = Grid1.SelectedRowID;
// PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("../Report/ReportPrint.aspx?report=3&CptNo=" + No + "", "Print - ")));
//}
#endregion
#region
protected void btnDelete_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
{
var cptList = from x in Funs.DB.CPTList where x.CPT_No == Grid1.SelectedRowID select x;
var sesList = from x in Funs.DB.SESList where x.CPT_No == Grid1.SelectedRowID select x;
var sesNoList = sesList.Select(p => p.SES).ToList();
var deleteReportCpt = from x in Funs.DB.FC_SESReportToCPT where sesNoList.Contains(x.SES_No) select x;
Funs.DB.FC_SESReportToCPT.DeleteAllOnSubmit(deleteReportCpt);
Funs.DB.SESList.DeleteAllOnSubmit(sesList);
Funs.DB.CPTList.DeleteAllOnSubmit(cptList);
Funs.DB.SubmitChanges();
BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Delete CPT");
// 重新绑定表格
BindGrid();
BindGrid1("");
ShowNotify("Delete successfully!", MessageBoxIcon.Success);
}
else
{
Alert.ShowInParent("Please select at least one record!");
return;
}
}
#endregion
#region
/// <summary>
/// 搜索
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSearch_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtSES_No.Text.Trim()))
{
List<Model.SESList> sesModel = null;
if (txtSES_No.Text.Trim().Contains(",") || txtSES_No.Text.Trim().Contains(""))
{
if (txtSES_No.Text.Trim().Contains(","))
{
string[] sesList = txtSES_No.Text.Trim().Split(',').ToArray();
sesModel = Funs.DB.SESList.Where(p => sesList.Contains(p.SES)).ToList();
}
else
{
string[] sesList = txtSES_No.Text.Trim().Split('').ToArray();
sesModel = Funs.DB.SESList.Where(p => sesList.Contains(p.SES)).ToList();
}
}
else
{
sesModel = Funs.DB.SESList.Where(p => p.SES == txtSES_No.Text.Trim()).ToList();
}
//var sesModel = Funs.DB.SESList.Where(p => sesList.Contains(p.SES));
if (sesModel != null)
{
if (sesModel.Count() == 1)
{
BindGrid(sesModel.First().CPT_No.Trim());
BindGrid1(sesModel.First().CPT_No.Trim());
var sesCPTModel = Funs.DB.CPTList.Where(p => p.CPT_No == sesModel.First().CPT_No.Trim()).OrderByDescending(p => p.Report_Date).FirstOrDefault();
var UserSESRelatedData = Funs.DB.View_FC_SESRelatedData.FirstOrDefault(p => p.FO_NO == sesCPTModel.Contract_No);
Alert.ShowInTop("CPT No:" + sesModel.First().CPT_No + "Contract No. (" + sesCPTModel.Contract_No + ")Contract Admin (" + UserSESRelatedData.Contract_Admin + ")", MessageBoxIcon.Information);
return;
}
else
{
string[] cpt = sesModel.Select(p => p.CPT_No).ToArray();
string cptList = string.Join(",", cpt);
BindGrid(cptList);
BindGrid1("");
}
}
else
{
Alert.ShowInTop("No CPTNo Contract No.No Contract Admin", MessageBoxIcon.Information);
return;
}
}
else
{
BindGrid();
}
}
#endregion
#region
/// <summary>
/// 承包商
/// </summary>
/// <param name="con"></param>
/// <returns></returns>
protected string ConvertContract(object con)
{
if (con != null)
{
var contractor = BLL.ContractorService.GetContractorById(con.ToString());
if (contractor != null)
{
return contractor.Contractor + contractor.ContractorCN;
}
}
return null;
}
protected string ConvertPriceScheme(object ps)
{
if (ps != null)
{
var priceScheme = BLL.PriceSchemeService.GetPriceSchemeById(ps.ToString());
if (priceScheme != null)
{
return priceScheme.PriceScheme;
}
}
return null;
}
#endregion
#region
/// <summary>
/// 导出
/// </summary>
protected void btnExport_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInParent("Please select at least one record!");
return;
}
string cptNo = Grid1.SelectedRowID;
string rootPath = Server.MapPath("~/") + Const.ExcelUrl;
//模板文件
string TempletFileName = rootPath + "CPTReport.xlsx";
//导出文件
string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\";
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string ReportFileName = filePath + "out.xls";
FileStream file = new FileStream(TempletFileName, FileMode.Open, FileAccess.Read);
XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
XSSFSheet ws = (XSSFSheet)hssfworkbook.GetSheetAt(0);
var cptModel = Funs.DB.CPTList.FirstOrDefault(p => p.CPT_No == cptNo);
if (cptModel != null)
{
//CTE/D_Manager经理
var CTED_List = from a in Funs.DB.Sys_User
join b in Funs.DB.Sys_Role
on a.RoleId equals b.RoleId
where a.IsPost == true && b.RoleName.Contains("CTE/D Manager")
select new { a.UserName, a.ChineseName };
var CT_Director = from x in Funs.DB.Sys_User
join y in Funs.DB.Sys_Role on x.RoleId equals y.RoleId
where x.UserId == cptModel.CT_Director
select new { x.UserName, x.ChineseName };
var CT_GM = from x in Funs.DB.Sys_User
join y in Funs.DB.Sys_Role on x.RoleId equals y.RoleId
where x.IsPost == true && y.RoleName.Contains("CT GM")
select new { x.UserName, x.ChineseName };
var basePriceScheme = Funs.DB.Base_PriceScheme.FirstOrDefault(p => p.PriceSchemeId == cptModel.FC_Price_Scheme);
var cptMainModel = Funs.DB.FC_SESReportToCPT.Where(p => p.FO == cptModel.Contract_No).ToList();
var sesData = Funs.DB.FC_SESRelatedData.FirstOrDefault(p => p.FO_NO == cptModel.Contract_No);
var UserSESRelatedData = Funs.DB.View_FC_SESRelatedData.FirstOrDefault(p => p.FO_NO == cptModel.Contract_No);
var conUser = BLL.Sys_UserService.GetUsersByUserId(cptModel.UserId);
#region
//创建时间
if (ws.GetRow(0).GetCell(1) == null) ws.GetRow(1).CreateCell(0);
ws.GetRow(1).GetCell(0).SetCellValue(string.Format("{0:yyyy/MM/dd HH:mm:ss}", cptModel.Report_Date));
//CPT_No
if (ws.GetRow(0).GetCell(14) == null) ws.GetRow(0).CreateCell(14);
ws.GetRow(0).GetCell(14).SetCellValue("CPT No. " + cptModel.CPT_No);
//Contract No.合同号
if (ws.GetRow(6).GetCell(3) == null) ws.GetRow(6).CreateCell(3);
ws.GetRow(6).GetCell(3).SetCellValue(cptModel.Contract_No);
//Contractor 承包商
if (ws.GetRow(10).GetCell(3) == null) ws.GetRow(10).CreateCell(3);
ws.GetRow(10).GetCell(3).SetCellValue(cptModel.ContractorEng + "\n" + cptModel.ContractorCN);
//FC Description 框架合同描
if (ws.GetRow(14).GetCell(3) == null) ws.GetRow(14).CreateCell(3);
ws.GetRow(14).GetCell(3).SetCellValue(UserSESRelatedData.Discipline_Eng + "\n" + UserSESRelatedData.Discipline_CN);
//FC Price scheme 承包商价格方案
if (ws.GetRow(18).GetCell(3) == null) ws.GetRow(18).CreateCell(3);
ws.GetRow(18).GetCell(3).SetCellValue(UserSESRelatedData.Pricing_Scheme);
//FC Valid period 框架合同有效期开始日期
if (ws.GetRow(22).GetCell(3) == null) ws.GetRow(22).CreateCell(3);
ws.GetRow(22).GetCell(3).SetCellValue(UserSESRelatedData.Validate_Date.HasValue ? string.Format("{0:yyyy-MM-dd}", UserSESRelatedData.Validate_Date) : "");
//结束日期
if (ws.GetRow(22).GetCell(7) == null) ws.GetRow(22).CreateCell(7);
ws.GetRow(22).GetCell(7).SetCellValue(UserSESRelatedData.Expire_Date.HasValue ? string.Format("{0:yyyy-MM-dd}", UserSESRelatedData.Expire_Date) : "");
//Amount to be paid (Net) 应付净额
if (ws.GetRow(34).GetCell(0) == null) ws.GetRow(34).CreateCell(0);
ws.GetRow(34).GetCell(0).SetCellValue(cptModel.Net_Amount != null ? string.Format("{0:N}", cptModel.Net_Amount.Value) : "0");//cptModel.Net_Amount.Value.ToString("0.##") : "0");
//Amount to be paid (Including tax)应付含税额
if (ws.GetRow(34).GetCell(3) == null) ws.GetRow(34).CreateCell(3);
decimal? taxAmount = Funs.GetNewDecimal(cptModel.Tax_Amount);
ws.GetRow(34).GetCell(3).SetCellValue(taxAmount != null ? string.Format("{0:N}", taxAmount) : "0");//(cptModel.Tax_Amount);
//Tax税率
if (ws.GetRow(34).GetCell(7) == null) ws.GetRow(34).CreateCell(7);
ws.GetRow(34).GetCell(7).SetCellValue(cptModel.Tax != null ? (cptModel.Tax.Value * 100).ToString("0.##") + "%" : "0");
//Currency币种
if (ws.GetRow(34).GetCell(8) == null) ws.GetRow(34).CreateCell(8);
ws.GetRow(34).GetCell(8).SetCellValue(cptModel.Currency);
//Last Payment of This Contract本合同最后一笔付款Y/N
if (ws.GetRow(38).GetCell(7) == null) ws.GetRow(38).CreateCell(7);
ws.GetRow(38).GetCell(7).SetCellValue(cptModel.Last_Payment);
#endregion
#region
//Contract Administrator合同员
if (ws.GetRow(10).GetCell(12) == null) ws.GetRow(10).CreateCell(12);
ws.GetRow(10).GetCell(12).SetCellValue(conUser != null ? conUser.UserName + "\n" + conUser.ChineseName : "");
//ws.GetRow(10).GetCell(12).SetCellValue(UserSESRelatedData != null ? UserSESRelatedData.Contract_Admin + "\n" + UserSESRelatedData.ChineseName : "");
//CTE/D Manager CTE/D 经理
if (ws.GetRow(14).GetCell(12) == null) ws.GetRow(14).CreateCell(12);
ws.GetRow(14).GetCell(12).SetCellValue(CTED_List != null && CTED_List.Count() > 0 ? CTED_List.FirstOrDefault().UserName + "\n" + CTED_List.FirstOrDefault().ChineseName : "");
//时间进程,费用进程
if (sesData != null)
{
bool timebool = true;
float timeProgress = 0f;
#region
if ((sesData.Validate_Date != null && sesData.Expire_Date != null))
{
//开始日期大于结束日期肯定为数据错误默认为0
if (sesData.Validate_Date < sesData.Expire_Date)
{
//开始日期大于当前日期为0
if (sesData.Validate_Date > DateTime.Now)
{
timebool = false;
timeProgress = 0;
}
//结束日期小于当前日期
if (sesData.Expire_Date < DateTime.Now)
{
timebool = false;
timeProgress = 1;
}
if (timebool)
{
float nowSpan = GetTimeSpan(sesData.Validate_Date.Value, DateTime.Now);
float allSpan = GetTimeSpan(sesData.Validate_Date.Value, sesData.Expire_Date.Value);
timeProgress = nowSpan / allSpan;
}
//Time Progress 时间进程
if (ws.GetRow(19).GetCell(12) == null) ws.GetRow(19).CreateCell(12);
ws.GetRow(19).GetCell(12).SetCellValue(timeProgress);
}
}
#endregion
#region
float coseProgress = 0f;
decimal? actualNet = BLL.CPTListService.getSumNetValueByFo(cptModel.Contract_No);
if (sesData.Actual_Budget != null && actualNet != null)
{
float actual = (float)actualNet;
float total = (float)sesData.Actual_Budget;
coseProgress = actual / total;
//Cost Progres 费用进程
if (ws.GetRow(12).GetCell(13) == null) ws.GetRow(23).CreateCell(12);
ws.GetRow(23).GetCell(12).SetCellValue(coseProgress);
}
#endregion
}
//CT Director CT总监 打印体姓名
if (ws.GetRow(34).GetCell(12) == null) ws.GetRow(34).CreateCell(12);
ws.GetRow(34).GetCell(12).SetCellValue(CT_Director != null && CT_Director.Count() > 0 ? CT_Director.FirstOrDefault().UserName + "\n" + CT_Director.FirstOrDefault().ChineseName : "");
//CT GM CT总经理 打印体姓名
if (ws.GetRow(38).GetCell(12) == null) ws.GetRow(38).CreateCell(12);
ws.GetRow(38).GetCell(12).SetCellValue(CT_GM != null && CT_GM.Count() > 0 ? CT_GM.FirstOrDefault().UserName + "\n" + CT_GM.FirstOrDefault().ChineseName : "N/A");
//CT Director CT总监 签字 CT GM CT总经理 签字
if (taxAmount != null && taxAmount <= 300000)
{
if (ws.GetRow(34).GetCell(14) == null) ws.GetRow(38).CreateCell(14);
ws.GetRow(34).GetCell(14).SetCellValue("N/A");
if (ws.GetRow(38).GetCell(14) == null) ws.GetRow(38).CreateCell(14);
ws.GetRow(38).GetCell(14).SetCellValue("N/A");
}
else if (taxAmount != null && taxAmount <= 500000)
{
if (ws.GetRow(38).GetCell(14) == null) ws.GetRow(38).CreateCell(14);
ws.GetRow(38).GetCell(14).SetCellValue("N/A");
}
#endregion
#region Remark
if (ws.GetRow(43).GetCell(0) == null) ws.GetRow(43).CreateCell(0);
ws.GetRow(43).GetCell(0).SetCellValue("Remark 备注:" + " \n\n\n\n\n\n\n\n\n\n ");
if (cptMainModel.Count > 0)
{
if (cptMainModel.Count(p => !string.IsNullOrEmpty(p.WBS) || !string.IsNullOrEmpty(p.Network)) > 0)
{
//var webOrNetWork = from x in cptMainModel
// join y in Funs.DB.FC_SESRelatedData on x.FO equals y.FO_NO
// where (!string.IsNullOrEmpty(x.WBS) || !string.IsNullOrEmpty(x.Network))
// && y.ConstRecords == "Y"
// select x;
var webOrNetWork = from x in Funs.DB.SESList
join y in Funs.DB.FC_SESReportToCPT on x.SES equals y.SES_No
join z in Funs.DB.FC_SESRelatedData on y.FO equals z.FO_NO
where x.CPT_No == cptNo && z.ConstRecords == "Y"
&& ((y.WBS != null && y.WBS != "") || (y.Network != null && y.Network != ""))
select x;
if (webOrNetWork.Count() > 0)
{
var q = from x in webOrNetWork select x.SES;
//var webOrNetWork = cptMainModel.Where(p => !string.IsNullOrEmpty(p.WBS) || !string.IsNullOrEmpty(p.Network)).Select(p => p.SES_No).ToList();
ws.GetRow(43).GetCell(0).SetCellValue("Remark 备注Construction records possibly needed /可能需要交工资料的:\n" + string.Join("/", q) + " \n\n\n\n\n\n\n\n Please refer to the “Confirmation of Construction Records Submission” enclosed for the status of submission.交工资料提交情况请见后附的“交工资料提交确认”。");
}
}
}
#endregion
#region
if (ws.GetRow(61).GetCell(14) == null) ws.GetRow(61).CreateCell(14);
ws.GetRow(61).GetCell(14).SetCellValue("CPT No. " + cptModel.CPT_No);
var sesSESList = Funs.DB.SESList.Where(p => p.CPT_No == cptNo).ToList();
int i = 1;
int rowindex = 65;
//全局边框靠右
ICellStyle style = hssfworkbook.CreateCellStyle();
style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
style.VerticalAlignment = VerticalAlignment.Center;
style.Alignment = HorizontalAlignment.Right;
//全局边框靠左
ICellStyle style1 = hssfworkbook.CreateCellStyle();
style1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
style1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
style1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
style1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
style1.VerticalAlignment = VerticalAlignment.Center;
style1.Alignment = HorizontalAlignment.Left;
//全局边框靠右千分位
IDataFormat dataformat = hssfworkbook.CreateDataFormat();
ICellStyle styleQfw = hssfworkbook.CreateCellStyle();
styleQfw.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
styleQfw.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
styleQfw.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
styleQfw.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
styleQfw.VerticalAlignment = VerticalAlignment.Center;
styleQfw.Alignment = HorizontalAlignment.Right;
styleQfw.DataFormat = dataformat.GetFormat("#,##0.00");
#region
//列头边框
ICellStyle titleStyle = hssfworkbook.CreateCellStyle();
titleStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle.Alignment = HorizontalAlignment.Left;
//字体
IFont font = hssfworkbook.CreateFont();
font.FontHeightInPoints = 10;
font.IsBold = false;
font.FontName = "Arial";
titleStyle.SetFont(font);
//背景色
titleStyle.FillPattern = FillPattern.SolidForeground;
titleStyle.FillForegroundColor = HSSFColor.LightYellow.Index;
//列头边框1
ICellStyle titleStyle1 = hssfworkbook.CreateCellStyle();
titleStyle1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle1.Alignment = HorizontalAlignment.Left;
//字体
IFont font1 = hssfworkbook.CreateFont();
font1.FontHeightInPoints = 10;
font1.IsBold = true;
font1.FontName = "Arial";
titleStyle1.SetFont(font1);
//列头边框2
ICellStyle titleStyle2 = hssfworkbook.CreateCellStyle();
titleStyle2.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle2.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle2.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle2.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
titleStyle2.Alignment = HorizontalAlignment.Left;
//字体
IFont font2 = hssfworkbook.CreateFont();
font2.FontHeightInPoints = 10;
font2.IsBold = false;
font2.FontName = "Arial";
titleStyle2.SetFont(font2);
//背景色
titleStyle2.FillPattern = FillPattern.SolidForeground;
titleStyle2.FillForegroundColor = HSSFColor.Grey50Percent.Index;
#endregion
foreach (var itemSes in sesSESList)
{
ws.CreateRow(rowindex);
ws.GetRow(rowindex).HeightInPoints = 19.8f;
//添加表头
if (i % 33 == 0)
{
if (ws.GetRow(rowindex) == null) ws.CreateRow(rowindex);
if (ws.GetRow(rowindex + 1) == null) ws.CreateRow(rowindex + 1);
ws.GetRow(rowindex + 1).HeightInPoints = 19.8f;
if (ws.GetRow(rowindex + 2) == null) ws.CreateRow(rowindex + 2);
ws.GetRow(rowindex + 2).HeightInPoints = 19.8f;
if (ws.GetRow(rowindex + 3) == null) ws.CreateRow(rowindex + 3);
ws.GetRow(rowindex + 3).HeightInPoints = 19.8f;
if (ws.GetRow(rowindex + 4) == null) ws.CreateRow(rowindex + 4);
ws.GetRow(rowindex + 4).HeightInPoints = 19.8f;
if (i == 33)
{
if (ws.GetRow(rowindex + 5) == null) ws.CreateRow(rowindex + 5);
ws.GetRow(rowindex + 5).HeightInPoints = 19.8f;
rowindex = rowindex + 6;
}
else
{
rowindex = rowindex + 5;
}
#region cpt标题
//字体
ICellStyle cptStyle1 = hssfworkbook.CreateCellStyle();
cptStyle1.BorderBottom = NPOI.SS.UserModel.BorderStyle.None;
cptStyle1.BorderLeft = NPOI.SS.UserModel.BorderStyle.None;
cptStyle1.BorderRight = NPOI.SS.UserModel.BorderStyle.None;
cptStyle1.BorderTop = NPOI.SS.UserModel.BorderStyle.None;
cptStyle1.VerticalAlignment = VerticalAlignment.Center;
cptStyle1.Alignment = HorizontalAlignment.Right;
//字体
IFont cptfont = hssfworkbook.CreateFont();
cptfont.FontHeightInPoints = 14;
cptfont.IsBold = false;
cptfont.FontName = "Arial";
cptStyle1.SetFont(cptfont);
//创建
ws.CreateRow(rowindex - 1);
ws.CreateRow(rowindex - 2);
ws.GetRow(rowindex - 1).HeightInPoints = ws.GetRow(rowindex - 2).HeightInPoints = 19.8f;
//赋值
var regiont = new CellRangeAddress(rowindex - 2, rowindex - 1, 14, 18);
ws.AddMergedRegion(regiont);
if (ws.GetRow(rowindex - 2).GetCell(14) == null) ws.GetRow(rowindex - 2).CreateCell(14);
ws.GetRow(rowindex - 2).GetCell(14).SetCellValue("CPT No. " + cptModel.CPT_No);
ws.GetRow(rowindex - 2).GetCell(14).CellStyle = cptStyle1;
#endregion
#region 1
//列1
if (ws.GetRow(rowindex) == null) ws.CreateRow(rowindex);
if (ws.GetRow(rowindex).GetCell(0) == null) ws.GetRow(rowindex).CreateCell(0);
ws.GetRow(rowindex).GetCell(0).SetCellValue("");
ws.GetRow(rowindex).GetCell(0).CellStyle = titleStyle;
//列2
if (ws.GetRow(rowindex).GetCell(1) == null) ws.GetRow(rowindex).CreateCell(1);
if (ws.GetRow(rowindex).GetCell(2) == null) ws.GetRow(rowindex).CreateCell(2);
if (ws.GetRow(rowindex).GetCell(3) == null) ws.GetRow(rowindex).CreateCell(3);
if (ws.GetRow(rowindex).GetCell(4) == null) ws.GetRow(rowindex).CreateCell(4);
if (ws.GetRow(rowindex).GetCell(5) == null) ws.GetRow(rowindex).CreateCell(5);
if (ws.GetRow(rowindex).GetCell(6) == null) ws.GetRow(rowindex).CreateCell(6);
if (ws.GetRow(rowindex).GetCell(7) == null) ws.GetRow(rowindex).CreateCell(7);
regiont = new CellRangeAddress(rowindex, rowindex, 1, 7);
ws.AddMergedRegion(regiont);
ws.GetRow(rowindex).GetCell(1).SetCellValue("Basic information");
ws.GetRow(rowindex).GetCell(1).CellStyle = ws.GetRow(rowindex).GetCell(2).CellStyle = ws.GetRow(rowindex).GetCell(3).CellStyle = ws.GetRow(rowindex).GetCell(4).CellStyle = ws.GetRow(rowindex).GetCell(5).CellStyle = ws.GetRow(rowindex).GetCell(6).CellStyle = ws.GetRow(rowindex).GetCell(7).CellStyle = titleStyle;
//列3
//if (ws.GetRow(rowindex).GetCell(7) == null) ws.GetRow(rowindex).CreateCell(7);
//if (ws.GetRow(rowindex).GetCell(8) == null) ws.GetRow(rowindex).CreateCell(8);
//regiont = new CellRangeAddress(rowindex, rowindex, 7, 8);
//ws.AddMergedRegion(regiont);
//ws.GetRow(rowindex).GetCell(7).SetCellValue("Work plan");
//ws.GetRow(rowindex).GetCell(7).CellStyle = ws.GetRow(rowindex).GetCell(8).CellStyle = titleStyle;
//列3
if (ws.GetRow(rowindex).GetCell(8) == null) ws.GetRow(rowindex).CreateCell(8);
if (ws.GetRow(rowindex).GetCell(9) == null) ws.GetRow(rowindex).CreateCell(9);
if (ws.GetRow(rowindex).GetCell(10) == null) ws.GetRow(rowindex).CreateCell(10);
if (ws.GetRow(rowindex).GetCell(11) == null) ws.GetRow(rowindex).CreateCell(11);
if (ws.GetRow(rowindex).GetCell(12) == null) ws.GetRow(rowindex).CreateCell(12);
regiont = new CellRangeAddress(rowindex, rowindex, 8, 12);
ws.AddMergedRegion(regiont);
ws.GetRow(rowindex).GetCell(8).SetCellValue("Value info");
ws.GetRow(rowindex).GetCell(8).CellStyle = ws.GetRow(rowindex).GetCell(9).CellStyle = ws.GetRow(rowindex).GetCell(10).CellStyle = ws.GetRow(rowindex).GetCell(11).CellStyle = ws.GetRow(rowindex).GetCell(12).CellStyle = titleStyle2;
//列4
if (ws.GetRow(rowindex).GetCell(13) == null) ws.GetRow(rowindex).CreateCell(13);
if (ws.GetRow(rowindex).GetCell(14) == null) ws.GetRow(rowindex).CreateCell(14);
regiont = new CellRangeAddress(rowindex, rowindex, 13, 14);
ws.AddMergedRegion(regiont);
ws.GetRow(rowindex).GetCell(13).SetCellValue("Budget management");
ws.GetRow(rowindex).GetCell(13).CellStyle = ws.GetRow(rowindex).GetCell(14).CellStyle = titleStyle;
//列5
if (ws.GetRow(rowindex).GetCell(15) == null) ws.GetRow(rowindex).CreateCell(15);
ws.GetRow(rowindex).GetCell(15).SetCellValue("Deduction");
ws.GetRow(rowindex).GetCell(15).CellStyle = titleStyle2;
//列6
if (ws.GetRow(rowindex).GetCell(16) == null) ws.GetRow(rowindex).CreateCell(16);
if (ws.GetRow(rowindex).GetCell(17) == null) ws.GetRow(rowindex).CreateCell(17);
if (ws.GetRow(rowindex).GetCell(18) == null) ws.GetRow(rowindex).CreateCell(18);
regiont = new CellRangeAddress(rowindex, rowindex, 16, 18);
ws.AddMergedRegion(regiont);
ws.GetRow(rowindex).GetCell(16).SetCellValue("Duration(Days)");
ws.GetRow(rowindex).GetCell(16).CellStyle = ws.GetRow(rowindex).GetCell(17).CellStyle = ws.GetRow(rowindex).GetCell(18).CellStyle = titleStyle;
#endregion
#region 2
if (ws.GetRow(rowindex + 1) == null) ws.CreateRow(rowindex + 1);
ws.GetRow(rowindex + 1).HeightInPoints = 19.8f;
//No.
if (ws.GetRow(rowindex + 1).GetCell(0) == null) ws.GetRow(rowindex + 1).CreateCell(0);
ws.GetRow(rowindex + 1).GetCell(0).SetCellValue("No.");
ws.GetRow(rowindex + 1).GetCell(0).CellStyle = titleStyle1;
//SES No.
if (ws.GetRow(rowindex + 1).GetCell(1) == null) ws.GetRow(rowindex + 1).CreateCell(1);
ws.GetRow(rowindex + 1).GetCell(1).SetCellValue("SES No.");
ws.GetRow(rowindex + 1).GetCell(1).CellStyle = titleStyle1;
//Short Description
regiont = new CellRangeAddress(rowindex + 1, rowindex + 1, 2, 7);
ws.AddMergedRegion(regiont);
if (ws.GetRow(rowindex + 1).GetCell(2) == null) ws.GetRow(rowindex + 1).CreateCell(2);
ws.GetRow(rowindex + 1).GetCell(2).SetCellValue("Short Description");
if (ws.GetRow(rowindex + 1).GetCell(3) == null) ws.GetRow(rowindex + 1).CreateCell(3);
if (ws.GetRow(rowindex + 1).GetCell(4) == null) ws.GetRow(rowindex + 1).CreateCell(4);
if (ws.GetRow(rowindex + 1).GetCell(5) == null) ws.GetRow(rowindex + 1).CreateCell(5);
if (ws.GetRow(rowindex + 1).GetCell(6) == null) ws.GetRow(rowindex + 1).CreateCell(6);
if (ws.GetRow(rowindex + 1).GetCell(7) == null) ws.GetRow(rowindex + 1).CreateCell(7);
ws.GetRow(rowindex + 1).GetCell(2).CellStyle = ws.GetRow(rowindex + 1).GetCell(3).CellStyle = ws.GetRow(rowindex + 1).GetCell(4).CellStyle = ws.GetRow(rowindex + 1).GetCell(5).CellStyle = ws.GetRow(rowindex + 1).GetCell(6).CellStyle = ws.GetRow(rowindex + 1).GetCell(7).CellStyle = titleStyle1;
//Start
//if (ws.GetRow(rowindex + 1).GetCell(7) == null) ws.GetRow(rowindex + 1).CreateCell(7);
//ws.GetRow(rowindex + 1).GetCell(7).SetCellValue("Start");
//ws.GetRow(rowindex + 1).GetCell(7).CellStyle = titleStyle1;
//End
//if (ws.GetRow(rowindex + 1).GetCell(8) == null) ws.GetRow(rowindex + 1).CreateCell(8);
//ws.GetRow(rowindex + 1).GetCell(8).SetCellValue("End");
//ws.GetRow(rowindex + 1).GetCell(8).CellStyle = titleStyle1;
//Budget(B)
if (ws.GetRow(rowindex + 1).GetCell(8) == null) ws.GetRow(rowindex + 1).CreateCell(8);
ws.GetRow(rowindex + 1).GetCell(8).SetCellValue("Budget(B)");
ws.GetRow(rowindex + 1).GetCell(8).CellStyle = titleStyle1;
//Quotation(Q)
if (ws.GetRow(rowindex + 1).GetCell(9) == null) ws.GetRow(rowindex + 1).CreateCell(9);
ws.GetRow(rowindex + 1).GetCell(9).SetCellValue("Quotation(Q)");
ws.GetRow(rowindex + 1).GetCell(9).CellStyle = titleStyle1;
//Net value(N)
if (ws.GetRow(rowindex + 1).GetCell(10) == null) ws.GetRow(rowindex + 1).CreateCell(10);
ws.GetRow(rowindex + 1).GetCell(10).SetCellValue("Net value(N)");
ws.GetRow(rowindex + 1).GetCell(10).CellStyle = titleStyle1;
//Incl. Tax(V)
if (ws.GetRow(rowindex + 1).GetCell(11) == null) ws.GetRow(rowindex + 1).CreateCell(11);
ws.GetRow(rowindex + 1).GetCell(11).SetCellValue("Incl. Tax(V)");
ws.GetRow(rowindex + 1).GetCell(11).CellStyle = titleStyle1;
//Punishment(P)
if (ws.GetRow(rowindex + 1).GetCell(12) == null) ws.GetRow(rowindex + 1).CreateCell(12);
ws.GetRow(rowindex + 1).GetCell(12).SetCellValue("Punishment(P)");
ws.GetRow(rowindex + 1).GetCell(12).CellStyle = titleStyle1;
//Deviation(N-B)改为Deviation(N+P/(1+Tax))-B
if (ws.GetRow(rowindex + 1).GetCell(13) == null) ws.GetRow(rowindex + 1).CreateCell(13);
ws.GetRow(rowindex + 1).GetCell(13).SetCellValue("Deviation");
ws.GetRow(rowindex + 1).GetCell(13).CellStyle = titleStyle1;
//By perc.(N-B)/B改为By perc.(N+P/(1+Tax)-B)/B
if (ws.GetRow(rowindex + 1).GetCell(14) == null) ws.GetRow(rowindex + 1).CreateCell(14);
ws.GetRow(rowindex + 1).GetCell(14).SetCellValue("By perc.");
ws.GetRow(rowindex + 1).GetCell(14).CellStyle = titleStyle1;
//Deduction(Q-V)
if (ws.GetRow(rowindex + 1).GetCell(15) == null) ws.GetRow(rowindex + 1).CreateCell(15);
ws.GetRow(rowindex + 1).GetCell(15).SetCellValue("Deduction(Q-(V+P))");
ws.GetRow(rowindex + 1).GetCell(15).CellStyle = titleStyle1;
//Con
if (ws.GetRow(rowindex + 1).GetCell(16) == null) ws.GetRow(rowindex + 1).CreateCell(16);
ws.GetRow(rowindex + 1).GetCell(16).SetCellValue("Con");
ws.GetRow(rowindex + 1).GetCell(16).CellStyle = titleStyle1;
//BoQ
if (ws.GetRow(rowindex + 1).GetCell(17) == null) ws.GetRow(rowindex + 1).CreateCell(17);
ws.GetRow(rowindex + 1).GetCell(17).SetCellValue("BoQ");
ws.GetRow(rowindex + 1).GetCell(17).CellStyle = titleStyle1;
//SES
if (ws.GetRow(rowindex + 1).GetCell(18) == null) ws.GetRow(rowindex + 1).CreateCell(18);
ws.GetRow(rowindex + 1).GetCell(18).SetCellValue("SES");
ws.GetRow(rowindex + 1).GetCell(18).CellStyle = titleStyle1;
#endregion
rowindex = rowindex + 2;
}
if (ws.GetRow(rowindex) == null) ws.CreateRow(rowindex);
ws.GetRow(rowindex).HeightInPoints = 19.8f;
//No.
if (ws.GetRow(rowindex).GetCell(0) == null) ws.GetRow(rowindex).CreateCell(0);
ws.GetRow(rowindex).GetCell(0).SetCellValue(i);
ws.GetRow(rowindex).GetCell(0).CellStyle = style;
//SES No.
if (ws.GetRow(rowindex).GetCell(1) == null) ws.GetRow(rowindex).CreateCell(1);
ws.GetRow(rowindex).GetCell(1).SetCellValue(itemSes.SES);
ws.GetRow(rowindex).GetCell(1).CellStyle = style;
//Short Description
CellRangeAddress regiond = new CellRangeAddress(rowindex, rowindex, 2, 7);
ws.AddMergedRegion(regiond);
if (ws.GetRow(rowindex).GetCell(2) == null) ws.GetRow(rowindex).CreateCell(2);
ws.GetRow(rowindex).GetCell(2).SetCellValue(itemSes.Short_Description);
if (ws.GetRow(rowindex).GetCell(3) == null) ws.GetRow(rowindex).CreateCell(3);
if (ws.GetRow(rowindex).GetCell(4) == null) ws.GetRow(rowindex).CreateCell(4);
if (ws.GetRow(rowindex).GetCell(5) == null) ws.GetRow(rowindex).CreateCell(5);
if (ws.GetRow(rowindex).GetCell(6) == null) ws.GetRow(rowindex).CreateCell(6);
if (ws.GetRow(rowindex).GetCell(7) == null) ws.GetRow(rowindex).CreateCell(7);
ws.GetRow(rowindex).GetCell(2).CellStyle = ws.GetRow(rowindex).GetCell(3).CellStyle = ws.GetRow(rowindex).GetCell(4).CellStyle = ws.GetRow(rowindex).GetCell(5).CellStyle = ws.GetRow(rowindex).GetCell(6).CellStyle = ws.GetRow(rowindex).GetCell(7).CellStyle = style1;
//Start
//if (ws.GetRow(rowindex).GetCell(7) == null) ws.GetRow(rowindex).CreateCell(7);
//ws.GetRow(rowindex).GetCell(7).SetCellValue(itemSes.Start_Date != null ? itemSes.Start_Date.Value.ToString("dd.MM.yyyy") : "");
//ws.GetRow(rowindex).GetCell(7).CellStyle = style;
//End
//if (ws.GetRow(rowindex).GetCell(8) == null) ws.GetRow(rowindex).CreateCell(8);
//ws.GetRow(rowindex).GetCell(8).SetCellValue(itemSes.End_Date != null ? itemSes.End_Date.Value.ToString("dd.MM.yyyy") : "");
//ws.GetRow(rowindex).GetCell(8).CellStyle = style;
//Budget(B)
if (ws.GetRow(rowindex).GetCell(8) == null) ws.GetRow(rowindex).CreateCell(8);
ws.GetRow(rowindex).GetCell(8).SetCellValue(itemSes.Budget != null ? (double)itemSes.Budget.Value : 0);
ws.GetRow(rowindex).GetCell(8).CellStyle = styleQfw;
//Quotation(Q)
if (ws.GetRow(rowindex).GetCell(9) == null) ws.GetRow(rowindex).CreateCell(9);
ws.GetRow(rowindex).GetCell(9).SetCellValue(itemSes.Quotation != null ? (double)itemSes.Quotation.Value : 0);
ws.GetRow(rowindex).GetCell(9).CellStyle = styleQfw;
//Net value(N)
if (ws.GetRow(rowindex).GetCell(10) == null) ws.GetRow(rowindex).CreateCell(10);
ws.GetRow(rowindex).GetCell(10).SetCellValue(itemSes.Net_Value != null ? (double)itemSes.Net_Value.Value : 0);
ws.GetRow(rowindex).GetCell(10).CellStyle = styleQfw;
//Incl. Tax(V)
if (ws.GetRow(rowindex).GetCell(11) == null) ws.GetRow(rowindex).CreateCell(11);
ws.GetRow(rowindex).GetCell(11).SetCellValue(itemSes.Tax_Value != null ? (double)itemSes.Tax_Value.Value : 0);
ws.GetRow(rowindex).GetCell(11).CellStyle = styleQfw;
//Punishment(P)
if (ws.GetRow(rowindex).GetCell(12) == null) ws.GetRow(rowindex).CreateCell(12);
ws.GetRow(rowindex).GetCell(12).SetCellValue(itemSes.Punishment != null ? (double)itemSes.Punishment.Value : 0);
ws.GetRow(rowindex).GetCell(12).CellStyle = styleQfw;
//Deviation(N-B)
if (ws.GetRow(rowindex).GetCell(13) == null) ws.GetRow(rowindex).CreateCell(13);
decimal? dev = Funs.GetNewDecimal(itemSes.Deviation);
decimal? perc = Funs.GetNewDecimal(itemSes.By_Perc);
if (dev != null && dev >= 5000 && perc >= 30)
{
ws.GetRow(rowindex).GetCell(13).SetCellValue((double)dev);
}
else
{
ws.GetRow(rowindex).GetCell(13).SetCellValue("");
}
//ws.GetRow(rowindex).GetCell(14).SetCellValue(dev != null ? (double)dev : 0);
ws.GetRow(rowindex).GetCell(13).CellStyle = styleQfw;
//By perc.(N-B)/B
if (ws.GetRow(rowindex).GetCell(14) == null) ws.GetRow(rowindex).CreateCell(14);
if (perc != null && dev >= 5000 && perc >= 30)
{
ws.GetRow(rowindex).GetCell(14).SetCellValue(string.Format("{0:N}", perc) + "%");
}
else
{
ws.GetRow(rowindex).GetCell(14).SetCellValue("");
}
//ws.GetRow(rowindex).GetCell(15).SetCellValue(perc != null ? string.Format("{0:N}", perc * 100) + "%" : "");
ws.GetRow(rowindex).GetCell(14).CellStyle = styleQfw;
//Deduction(Q-V)
if (ws.GetRow(rowindex).GetCell(15) == null) ws.GetRow(rowindex).CreateCell(15);
decimal? dedu = Funs.GetNewDecimal(itemSes.Deduction);
ws.GetRow(rowindex).GetCell(15).SetCellValue(dedu != null ? (double)dedu : 0);
ws.GetRow(rowindex).GetCell(15).CellStyle = styleQfw;
//Con
if (ws.GetRow(rowindex).GetCell(16) == null) ws.GetRow(rowindex).CreateCell(16);
ws.GetRow(rowindex).GetCell(16).SetCellValue(itemSes.Con_Days != null ? itemSes.Con_Days.Value : 0);
ws.GetRow(rowindex).GetCell(16).CellStyle = style;
//BoQ
if (ws.GetRow(rowindex).GetCell(17) == null) ws.GetRow(rowindex).CreateCell(17);
ws.GetRow(rowindex).GetCell(17).SetCellValue(itemSes.BoQ_Days != null ? itemSes.BoQ_Days.Value : 0);
ws.GetRow(rowindex).GetCell(17).CellStyle = style;
//SES
if (ws.GetRow(rowindex).GetCell(18) == null) ws.GetRow(rowindex).CreateCell(18);
ws.GetRow(rowindex).GetCell(18).SetCellValue(itemSes.SES_Days != null ? itemSes.SES_Days.Value : 0);
ws.GetRow(rowindex).GetCell(18).CellStyle = style;
i++;
rowindex++;
}
//边框
ICellStyle bankStyle = hssfworkbook.CreateCellStyle();
bankStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
bankStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
bankStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
bankStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
bankStyle.Alignment = HorizontalAlignment.Left;
bankStyle.VerticalAlignment = VerticalAlignment.Center;
//背景色
bankStyle.FillPattern = FillPattern.SolidForeground;
bankStyle.FillForegroundColor = 23;
if (ws.GetRow(rowindex) == null) ws.CreateRow(rowindex);
if (ws.GetRow(rowindex + 1) == null) ws.CreateRow(rowindex + 1);
ws.GetRow(rowindex).HeightInPoints = 19.8f;
ws.GetRow(rowindex + 1).HeightInPoints = 19.8f;
CellRangeAddress region = new CellRangeAddress(rowindex, rowindex, 2, 7);
ws.AddMergedRegion(region);
region = new CellRangeAddress(rowindex + 1, rowindex + 1, 2, 7);
ws.AddMergedRegion(region);
//region = new CellRangeAddress(rowindex, rowindex, 7, 8);
//ws.AddMergedRegion(region);
//region = new CellRangeAddress(rowindex + 1, rowindex + 1, 8, 9);
//ws.AddMergedRegion(region);
if (ws.GetRow(rowindex).GetCell(0) == null) ws.GetRow(rowindex).CreateCell(0);
if (ws.GetRow(rowindex).GetCell(1) == null) ws.GetRow(rowindex).CreateCell(1);
if (ws.GetRow(rowindex).GetCell(2) == null) ws.GetRow(rowindex).CreateCell(2);
if (ws.GetRow(rowindex).GetCell(3) == null) ws.GetRow(rowindex).CreateCell(3);
if (ws.GetRow(rowindex).GetCell(4) == null) ws.GetRow(rowindex).CreateCell(4);
if (ws.GetRow(rowindex).GetCell(5) == null) ws.GetRow(rowindex).CreateCell(5);
if (ws.GetRow(rowindex).GetCell(6) == null) ws.GetRow(rowindex).CreateCell(6);
if (ws.GetRow(rowindex).GetCell(7) == null) ws.GetRow(rowindex).CreateCell(7);
ws.GetRow(rowindex).GetCell(0).CellStyle = ws.GetRow(rowindex).GetCell(1).CellStyle = ws.GetRow(rowindex).GetCell(2).CellStyle = ws.GetRow(rowindex).GetCell(3).CellStyle = ws.GetRow(rowindex).GetCell(4).CellStyle = ws.GetRow(rowindex).GetCell(5).CellStyle = ws.GetRow(rowindex).GetCell(6).CellStyle = ws.GetRow(rowindex).GetCell(7).CellStyle = style;
//if (ws.GetRow(rowindex).GetCell(8) == null) ws.GetRow(rowindex).CreateCell(8);
//ws.GetRow(rowindex).GetCell(8).SetCellValue("Total Period");
//ws.GetRow(rowindex).GetCell(8).CellStyle = bankStyle;
//if (ws.GetRow(rowindex + 1).GetCell(7) == null) ws.GetRow(rowindex + 1).CreateCell(7);
//ws.GetRow(rowindex + 1).GetCell(7).SetCellValue(sesSESList.Min(p => p.Start_Date) != null ? sesSESList.Min(p => p.Start_Date).Value.ToString("dd.MM.yyyy") : "");
//ws.GetRow(rowindex + 1).GetCell(7).CellStyle = style;
//if (ws.GetRow(rowindex + 1).GetCell(8) == null) ws.GetRow(rowindex + 1).CreateCell(8);
//ws.GetRow(rowindex + 1).GetCell(8).SetCellValue(sesSESList.Max(p => p.End_Date) != null ? sesSESList.Max(p => p.End_Date).Value.ToString("dd.MM.yyyy") : "");
//ws.GetRow(rowindex + 1).GetCell(8).CellStyle = style;
if (ws.GetRow(rowindex + 1).GetCell(0) == null) ws.GetRow(rowindex + 1).CreateCell(0);
if (ws.GetRow(rowindex + 1).GetCell(1) == null) ws.GetRow(rowindex + 1).CreateCell(1);
if (ws.GetRow(rowindex + 1).GetCell(2) == null) ws.GetRow(rowindex + 1).CreateCell(2);
if (ws.GetRow(rowindex + 1).GetCell(3) == null) ws.GetRow(rowindex + 1).CreateCell(3);
if (ws.GetRow(rowindex + 1).GetCell(4) == null) ws.GetRow(rowindex + 1).CreateCell(4);
if (ws.GetRow(rowindex + 1).GetCell(5) == null) ws.GetRow(rowindex + 1).CreateCell(5);
if (ws.GetRow(rowindex + 1).GetCell(6) == null) ws.GetRow(rowindex + 1).CreateCell(6);
if (ws.GetRow(rowindex + 1).GetCell(7) == null) ws.GetRow(rowindex + 1).CreateCell(7);
//if (ws.GetRow(rowindex + 1).GetCell(8) == null) ws.GetRow(rowindex + 1).CreateCell(8);
//if (ws.GetRow(rowindex + 1).GetCell(9) == null) ws.GetRow(rowindex + 1).CreateCell(9);
ws.GetRow(rowindex + 1).GetCell(0).CellStyle = ws.GetRow(rowindex + 1).GetCell(1).CellStyle = ws.GetRow(rowindex + 1).GetCell(2).CellStyle = ws.GetRow(rowindex + 1).GetCell(3).CellStyle = ws.GetRow(rowindex + 1).GetCell(4).CellStyle = ws.GetRow(rowindex + 1).GetCell(5).CellStyle = ws.GetRow(rowindex + 1).GetCell(6).CellStyle = ws.GetRow(rowindex + 1).GetCell(7).CellStyle = style;
region = new CellRangeAddress(rowindex, rowindex, 8, 12);
ws.AddMergedRegion(region);
if (ws.GetRow(rowindex).GetCell(8) == null) ws.GetRow(rowindex).CreateCell(8);
ws.GetRow(rowindex).GetCell(8).SetCellValue("Total:");
ws.GetRow(rowindex).GetCell(8).CellStyle = bankStyle;
if (ws.GetRow(rowindex + 1).GetCell(8) == null) ws.GetRow(rowindex + 1).CreateCell(8);
ws.GetRow(rowindex + 1).GetCell(8).SetCellValue(sesSESList != null && sesSESList.Count() > 0 ? (double)sesSESList.Sum(p => p.Budget).Value : 0);
ws.GetRow(rowindex + 1).GetCell(8).CellStyle = styleQfw;
if (ws.GetRow(rowindex + 1).GetCell(9) == null) ws.GetRow(rowindex + 1).CreateCell(9);
ws.GetRow(rowindex + 1).GetCell(9).SetCellValue(sesSESList != null && sesSESList.Count() > 0 ? (double)sesSESList.Sum(p => p.Quotation).Value : 0);
ws.GetRow(rowindex + 1).GetCell(9).CellStyle = styleQfw;
if (ws.GetRow(rowindex + 1).GetCell(10) == null) ws.GetRow(rowindex + 1).CreateCell(10);
ws.GetRow(rowindex + 1).GetCell(10).SetCellValue(sesSESList != null && sesSESList.Count() > 0 ? (double)sesSESList.Sum(p => p.Net_Value).Value : 0);
ws.GetRow(rowindex + 1).GetCell(10).CellStyle = styleQfw;
if (ws.GetRow(rowindex + 1).GetCell(11) == null) ws.GetRow(rowindex + 1).CreateCell(11);
ws.GetRow(rowindex + 1).GetCell(11).SetCellValue(sesSESList != null && sesSESList.Count() > 0 ? (double)sesSESList.Sum(p => p.Tax_Value).Value : 0);
ws.GetRow(rowindex + 1).GetCell(11).CellStyle = styleQfw;
if (ws.GetRow(rowindex + 1).GetCell(12) == null) ws.GetRow(rowindex + 1).CreateCell(12);
ws.GetRow(rowindex + 1).GetCell(12).SetCellValue(sesSESList != null && sesSESList.Count() > 0 ? (double)sesSESList.Sum(p => p.Punishment).Value : 0);
ws.GetRow(rowindex + 1).GetCell(12).CellStyle = styleQfw;
if (ws.GetRow(rowindex).GetCell(13) == null) ws.GetRow(rowindex).CreateCell(13);
if (ws.GetRow(rowindex).GetCell(14) == null) ws.GetRow(rowindex).CreateCell(14);
ws.GetRow(rowindex).GetCell(13).CellStyle = ws.GetRow(rowindex).GetCell(14).CellStyle = bankStyle;
if (ws.GetRow(rowindex).GetCell(15) == null) ws.GetRow(rowindex).CreateCell(15);
ws.GetRow(rowindex).GetCell(15).SetCellValue("Total:");
ws.GetRow(rowindex).GetCell(15).CellStyle = bankStyle;
if (ws.GetRow(rowindex + 1).GetCell(13) == null) ws.GetRow(rowindex + 1).CreateCell(13);
if (ws.GetRow(rowindex + 1).GetCell(14) == null) ws.GetRow(rowindex + 1).CreateCell(14);
ws.GetRow(rowindex + 1).GetCell(13).CellStyle = ws.GetRow(rowindex + 1).GetCell(14).CellStyle = style;
if (ws.GetRow(rowindex + 1).GetCell(15) == null) ws.GetRow(rowindex + 1).CreateCell(15);
ws.GetRow(rowindex + 1).GetCell(15).SetCellValue((double)sesSESList.Sum(p => double.Parse(p.Deduction)));
ws.GetRow(rowindex + 1).GetCell(15).CellStyle = styleQfw;
region = new CellRangeAddress(rowindex, rowindex, 16, 18);
ws.AddMergedRegion(region);
if (ws.GetRow(rowindex).GetCell(16) == null) ws.GetRow(rowindex).CreateCell(16);
ws.GetRow(rowindex).GetCell(16).SetCellValue("Average:");
ws.GetRow(rowindex).GetCell(16).CellStyle = bankStyle;
if (ws.GetRow(rowindex + 1).GetCell(16) == null) ws.GetRow(rowindex + 1).CreateCell(16);
ws.GetRow(rowindex + 1).GetCell(16).SetCellValue(sesSESList != null && sesSESList.Count() > 0 ? Math.Round(sesSESList.Average(p => p.Con_Days != null && p.Con_Days >= 0 ? p.Con_Days : 0).Value, 0) : 0);
ws.GetRow(rowindex + 1).GetCell(16).CellStyle = style;
if (ws.GetRow(rowindex + 1).GetCell(17) == null) ws.GetRow(rowindex + 1).CreateCell(17);
ws.GetRow(rowindex + 1).GetCell(17).SetCellValue(sesSESList != null && sesSESList.Count() > 0 ? Math.Round(sesSESList.Average(p => p.BoQ_Days != null && p.BoQ_Days >= 0 ? p.BoQ_Days : 0).Value, 0) : 0);
ws.GetRow(rowindex + 1).GetCell(17).CellStyle = style;
if (ws.GetRow(rowindex + 1).GetCell(18) == null) ws.GetRow(rowindex + 1).CreateCell(18);
ws.GetRow(rowindex + 1).GetCell(18).SetCellValue(sesSESList != null && sesSESList.Count() > 0 ? Math.Round(sesSESList.Average(p => p.SES_Days != null && p.SES_Days >= 0 ? p.SES_Days : 0).Value, 0) : 0);
ws.GetRow(rowindex + 1).GetCell(18).CellStyle = style;
#endregion
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(cptNo) + ".xlsx");
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader("Content-Length", filet.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
Response.WriteFile(filet.FullName);
// 停止页面的执行
Response.End();
}
}
protected void btnNoCpt_Click(object sender, EventArgs e)
{
string rootPath = Server.MapPath("~/") + Const.ExcelUrl;
//模板文件
string TempletFileName = rootPath + "SES_without_CPT.xlsx";
//导出文件
string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\";
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string ReportFileName = filePath + "out.xls";
FileStream file = new FileStream(TempletFileName, FileMode.Open, FileAccess.Read);
XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
XSSFSheet ws = (XSSFSheet)hssfworkbook.GetSheetAt(0);
string strSql = @"SELECT FO,SES_No FROM dbo.FC_SESReport
WHERE (Accepted='X' OR Accepted='x')
AND SES_No NOT IN (SELECT ses FROM dbo.SESList)
ORDER BY FO,SES_No";
DataTable dt = SQLHelper.GetDataTableRunText(strSql, null);
if (dt.Rows.Count > 0)
{
for (int i = 1; i <= dt.Rows.Count; i++)
{
if (ws.GetRow(i) == null) ws.CreateRow(i);
if (ws.GetRow(i).GetCell(0) == null) ws.GetRow(i).CreateCell(0);
ws.GetRow(i).GetCell(0).SetCellValue(dt.Rows[i-1]["FO"].ToString());
if (ws.GetRow(i).GetCell(1) == null) ws.GetRow(i).CreateCell(1);
ws.GetRow(i).GetCell(1).SetCellValue(dt.Rows[i-1]["SES_No"].ToString());
}
}
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=SES_without_CPT_" + 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
/// <summary>
/// 时间间隔
/// </summary>
/// <param name="startTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <param name="timeType">返回类型1:天2:小时3:分钟4:秒数</param>
/// <returns></returns>
private int GetTimeSpan(DateTime startTime, DateTime endTime, int timeType = 1)
{
if (startTime > endTime)
{
return 0;
}
TimeSpan ts = endTime - startTime;
return timeType == 1 ? ts.Days : timeType == 2 ? ts.Hours : timeType == 3 ? ts.Minutes : ts.Seconds;
}
#endregion
}
}