chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,491 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Web;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using NPOI.SS.UserModel;
|
||||
using NPOI.HSSF.UserModel;
|
||||
using NPOI.HSSF.Util;
|
||||
using System.IO;
|
||||
using NPOI.SS.Util;
|
||||
using Wellan.Common;
|
||||
using Wellan.Data;
|
||||
using System.Linq;
|
||||
using Microsoft.Win32;
|
||||
|
||||
/// <summary>
|
||||
/// 加班費印領清冊 的摘要描述
|
||||
/// </summary>
|
||||
public class 加班費印領清冊 : ExcelReportBase
|
||||
{
|
||||
public 加班費印領清冊()
|
||||
{
|
||||
報表名稱 = "加班費明細表";
|
||||
}
|
||||
|
||||
private int r = 2;
|
||||
private DataRow[] data;
|
||||
private int 加班費加總 = 0;
|
||||
private int bodyBeginRow, dataBeginRow;
|
||||
|
||||
public override MemoryStream 產生報表()
|
||||
{
|
||||
// 只要領加班費的紀錄
|
||||
data = 資料來源.Tables[0].Select(
|
||||
string.Format("RPTYP = '{0}' OR RPTYP = '{1}' OR RPTYP = '{2}' OR RPTYP = '{3}'",
|
||||
RPAR_TYPE.T12_非休息日請領加班費,
|
||||
RPAR_TYPE.T14_休息日請領加班費,
|
||||
RPAR_TYPE.T16_國定假日請領加班費,
|
||||
RPAR_TYPE.T18_例假日請領加班費) ,
|
||||
"RPRDT");
|
||||
|
||||
foreach (DataRow r in data)
|
||||
{
|
||||
加班費加總 += WDAC.GetInt32Value(r["RPAC1"])
|
||||
+ WDAC.GetInt32Value(r["RPAC2"])
|
||||
+ WDAC.GetInt32Value(r["RPAC3"])
|
||||
+ WDAC.GetInt32Value(r["RPAC4"])
|
||||
+ WDAC.GetInt32Value(r["RPAC5"]);
|
||||
}
|
||||
|
||||
產生抬頭();
|
||||
產生表身();
|
||||
產生結尾();
|
||||
設定欄寬及列印範圍();
|
||||
|
||||
MemoryStream ms = new MemoryStream();
|
||||
workbook.Write(ms);
|
||||
return ms;
|
||||
}
|
||||
|
||||
private void 產生抬頭()
|
||||
{
|
||||
excel.MergeCell(r, 0, r, 13);
|
||||
excel.SetCellValue(r, 0, 公司名稱, headerStyle);
|
||||
excel.SetRowHeight(r, 30);
|
||||
r++;
|
||||
|
||||
excel.MergeCell(r, 0, r, 13);
|
||||
excel.SetCellValue(r, 0, 專案名稱, headerStyle);
|
||||
excel.SetRowHeight(r, 30);
|
||||
r++;
|
||||
|
||||
excel.MergeCell(r, 0, r, 13);
|
||||
excel.SetCellValue(r, 0, 報表名稱, headerStyle);
|
||||
excel.SetRowHeight(r, 30);
|
||||
r++;
|
||||
|
||||
excel.MergeCell(r, 0, r, 13);
|
||||
excel.SetCellValue(r, 0, "金額(此欄填寫數字)", bodyStyleCenter);
|
||||
excel.SetRowHeight(r, 20);
|
||||
r++;
|
||||
|
||||
excel.MergeCell(r, 0, r, 3);
|
||||
excel.SetCellValue(r, 0, "萬", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 0, r, 3, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 4, r, 6);
|
||||
excel.SetCellValue(r, 4, "仟", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 4, r, 6, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 7, r, 7);
|
||||
excel.SetCellValue(r, 7, "佰", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 7, r, 7, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 8, r, 10);
|
||||
excel.SetCellValue(r, 8, "拾", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 8, r, 10, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 11, r, 13);
|
||||
excel.SetCellValue(r, 11, "元", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 11, r, 13, BorderStyle.Thin);
|
||||
excel.SetRowHeight(r, 30);
|
||||
r++;
|
||||
|
||||
string s加班費加總 = String.Format("{0:00000}", 加班費加總) + "00000";
|
||||
excel.MergeCell(r, 0, r, 3);
|
||||
excel.SetCellValue(r, 0, s加班費加總[0].ToString(), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 0, r, 3, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 4, r, 6);
|
||||
excel.SetCellValue(r, 4, s加班費加總[1].ToString(), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 4, r, 6, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 7, r, 7);
|
||||
excel.SetCellValue(r, 7, s加班費加總[2].ToString(), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 7, r, 7, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 8, r, 10);
|
||||
excel.SetCellValue(r, 8, s加班費加總[3].ToString(), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 8, r, 10, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 11, r, 13);
|
||||
excel.SetCellValue(r, 11, s加班費加總[4].ToString(), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 11, r, 13, BorderStyle.Thin);
|
||||
excel.SetRangeOuterBorder(r - 2, 0, r, 13, BorderStyle.Thick);
|
||||
excel.SetRowHeight(r, 25);
|
||||
r++;
|
||||
|
||||
excel.SetCellValue(r, 11, String.Format("{0:yyyy}年度", 報表時間, WGuard1.TaiwanCulture), bodyStyleRightNoBorder);
|
||||
excel.SetCellValue(r, 12, String.Format("{0:MM}", 報表時間), bodyStyleCenterNoBorder);
|
||||
excel.SetCellValue(r, 13, "月", bodyStyleLeftNoBorder);
|
||||
excel.SetRowHeight(r, 25);
|
||||
r++;
|
||||
|
||||
bodyBeginRow = r;
|
||||
excel.MergeCell(r, 0, r, 1);
|
||||
excel.SetCellValue(r, 0, "姓名", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 0, r, 1, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 2, r, 5);
|
||||
excel.SetCellValue(r, 2, WDAC.GetStringValue(資料來源.Tables[0].Rows[0]["BPNME"]), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 2, r, 5, BorderStyle.Thin);
|
||||
excel.SetCellValue(r, 6, "單位", bodyStyleCenter);
|
||||
excel.MergeCell(r, 7, r, 10);
|
||||
excel.SetCellValue(r, 7, WDAC.GetStringValue(資料來源.Tables[0].Rows[0]["站別"]), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 7, r, 10, BorderStyle.Thin);
|
||||
excel.SetCellValue(r, 11, "職稱", bodyStyleCenter);
|
||||
excel.MergeCell(r, 12, r, 13);
|
||||
excel.SetCellValue(r, 12, WDAC.GetStringValue(資料來源.Tables[0].Rows[0]["職稱"]), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 12, r, 13, BorderStyle.Thin);
|
||||
excel.SetRowHeight(r, 35);
|
||||
r++;
|
||||
|
||||
excel.MergeCell(r, 0, r, 6);
|
||||
excel.SetCellValue(r, 0, "加班日及起迄時間", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 0, r, 6, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 7, r + 1, 8);
|
||||
excel.SetCellValue(r, 7, "加班時數", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 7, r + 1, 8, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 9, r + 1, 10);
|
||||
excel.SetCellValue(r, 9, "加班費\n金額", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 9, r + 1, 10, BorderStyle.Thin);
|
||||
//excel.MergeCell(r, 11, r + 1, 11);
|
||||
//excel.SetCellValue(r, 11, "蓋章", bodyStyleCenter);
|
||||
//excel.SetRangeOuterBorder(r, 11, r + 1, 11, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 11, r + 1, 13);
|
||||
excel.SetCellValue(r, 11, "備註", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 11, r + 1, 13, BorderStyle.Thin);
|
||||
|
||||
excel.SetCellValue(r + 1, 0, "月", bodyStyleCenter);
|
||||
excel.SetCellValue(r + 1, 1, "日", bodyStyleCenter);
|
||||
excel.MergeCell(r + 1, 2, r + 1, 3);
|
||||
excel.SetCellValue(r + 1, 2, "起", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r + 1, 2, r + 1, 3, BorderStyle.Thin);
|
||||
excel.MergeCell(r + 1, 4, r + 1, 5);
|
||||
excel.SetCellValue(r + 1, 4, "至", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r + 1, 4, r + 1, 5, BorderStyle.Thin);
|
||||
excel.SetCellValue(r + 1, 6, "迄", bodyStyleCenter);
|
||||
|
||||
// 畫雙線
|
||||
excel.SetRangeOuterBorder(r - 1, 0, r - 1, 13, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Double, BorderStyle.Thin);
|
||||
excel.SetRowHeight(r, 25);
|
||||
excel.SetRowHeight(r + 1, 25);
|
||||
r += 2;
|
||||
dataBeginRow = r;
|
||||
}
|
||||
|
||||
private void 產生表身()
|
||||
{
|
||||
List<OverTimeItem> oneDayItems = new List<OverTimeItem>();
|
||||
|
||||
TimeCalc timeCalc = new TimeCalc();
|
||||
|
||||
foreach (DataRow row in data)
|
||||
{
|
||||
timeCalc.Init(WDAC.GetStringValue(row["RPNUM"]), WDAC.GetDateTimeValue(row["RPRDT"]));
|
||||
|
||||
int rptc1, rptc2, rptc3, rptc4, rptc5, rpac1, rpac2, rpac3, rpac4, rpac5;
|
||||
string rptyp;
|
||||
rptc1 = WDAC.GetInt32Value(row["RPTC1"]);
|
||||
rptc2 = WDAC.GetInt32Value(row["RPTC2"]);
|
||||
rptc3 = WDAC.GetInt32Value(row["RPTC3"]);
|
||||
rptc4 = WDAC.GetInt32Value(row["RPTC4"]);
|
||||
rptc5 = WDAC.GetInt32Value(row["RPTC5"]);
|
||||
rpac1 = WDAC.GetInt32Value(row["RPAC1"]);
|
||||
rpac2 = WDAC.GetInt32Value(row["RPAC2"]);
|
||||
rpac3 = WDAC.GetInt32Value(row["RPAC3"]);
|
||||
rpac4 = WDAC.GetInt32Value(row["RPAC4"]);
|
||||
rpac5 = WDAC.GetInt32Value(row["RPAC5"]);
|
||||
rptyp = WDAC.GetStringValue(row["RPTYP"]);
|
||||
|
||||
oneDayItems.Clear();
|
||||
string beginTime = WDAC.GetStringValue(row["RPRTM"]);
|
||||
|
||||
switch (rptyp)
|
||||
{
|
||||
case RPAR_TYPE.T12_非休息日請領加班費:
|
||||
case RPAR_TYPE.T14_休息日請領加班費:
|
||||
case RPAR_TYPE.T18_例假日請領加班費:
|
||||
var skiprest = rptyp != RPAR_TYPE.T12_非休息日請領加班費;
|
||||
if (rptc1 > 0)
|
||||
{
|
||||
var endtime = TimeAddMinutes(beginTime, rptc1, timeCalc.午休開始, timeCalc.午休結束, skiprest);
|
||||
oneDayItems.Add(new OverTimeItem()
|
||||
{
|
||||
BeginTime = beginTime,
|
||||
EndTime = endtime,
|
||||
TimeName = "一又三分之一",
|
||||
Hours = (double)rptc1 / 60D,
|
||||
Amount = rpac1
|
||||
});
|
||||
beginTime = endtime;
|
||||
}
|
||||
if (rptc2 > 0)
|
||||
{
|
||||
var endtime = TimeAddMinutes(beginTime, rptc2, timeCalc.午休開始, timeCalc.午休結束, skiprest);
|
||||
oneDayItems.Add(new OverTimeItem()
|
||||
{
|
||||
BeginTime = beginTime,
|
||||
EndTime = endtime,
|
||||
TimeName = "一又三分之二",
|
||||
Hours = (double)rptc2 / 60D,
|
||||
Amount = rpac2
|
||||
});
|
||||
beginTime = endtime;
|
||||
}
|
||||
if (rptc3 > 0)
|
||||
{
|
||||
var endtime = TimeAddMinutes(beginTime, rptc3, timeCalc.午休開始, timeCalc.午休結束, skiprest);
|
||||
oneDayItems.Add(new OverTimeItem()
|
||||
{
|
||||
BeginTime = beginTime,
|
||||
EndTime = endtime,
|
||||
TimeName = "國定假日",
|
||||
Hours = (double)rptc3 / 60D,
|
||||
Amount = rpac3
|
||||
});
|
||||
beginTime = endtime;
|
||||
}
|
||||
if (rptc4 > 0)
|
||||
{
|
||||
var endtime = TimeAddMinutes(beginTime, rptc4, timeCalc.午休開始, timeCalc.午休結束, skiprest);
|
||||
oneDayItems.Add(new OverTimeItem()
|
||||
{
|
||||
BeginTime = beginTime,
|
||||
EndTime = endtime,
|
||||
TimeName = "休息日再延長",
|
||||
Hours = (double)rptc4 / 60D,
|
||||
Amount = rpac4
|
||||
});
|
||||
beginTime = endtime;
|
||||
}
|
||||
if (rptc5 > 0)
|
||||
{
|
||||
var endtime = TimeAddMinutes(beginTime, rptc5, timeCalc.午休開始, timeCalc.午休結束, skiprest);
|
||||
oneDayItems.Add(new OverTimeItem()
|
||||
{
|
||||
BeginTime = beginTime,
|
||||
EndTime = endtime,
|
||||
TimeName = "例假日再延長",
|
||||
Hours = (double)rptc5 / 60D,
|
||||
Amount = rpac5
|
||||
});
|
||||
beginTime = endtime;
|
||||
}
|
||||
break;
|
||||
case RPAR_TYPE.T16_國定假日請領加班費:
|
||||
if (rptc3 > 0)
|
||||
{
|
||||
var endtime = TimeAddMinutes(beginTime, rptc3, timeCalc.午休開始, timeCalc.午休結束, false);
|
||||
oneDayItems.Add(new OverTimeItem()
|
||||
{
|
||||
BeginTime = beginTime,
|
||||
EndTime = endtime,
|
||||
TimeName = "國定假日",
|
||||
Hours = (double)rptc3 / 60D,
|
||||
Amount = rpac3
|
||||
});
|
||||
beginTime = endtime;
|
||||
}
|
||||
if (rptc1 > 0)
|
||||
{
|
||||
var endtime = TimeAddMinutes(beginTime, rptc1, timeCalc.午休開始, timeCalc.午休結束, false);
|
||||
oneDayItems.Add(new OverTimeItem()
|
||||
{
|
||||
BeginTime = beginTime,
|
||||
EndTime = endtime,
|
||||
TimeName = "國定假日延長(9-10)",
|
||||
Hours = (double)rptc1 / 60D,
|
||||
Amount = rpac1
|
||||
});
|
||||
beginTime = endtime;
|
||||
}
|
||||
if (rptc2 > 0)
|
||||
{
|
||||
var endtime = TimeAddMinutes(beginTime, rptc2, timeCalc.午休開始, timeCalc.午休結束, false);
|
||||
oneDayItems.Add(new OverTimeItem()
|
||||
{
|
||||
BeginTime = beginTime,
|
||||
EndTime = endtime,
|
||||
TimeName = "國定假日延長(11-12)",
|
||||
Hours = (double)rptc2 / 60D,
|
||||
Amount = rpac2
|
||||
});
|
||||
beginTime = endtime;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < oneDayItems.Count; i++)
|
||||
{
|
||||
OverTimeItem item = oneDayItems[i];
|
||||
|
||||
excel.SetCellValue(r + i, 0, String.Format("{0:MM}", row["RPRDT"]), bodyStyleCenter);
|
||||
excel.SetCellValue(r + i, 1, String.Format("{0:dd}", row["RPRDT"]), bodyStyleCenter);
|
||||
|
||||
excel.MergeCell(r + i, 11, r + i, 13);
|
||||
excel.SetCellValue(r + i, 11, String.Format("{0}", row["RPDOC"]), bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r + i, 11, r + i, 13, BorderStyle.Thin);
|
||||
|
||||
excel.MergeCell(r + i, 2, r + i, 3);
|
||||
excel.SetCellValue(r + i, 2, item.BeginTime, bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r + i, 2, r + i, 3, BorderStyle.Thin);
|
||||
|
||||
excel.MergeCell(r + i, 4, r + i, 5);
|
||||
excel.SetCellValue(r + i, 4, "~", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r + i, 4, r + i, 5, BorderStyle.Thin);
|
||||
|
||||
excel.SetCellValue(r + i, 6, item.EndTime, bodyStyleCenter);
|
||||
|
||||
excel.SetCellValue(r + i, 7, item.TimeName, bodyStyleCenter);
|
||||
|
||||
excel.SetCellValue(r + i, 8, item.Hours, bodyStyleCenter);
|
||||
|
||||
excel.MergeCell(r + i, 9, r + i, 10);
|
||||
excel.SetCellValue(r + i, 9, item.Amount, bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r + i, 9, r + i, 10, BorderStyle.Thin);
|
||||
|
||||
excel.SetRowHeight(r + i, 35);
|
||||
}
|
||||
|
||||
r += oneDayItems.Count;
|
||||
|
||||
}
|
||||
|
||||
// 蓋章
|
||||
//excel.MergeCell(dataBeginRow, 11, r - 1, 11);
|
||||
//excel.SetCellValue(dataBeginRow, 11, "", bodyStyleCenter);
|
||||
//excel.SetRangeOuterBorder(dataBeginRow, 11, r - 1, 11, BorderStyle.Thin);
|
||||
|
||||
// 合計
|
||||
excel.SetCellValue(r, 6, "合計", bodyStyleCenter);
|
||||
excel.SetCellFormula(r, 7, String.Format("SUM({0}:{1})", excel.RCtoA1(dataBeginRow, 8), excel.RCtoA1(r - 1, 8)), bodyStyleCenter);
|
||||
excel.SetCellValue(r, 8, "小時", bodyStyleCenter);
|
||||
excel.SetCellFormula(r, 9, String.Format("SUM({0}:{1})", excel.RCtoA1(dataBeginRow, 9), excel.RCtoA1(r - 1, 9)), bodyStyleCenter);
|
||||
excel.SetCellValue(r, 10, "元", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 7, r, 7, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None);
|
||||
excel.SetRangeOuterBorder(r, 8, r, 8, BorderStyle.Thin, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin);
|
||||
excel.SetRangeOuterBorder(r, 9, r, 9, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None);
|
||||
excel.SetRangeOuterBorder(r, 10, r, 10, BorderStyle.Thin, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin);
|
||||
excel.SetRowHeight(r, 25);
|
||||
r++;
|
||||
}
|
||||
|
||||
private void 產生結尾()
|
||||
{
|
||||
excel.MergeCell(r, 0, r, 3);
|
||||
excel.SetCellValue(r, 0, "茲收到加班費新台幣", bodyStyleCenter);
|
||||
excel.MergeCell(r, 4, r, 9);
|
||||
excel.SetCellValue(r, 4, WGuard1.WNTSA(加班費加總, "", true), bodyStyleRight);
|
||||
excel.MergeCell(r, 10, r, 13);
|
||||
excel.SetCellValue(r, 10, "此 據 (金額請大寫)", bodyStyleCenter);
|
||||
excel.SetRowHeight(r, 30);
|
||||
excel.SetRangeOuterBorder(r, 0, r, 3, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.None);
|
||||
excel.SetRangeOuterBorder(r, 4, r, 9, BorderStyle.Thin, BorderStyle.None, BorderStyle.Thin, BorderStyle.None);
|
||||
excel.SetRangeOuterBorder(r, 10, r, 13, BorderStyle.Thin, BorderStyle.None, BorderStyle.Thin, BorderStyle.Thin);
|
||||
r++;
|
||||
|
||||
excel.MergeCell(r, 0, r, 5);
|
||||
excel.SetCellValue(r, 0, "申請人", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 0, r, 5, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 6, r, 9);
|
||||
excel.SetCellValue(r, 6, "計劃督導", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 6, r, 9, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 10, r, 13);
|
||||
excel.SetCellValue(r, 10, "計劃主持人", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 10, r, 13, BorderStyle.Thin);
|
||||
excel.SetRowHeight(r, 30);
|
||||
r++;
|
||||
|
||||
excel.MergeCell(r, 0, r, 5);
|
||||
excel.SetCellValue(r, 0, "", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 0, r, 5, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 6, r, 9);
|
||||
excel.SetCellValue(r, 6, "", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 6, r, 9, BorderStyle.Thin);
|
||||
excel.MergeCell(r, 10, r, 13);
|
||||
excel.SetCellValue(r, 10, "", bodyStyleCenter);
|
||||
excel.SetRangeOuterBorder(r, 10, r, 13, BorderStyle.Thin);
|
||||
excel.SetRowHeight(r, 50);
|
||||
|
||||
excel.SetRangeOuterBorder(bodyBeginRow, 0, r, 13, BorderStyle.Thick);
|
||||
}
|
||||
|
||||
private void 設定欄寬及列印範圍()
|
||||
{
|
||||
excel.SetColumnWidth(0, 6);
|
||||
excel.SetColumnWidth(1, 6);
|
||||
excel.SetColumnWidth(2, 2);
|
||||
excel.SetColumnWidth(3, 7);
|
||||
excel.SetColumnWidth(4, 3);
|
||||
excel.SetColumnWidth(5, 5);
|
||||
excel.SetColumnWidth(6, 11);
|
||||
excel.SetColumnWidth(7, 18);
|
||||
excel.SetColumnWidth(8, 7);
|
||||
excel.SetColumnWidth(9, 8);
|
||||
excel.SetColumnWidth(10, 3);
|
||||
excel.SetColumnWidth(11, 11);
|
||||
excel.SetColumnWidth(12, 7);
|
||||
excel.SetColumnWidth(13, 8);
|
||||
}
|
||||
|
||||
private string TimeAddMinutes(string time, int addMinutes, string restBegin, string restEnd, bool skipRest)
|
||||
{
|
||||
int restBeginHour = 0;
|
||||
int restBeginMin = 0;
|
||||
int restEndHour = 0;
|
||||
int restEndMin = 0;
|
||||
int restBeginTime = 0;
|
||||
int restEndTime = 0;
|
||||
if (!string.IsNullOrEmpty(restBegin))
|
||||
{
|
||||
string[] tp1 = restBegin.Split(':');
|
||||
if (int.TryParse(tp1[0], out restBeginHour) && int.TryParse(tp1[1], out restBeginMin))
|
||||
restBeginTime = restBeginHour * 60 + restBeginMin;
|
||||
}
|
||||
if (!string.IsNullOrEmpty(restEnd))
|
||||
{
|
||||
string[] tp1 = restEnd.Split(':');
|
||||
if (int.TryParse(tp1[0], out restEndHour) && int.TryParse(tp1[1], out restEndMin))
|
||||
restEndTime = restEndHour * 60 + restEndMin;
|
||||
}
|
||||
|
||||
string[] timepart = time.Split(':');
|
||||
int hour, min;
|
||||
if (int.TryParse(timepart[0], out hour) && int.TryParse(timepart[1], out min))
|
||||
{
|
||||
int beginTime = hour * 60 + min;
|
||||
int extraAddMinutes = 0;
|
||||
|
||||
if (beginTime <= restBeginTime && beginTime + addMinutes >= restBeginTime)
|
||||
{
|
||||
int tempEndTime = beginTime + addMinutes;
|
||||
// 跨越中午休息時間,要摳掉
|
||||
if (tempEndTime >= restEndTime && skipRest)
|
||||
extraAddMinutes = restEndTime - restBeginTime;
|
||||
// 跨進,但未跨越,不要摳掉
|
||||
if (tempEndTime < restEndTime)
|
||||
// extraAddMinutes = (int)Math.Truncate((restEndTime - tempEndTime).TotalMinutes);
|
||||
extraAddMinutes = 0;
|
||||
}
|
||||
|
||||
var result = beginTime + addMinutes + extraAddMinutes;
|
||||
return string.Format("{0:00}:{1:00}", (int)Math.Truncate((double)result / (double)60), result % 60);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class OverTimeItem
|
||||
{
|
||||
public string BeginTime { get; set; }
|
||||
public string EndTime { get; set; }
|
||||
public string TimeName { get; set; }
|
||||
public double Hours { get; set; }
|
||||
public double Amount { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user