chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,264 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using NPOI.SS.UserModel;
|
||||
using System.IO;
|
||||
using Wellan.Data;
|
||||
using Wellan.Common;
|
||||
|
||||
/// <summary>
|
||||
/// 請假明細 的摘要描述
|
||||
/// </summary>
|
||||
public class 請假明細 : ExcelReportBase
|
||||
{
|
||||
public 請假明細()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
{
|
||||
base.Init();
|
||||
titleStyleCenterNoBorder.SetFont(bodyFont);
|
||||
bodyStyleCenterNoBorder.SetFont(bodyFont);
|
||||
bodyNumberStyleNoBorder.SetFont(bodyFont);
|
||||
titleStyleRightNoBorder.SetFont(bodyFont);
|
||||
titleStyleLeftNoBorder.SetFont(bodyFont);
|
||||
}
|
||||
|
||||
public override MemoryStream 產生報表()
|
||||
{
|
||||
#region 報表抬頭
|
||||
|
||||
var row = 0;
|
||||
|
||||
excel.MergeCell(row, 0, row, 22, BorderStyle.None);
|
||||
excel.SetCellValue(row, 0, 公司名稱, headerStyle);
|
||||
excel.SetRowHeight(row, 20);
|
||||
row++;
|
||||
excel.MergeCell(row, 0, row, 22, BorderStyle.None);
|
||||
excel.SetCellValue(row, 0, string.Format("承辦{0}", 客戶名稱), headerStyle);
|
||||
excel.SetRowHeight(row, 20);
|
||||
row++;
|
||||
excel.MergeCell(row, 0, row, 22, BorderStyle.None);
|
||||
excel.SetCellValue(row, 0, string.Format("『{0}』", 專案名稱), headerStyle);
|
||||
excel.SetRowHeight(row, 20);
|
||||
row++;
|
||||
excel.MergeCell(row, 0, row, 22, BorderStyle.None);
|
||||
excel.SetCellValue(row, 0, string.Format("{0}【{1}{2}】", 報表名稱, 年度, 月份), headerStyle);
|
||||
excel.SetRowHeight(row, 20);
|
||||
row++;
|
||||
|
||||
excel.MergeCell(row, 4, row, 20, BorderStyle.None);
|
||||
excel.SetCellValue(row, 4, "請假時數 / 金額", titleStyleCenterNoBorder);
|
||||
row++;
|
||||
|
||||
excel.SetCellValue(row, 0, "序號", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 1, "站別", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 2, "人員姓名", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 3, "薪資", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 4, "補休", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 5, "特休", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 6, "產假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 7, "陪產假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 8, "產檢假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 9, "婚假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 10, "公假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 11, "工傷假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 12, "喪假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 13, "事假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 14, "家庭照顧假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 15, "原民祭儀假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 16, "其他(一)", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 17, "小計", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 18, "病假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 19, "生理假", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 20, "小計", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 21, "合計金額", titleStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 22, "備註", titleStyleCenterNoBorder);
|
||||
excel.SetRowHeight(row, 18);
|
||||
row++;
|
||||
|
||||
#endregion
|
||||
|
||||
#region 報表資料
|
||||
|
||||
int beginRow = row;
|
||||
int serial = 1;
|
||||
var SST05_SUM = 0;
|
||||
var SST06_SUM = 0;
|
||||
var SST10_SUM = 0;
|
||||
var SST12_SUM = 0;
|
||||
var SST20_SUM = 0;
|
||||
var SST11_SUM = 0;
|
||||
var SST13_SUM = 0;
|
||||
var SST14_SUM = 0;
|
||||
var SST09_SUM = 0;
|
||||
var SST07_SUM = 0;
|
||||
var SST16_SUM = 0;
|
||||
var SST19_SUM = 0;
|
||||
var SST23_SUM = 0;
|
||||
var SST08_SUM = 0;
|
||||
var SST15_SUM = 0;
|
||||
|
||||
foreach (DataRow r in 資料來源.Tables[0].Rows)
|
||||
{
|
||||
var 月薪 = WDAC.GetInt32Value(r["SSP00"]) + WDAC.GetInt32Value(r["SSP02"]);
|
||||
var 無薪小計 = WDAC.GetInt32Value(r["SSS02"]) + WDAC.GetInt32Value(r["SSS09"]);
|
||||
var 扣款合計 = WDAC.GetInt32Value(r["SSS01"]) + WDAC.GetInt32Value(r["SSS02"]) + WDAC.GetInt32Value(r["SSS09"]);
|
||||
|
||||
excel.SetCellValue(row, 0, serial, bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 1, WDAC.GetStringValue(r["SSBRHX"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 2, WDAC.GetStringValue(r["BPNME"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 3, 月薪, bodyNumberStyleNoBorder);
|
||||
|
||||
SST05_SUM += WDAC.GetInt32Value(r["SST05"]) * 60 + WDAC.GetInt32Value(r["SST05M"]);
|
||||
SST06_SUM += WDAC.GetInt32Value(r["SST06"]) * 60 + WDAC.GetInt32Value(r["SST06M"]);
|
||||
SST10_SUM += WDAC.GetInt32Value(r["SST10"]) * 60 + WDAC.GetInt32Value(r["SST10M"]);
|
||||
SST12_SUM += WDAC.GetInt32Value(r["SST12"]) * 60 + WDAC.GetInt32Value(r["SST12M"]);
|
||||
SST20_SUM += WDAC.GetInt32Value(r["SST20"]) * 60 + WDAC.GetInt32Value(r["SST20M"]);
|
||||
SST11_SUM += WDAC.GetInt32Value(r["SST11"]) * 60 + WDAC.GetInt32Value(r["SST11M"]);
|
||||
SST13_SUM += WDAC.GetInt32Value(r["SST13"]) * 60 + WDAC.GetInt32Value(r["SST13M"]);
|
||||
SST14_SUM += WDAC.GetInt32Value(r["SST14"]) * 60 + WDAC.GetInt32Value(r["SST14M"]);
|
||||
SST09_SUM += WDAC.GetInt32Value(r["SST09"]) * 60 + WDAC.GetInt32Value(r["SST09M"]);
|
||||
SST07_SUM += WDAC.GetInt32Value(r["SST07"]) * 60 + WDAC.GetInt32Value(r["SST07M"]);
|
||||
SST16_SUM += WDAC.GetInt32Value(r["SST16"]) * 60 + WDAC.GetInt32Value(r["SST16M"]);
|
||||
SST19_SUM += WDAC.GetInt32Value(r["SST19"]) * 60 + WDAC.GetInt32Value(r["SST19M"]);
|
||||
SST23_SUM += WDAC.GetInt32Value(r["SST23"]) * 60 + WDAC.GetInt32Value(r["SST23M"]);
|
||||
SST08_SUM += WDAC.GetInt32Value(r["SST08"]) * 60 + WDAC.GetInt32Value(r["SST08M"]);
|
||||
SST15_SUM += WDAC.GetInt32Value(r["SST15"]) * 60 + WDAC.GetInt32Value(r["SST15M"]);
|
||||
|
||||
if (以時分顯示時數)
|
||||
{
|
||||
excel.SetCellValue(row, 4, string.Format("{0:#00}:{1:00}", r["SST05"], r["SST05M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 5, string.Format("{0:#00}:{1:00}", r["SST06"], r["SST06M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 6, string.Format("{0:#00}:{1:00}", r["SST10"], r["SST10M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 7, string.Format("{0:#00}:{1:00}", r["SST12"], r["SST12M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 8, string.Format("{0:#00}:{1:00}", r["SST20"], r["SST20M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 9, string.Format("{0:#00}:{1:00}", r["SST11"], r["SST11M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 10, string.Format("{0:#00}:{1:00}", r["SST13"], r["SST13M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 11, string.Format("{0:#00}:{1:00}", r["SST14"], r["SST14M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 12, string.Format("{0:#00}:{1:00}", r["SST09"], r["SST09M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 13, string.Format("{0:#00}:{1:00}", r["SST07"], r["SST07M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 14, string.Format("{0:#00}:{1:00}", r["SST16"], r["SST16M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 15, string.Format("{0:#00}:{1:00}", r["SST19"], r["SST19M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 16, string.Format("{0:#00}:{1:00}", r["SST23"], r["SST23M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 17, 無薪小計, bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 18, string.Format("{0:#00}:{1:00}", r["SST08"], r["SST08M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 19, string.Format("{0:#00}:{1:00}", r["SST15"], r["SST15M"]), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 20, WDAC.GetInt32Value(r["SSS01"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 21, 扣款合計, bodyNumberStyleNoBorder);
|
||||
}
|
||||
else
|
||||
{
|
||||
excel.SetCellValue(row, 4, WDAC.GetInt32Value(r["SST05"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 5, WDAC.GetInt32Value(r["SST06"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 6, WDAC.GetInt32Value(r["SST10"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 7, WDAC.GetInt32Value(r["SST12"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 8, WDAC.GetInt32Value(r["SST20"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 9, WDAC.GetInt32Value(r["SST11"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 10, WDAC.GetInt32Value(r["SST13"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 11, WDAC.GetInt32Value(r["SST14"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 12, WDAC.GetInt32Value(r["SST09"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 13, WDAC.GetInt32Value(r["SST07"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 14, WDAC.GetInt32Value(r["SST16"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 15, WDAC.GetInt32Value(r["SST19"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 16, WDAC.GetInt32Value(r["SST23"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 17, 無薪小計, bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 18, WDAC.GetInt32Value(r["SST08"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 19, WDAC.GetInt32Value(r["SST15"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 20, WDAC.GetInt32Value(r["SSS01"]), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 21, 扣款合計, bodyNumberStyleNoBorder);
|
||||
}
|
||||
row++;
|
||||
serial++;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 合計及表尾批示
|
||||
excel.MergeCell(row, 0, row, 1, BorderStyle.None);
|
||||
excel.SetCellValue(row, 0, "合計", titleStyleLeftNoBorder);
|
||||
|
||||
if (以時分顯示時數)
|
||||
{
|
||||
excel.SetCellValue(row, 4, MinuteToTime(SST05_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 5, MinuteToTime(SST06_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 6, MinuteToTime(SST10_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 7, MinuteToTime(SST12_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 8, MinuteToTime(SST20_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 9, MinuteToTime(SST11_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 10, MinuteToTime(SST13_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 11, MinuteToTime(SST14_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 12, MinuteToTime(SST09_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 13, MinuteToTime(SST07_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 14, MinuteToTime(SST16_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 15, MinuteToTime(SST19_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 16, MinuteToTime(SST23_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellFormula(row, 17, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 17), excel.RCtoA1(row - 1, 17)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellValue(row, 18, MinuteToTime(SST08_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(row, 19, MinuteToTime(SST15_SUM), bodyStyleCenterNoBorder);
|
||||
excel.SetCellFormula(row, 20, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 20), excel.RCtoA1(row - 1, 20)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 21, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 21), excel.RCtoA1(row - 1, 21)), bodyNumberStyleNoBorder);
|
||||
}
|
||||
else
|
||||
{
|
||||
excel.SetCellFormula(row, 4, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 4), excel.RCtoA1(row - 1, 4)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 5, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 5), excel.RCtoA1(row - 1, 5)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 6, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 6), excel.RCtoA1(row - 1, 6)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 7, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 7), excel.RCtoA1(row - 1, 7)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 8, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 8), excel.RCtoA1(row - 1, 8)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 9, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 9), excel.RCtoA1(row - 1, 9)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 10, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 10), excel.RCtoA1(row - 1, 10)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 11, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 11), excel.RCtoA1(row - 1, 11)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 12, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 12), excel.RCtoA1(row - 1, 12)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 13, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 13), excel.RCtoA1(row - 1, 13)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 14, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 14), excel.RCtoA1(row - 1, 14)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 15, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 15), excel.RCtoA1(row - 1, 15)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 16, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 16), excel.RCtoA1(row - 1, 16)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 17, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 17), excel.RCtoA1(row - 1, 17)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 18, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 18), excel.RCtoA1(row - 1, 18)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 19, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 19), excel.RCtoA1(row - 1, 19)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 20, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 20), excel.RCtoA1(row - 1, 20)), bodyNumberStyleNoBorder);
|
||||
excel.SetCellFormula(row, 21, String.Format("SUM({0}:{1})", excel.RCtoA1(beginRow, 21), excel.RCtoA1(row - 1, 21)), bodyNumberStyleNoBorder);
|
||||
}
|
||||
row++;
|
||||
|
||||
excel.MergeCell(row, 0, row, 6, BorderStyle.None);
|
||||
excel.SetCellValue(row, 0, "承辦人:", titleStyleLeftNoBorder);
|
||||
excel.MergeCell(row, 7, row, 13, BorderStyle.None);
|
||||
excel.SetCellValue(row, 7, "業務主管:", titleStyleLeftNoBorder);
|
||||
excel.MergeCell(row, 14, row, 22, BorderStyle.None);
|
||||
excel.SetCellValue(row, 14, "公司章:", titleStyleLeftNoBorder);
|
||||
|
||||
#endregion
|
||||
|
||||
excel.SetColumnWidth(0, 6);
|
||||
excel.SetColumnWidth(1, 10);
|
||||
excel.SetColumnWidth(2, 10);
|
||||
excel.SetColumnWidth(3, 10);
|
||||
excel.SetColumnWidth(4, 10);
|
||||
excel.SetColumnWidth(5, 10);
|
||||
excel.SetColumnWidth(6, 10);
|
||||
excel.SetColumnWidth(7, 10);
|
||||
excel.SetColumnWidth(8, 10);
|
||||
excel.SetColumnWidth(9, 10);
|
||||
excel.SetColumnWidth(10, 10);
|
||||
excel.SetColumnWidth(11, 10);
|
||||
excel.SetColumnWidth(12, 10);
|
||||
excel.SetColumnWidth(13, 10);
|
||||
excel.SetColumnWidth(14, 10);
|
||||
excel.SetColumnWidth(15, 10);
|
||||
excel.SetColumnWidth(16, 10);
|
||||
excel.SetColumnWidth(17, 10);
|
||||
excel.SetColumnWidth(18, 10);
|
||||
excel.SetColumnWidth(19, 10);
|
||||
excel.SetColumnWidth(20, 10);
|
||||
excel.SetColumnWidth(21, 10);
|
||||
excel.SetColumnWidth(22, 10);
|
||||
|
||||
MemoryStream ms = new MemoryStream();
|
||||
workbook.Write(ms);
|
||||
return ms;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user