工資條羣發神器,HR必備!!!
最近在開發一個工資條助手,話不多說,先上圖!
部分核心代碼
for (int i = startRow; i < sendNum + startRow; i++)
{
string dstEmailAddress = dataTable.Rows[i][dataTable.Columns.Count - 2].ToString().Trim();
if (!CheckEmail(dstEmailAddress))
{
dataTable.Rows[i][dataTable.Rows[i].ItemArray.Length - 1] = "無效郵箱";
}
else
{
email.mailToArray = new string[] { dstEmailAddress };//接收者郵件集合
email.mailBody = CreateHtml(i);
if (email.Send())
{
dataTable.Rows[i][dataTable.Rows[i].ItemArray.Length - 1] = "OK";
}
else
{
dataTable.Rows[i][dataTable.Rows[i].ItemArray.Length - 1] = "發送失敗";
}
//延時1秒,避免被封
Thread.Sleep(500);
}
//進度條更新
ProgressBarValue = (int)((i - startRow + 1) / (float)sendNum * 100);
SendEmailState = string.Format("已發送:{0}%", ProgressBarValue);
}
SendEmailState = "完成";
}));
#region 雙表頭
//倒數第一項:發送結果
//倒數第二項:郵箱
//倒數第三項:實發工資
//數據行索引:3【第4行開始】
//根據分組遍歷
foreach (var item in GloableVar.HeaderGroups)
{
//如果是行合併
if (item.RowMerge == true)
{
//表頭:值
str += string.Format("<div><span style=\"font-size: 22px;Margin:3\">{0}:{1}</span></div>", item.Title, dataTable.Rows[RowNum][item.dimension.FirstColumnIndex]);
}
//如果是列合併
else
{
//表頭
str += string.Format("<div><span style=\"font-size: 22px;Margin:5\">{0}</span></div>", item.Title);
//循環添加子項
for (int i = 0; i < item.ChildTitles.Count; i++)
{
str += string.Format("<div><span style=\"font-size: 18px;Margin:3;margin-left:25\">--{0}:{1}</span></div>", item.ChildTitles[i], dataTable.Rows[RowNum][item.dimension.FirstColumnIndex + i]);
}
}
}
//添加實發工資總數
str += string.Format("<hr style=\"Height: 3px; border: none; BackGround: LightBlue \"/></div><div><span style=\"font-size: 32px; color: rgb(0, 0, 255); \">實發工資:{0}</span></div>", dataTable.Rows[RowNum][dataTable.Columns.Count - 3].ToString());
#endregion
break;
後面再補充!