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

1176 lines
66 KiB
C#
Raw Normal View History

2024-05-08 10:17:02 +08:00
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
}
}