1176 lines
66 KiB
C#
1176 lines
66 KiB
C#
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 CPT;No 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
|
||
}
|
||
} |