539 lines
26 KiB
C#
539 lines
26 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace FPJ0000.JobReport_
|
|
{
|
|
public partial class rJobReportPrjSche : Form
|
|
{
|
|
Boolean binit = false;
|
|
public rJobReportPrjSche()
|
|
{
|
|
InitializeComponent();
|
|
this.WindowState = FormWindowState.Maximized;
|
|
}
|
|
|
|
private void rJobReport_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
var myCI = new System.Globalization.CultureInfo("ko-KR");
|
|
var myCal = myCI.Calendar;
|
|
var myCWR = myCI.DateTimeFormat.CalendarWeekRule;
|
|
DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
|
|
var dat = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW);
|
|
tbWW.Tag = dat;
|
|
tbWW.Text = $"ww{dat:00}";
|
|
|
|
|
|
this.tbProcess.Items.Clear();
|
|
tbProcess.Items.Add("--전체--");
|
|
var taProcess = new dsReportTableAdapters.ProcessListTableAdapter();
|
|
var dtProcessList = taProcess.GetData(FCOMMON.info.Login.gcode);
|
|
foreach (dsReport.ProcessListRow dr in dtProcessList.Rows)
|
|
tbProcess.Items.Add(dr.processs);
|
|
|
|
//this.tbProcess.Text = FCOMMON.info.Login.process;
|
|
tbProcess.SelectedIndex = 0;
|
|
tbProcess.Enabled = false;
|
|
//사용자 목록을 선택한다
|
|
UpdateUserList();
|
|
|
|
refrehData();
|
|
binit = true;
|
|
}
|
|
void UpdateUserList()
|
|
{
|
|
var ta = new dsPRJTableAdapters.vJobReportForUserListTableAdapter();
|
|
|
|
cmbUser.Items.Clear();
|
|
cmbUser.Items.Add("--전체--"); ;
|
|
//일반사용자 목록 가져온다
|
|
dsPRJ.vJobReportForUserListDataTable userlist;
|
|
|
|
if (tbProcess.SelectedIndex <= 0)
|
|
{
|
|
//공정구분없이 전체사용자를 가져온다
|
|
userlist = ta.GetData(FCOMMON.info.Login.gcode, "%");
|
|
// db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode).OrderBy(t => t.name).GroupBy(t => t.name);
|
|
}
|
|
else
|
|
{
|
|
userlist = ta.GetData(FCOMMON.info.Login.gcode, tbProcess.Text);
|
|
//db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.userProcess == tbProcess.Text).OrderBy(t => t.name).GroupBy(t => t.name);
|
|
}
|
|
|
|
//if (tbProcess.SelectedIndex != 0) userlist = userlist.Where(t => t.processs == tbProcess.Text); //해당 공정의 인원만 처리한다
|
|
|
|
uids = new List<string>();
|
|
names = new List<string>();
|
|
foreach (var dr in userlist)
|
|
{
|
|
//var dr = item.First();
|
|
cmbUser.Items.Add(String.Format("[{0}] {1}", dr.id.Trim(), dr.name.Trim()));
|
|
uids.Add(dr.id.Trim());
|
|
names.Add(dr.name.Trim());
|
|
}
|
|
|
|
//if (tbProcess.SelectedIndex > 0)
|
|
cmbUser.Text = string.Format("[{0}] {1}", FCOMMON.info.Login.no, FCOMMON.info.Login.nameK);
|
|
|
|
if (cmbUser.SelectedIndex < 0 && cmbUser.Items.Count > 0) cmbUser.SelectedIndex = 0; //기본전체로 선택해준다.
|
|
}
|
|
|
|
List<string> uids, names;
|
|
|
|
void refrehData()
|
|
{
|
|
|
|
//근문일수,시간
|
|
// var vSD = dts.Value.ToShortDateString();
|
|
//var vED = dte.Value.ToShortDateString();
|
|
var curww = int.Parse(DateTime.Now.ToString("yy") + "00") + int.Parse(tbWW.Tag.ToString());
|
|
|
|
string prcname = tbProcess.SelectedIndex < 1 ? "%" : tbProcess.Text.Trim();
|
|
var taH = new dsReportTableAdapters.UserScheduleTableTableAdapter();
|
|
|
|
var username = cmbUser.Text.Trim();
|
|
var userfilter = "%";
|
|
var uid = string.Empty;
|
|
if (cmbUser.SelectedIndex > 0)
|
|
{
|
|
uid = username.Substring(1, username.IndexOf("]") - 1);// "395552";
|
|
userfilter = cmbUser.SelectedIndex == 0 ? "%" : "%" + uid + "%";
|
|
}
|
|
|
|
taH.Fill(this.dsReport.UserScheduleTable, FCOMMON.info.Login.gcode, userfilter);
|
|
|
|
//담당자별로 데이터를 쪼개야한다 230209
|
|
var dtnew = new dsReport.UserScheduleTableDataTable();
|
|
foreach (dsReport.UserScheduleTableRow dr in dsReport.UserScheduleTable)
|
|
{
|
|
var userlist = dr.uid.Replace(",", "/").Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
|
|
var namelist = dr.uidname.Replace(",", "/").Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
|
|
for (int i = 0; i < userlist.Length; i++)
|
|
{
|
|
var userid = userlist[i].Trim();
|
|
if (uid.isEmpty() == false && uid.Equals(userid) == false) continue;
|
|
var usernm = userid;
|
|
if (userlist.Length == namelist.Length) usernm = namelist[i].Trim();
|
|
|
|
//없는 사용자 제외
|
|
if (uids.Contains(userid) == false && names.Contains(usernm) == false) continue;
|
|
|
|
//모든 컬럼의 데이터를 쓴다 단 idx는 제외한다
|
|
var newdr = dtnew.NewUserScheduleTableRow();
|
|
newdr.idx = dtnew.Rows.Count;
|
|
newdr.uid = userid.Trim();
|
|
newdr.uidname = usernm.Trim();
|
|
foreach (DataColumn dc in dtnew.Columns)
|
|
{
|
|
var colname = dc.ColumnName.ToLower();
|
|
if (colname.Equals("idx")) continue;
|
|
if (colname.Equals("uid")) continue;
|
|
if (colname.Equals("uidname")) continue;
|
|
newdr[colname] = dr[colname];
|
|
}
|
|
newdr.userprocess = newdr.userprocess.Trim();
|
|
dtnew.AddUserScheduleTableRow(newdr);
|
|
}
|
|
}
|
|
|
|
//this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
|
|
//this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth;
|
|
//this.reportViewer1.RefreshReport();
|
|
|
|
//그리드뷰 생성
|
|
fp1.ActiveSheet.RowCount = 0;
|
|
fp1.ActiveSheet.Columns.Clear();
|
|
|
|
|
|
var wekklist = new string[] { "일", "월", "화", "수", "목", "금", "토" };
|
|
|
|
|
|
var colidx = 0;
|
|
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "공정";
|
|
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "담당자";
|
|
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "사번";
|
|
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "상태";
|
|
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "프로젝트";
|
|
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "시작";
|
|
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "만료";
|
|
//dv1.Columns.Add("dvcu_hrs", "시간");
|
|
|
|
//오늘의WW추가
|
|
//var myCI = new System.Globalization.CultureInfo("ko-KR");
|
|
//var myCal = myCI.Calendar;
|
|
//var myCWR = myCI.DateTimeFormat.CalendarWeekRule;
|
|
//DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
|
|
//var dat = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW);
|
|
//var curwwstr = (DateTime.Now.Year - 2000).ToString() + dat.ToString("00");
|
|
|
|
|
|
//ww컬럼생성
|
|
List<int> wwlist = new List<int>();
|
|
wwlist.Add(curww);
|
|
int ww = 0;
|
|
foreach (dsReport.UserScheduleTableRow dr in dtnew)
|
|
{
|
|
if (dr.sw.Equals("00-00") == false)
|
|
{
|
|
ww = int.Parse(dr.sw.Replace("-", ""));
|
|
if (wwlist.Contains(ww) == false) wwlist.Add(ww);
|
|
}
|
|
if (dr.ew.Equals("00-00") == false)
|
|
{
|
|
ww = int.Parse(dr.ew.Replace("-", ""));
|
|
if (wwlist.Contains(ww) == false) wwlist.Add(ww);
|
|
}
|
|
if (dr.swa.Equals("00-00") == false)
|
|
{
|
|
ww = int.Parse(dr.swa.Replace("-", ""));
|
|
if (wwlist.Contains(ww) == false) wwlist.Add(ww);
|
|
}
|
|
if (dr.ewa.Equals("00-00") == false)
|
|
{
|
|
ww = int.Parse(dr.ewa.Replace("-", ""));
|
|
if (wwlist.Contains(ww) == false) wwlist.Add(ww);
|
|
}
|
|
|
|
}
|
|
|
|
//var wwlist = dsReport.UserScheduleTable.GroupBy(t => t.ww).Select(t => int.Parse(t.Key)).OrderBy(t => t).ToList();
|
|
var wwfont = new Font("Consolas", 8f);
|
|
|
|
var curyystr = DateTime.Now.ToString("yy");
|
|
foreach (var item in wwlist.OrderBy(t => t))
|
|
{
|
|
var wwname = item.ToString("0000");
|
|
var yy1 = wwname.Substring(0, 2);
|
|
var ww1 = wwname.Substring(2);
|
|
|
|
|
|
fp1.ActiveSheet.Columns.Add(colidx, 1);
|
|
|
|
fp1.ActiveSheet.Columns[colidx].Tag = item;
|
|
if (item == curww) //이번주라면?
|
|
{
|
|
fp1.ActiveSheet.Columns[colidx].Label = $"(ww{ww1:00})";
|
|
fp1.ActiveSheet.Columns[colidx].BackColor = Color.LightSlateGray;
|
|
}
|
|
else
|
|
{
|
|
if (curyystr.Equals(yy1))
|
|
fp1.ActiveSheet.Columns[colidx].Label = $"ww{ww1:00}"; //같은년도
|
|
else
|
|
fp1.ActiveSheet.Columns[colidx].Label = $"ww{ww1:00}\ny{yy1}"; //다른년도
|
|
}
|
|
colidx += 1;
|
|
}
|
|
|
|
//사용자별로 그룹을 먼저 짓는다
|
|
var ridx = 0;
|
|
var gidx = 0;
|
|
|
|
if (radioButton1.Checked)
|
|
{
|
|
//var grp_prc = dtnew.GroupBy(t => t.userprocess).OrderBy(t => t.Key);
|
|
//foreach (var prc in grp_prc)
|
|
{
|
|
gidx += 1;
|
|
var grp_user = dtnew.GroupBy(t => t.uid).OrderBy(t => t.Key);
|
|
foreach (var user in grp_user)
|
|
{
|
|
//프로젝트별로 데이터를 표시한다.
|
|
var grp_list = user.GroupBy(t => t.name).OrderBy(t => t.Key);
|
|
foreach (var grp in grp_list)
|
|
{
|
|
var prjname = grp.Key;
|
|
var sdate = grp.Max(t => t.sdate);
|
|
var ddate = grp.Max(t => t.ddate);
|
|
var uname = grp.Max(t => t.uidname);
|
|
var status = grp.Max(t => t.status);
|
|
var processName = grp.Max(t => t.userprocess);
|
|
//string[] columns = new string[dv1.ColumnCount];
|
|
|
|
//var row = 0;
|
|
//columns[row++] = grp.Max(t => t.idx).ToString();
|
|
//columns[row++] = prjname;
|
|
//columns[row++] = sdate;
|
|
//columns[row++] = ddate;
|
|
|
|
|
|
var cidx = 0;
|
|
fp1.ActiveSheet.RowCount += 1;//.AddRows(ridx, 1);
|
|
|
|
var ctdef = new FarPoint.Win.Spread.CellType.TextCellType();
|
|
ctdef.WordWrap = true;
|
|
ctdef.Multiline = true;
|
|
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = $"{processName}";
|
|
|
|
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = $"{uname}";
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = $"{user.Key}";
|
|
|
|
if (status.Equals("진행"))
|
|
{
|
|
fp1.ActiveSheet.Cells[ridx, cidx].BackColor = Color.White;
|
|
fp1.ActiveSheet.Cells[ridx, cidx + 1].BackColor = Color.White;
|
|
}
|
|
else if (status.Equals("검토"))
|
|
{
|
|
fp1.ActiveSheet.Cells[ridx, cidx].BackColor = Color.SkyBlue;
|
|
fp1.ActiveSheet.Cells[ridx, cidx + 1].BackColor = Color.SkyBlue;
|
|
}
|
|
|
|
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = status;// grp.Max(t => t.idx);
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = prjname;
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = sdate;
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = ddate;
|
|
|
|
|
|
|
|
//세부항목데이터를 넣는다
|
|
foreach (var dr in grp)
|
|
{
|
|
//예측일
|
|
var sw = dr.sw;
|
|
if (sw.Equals("00-00")) continue;
|
|
var ew = dr.ew;
|
|
if (ew.Equals("00-00")) continue;
|
|
|
|
var isw = int.Parse(sw.Replace("-", ""));
|
|
var iew = int.Parse(ew.Replace("-", ""));
|
|
bool first = true;
|
|
int startcol = -1;
|
|
int endcol = -1;
|
|
for (int i = 4; i < fp1.ActiveSheet.ColumnCount; i++)
|
|
{
|
|
var col = fp1.ActiveSheet.Columns[i];
|
|
if (col.Tag == null) continue;
|
|
var colno = int.Parse(col.Tag.ToString());
|
|
if (colno >= isw && colno <= iew)
|
|
{
|
|
// columns[i] = "O";
|
|
|
|
if (dr.complete || dr.progress > 99)
|
|
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Lime;
|
|
else if (dr.progress < 50)
|
|
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Tomato;
|
|
else
|
|
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Gold;
|
|
|
|
if (first)
|
|
{
|
|
fp1.ActiveSheet.Cells[ridx, i].Value = dr.title + "\n" + dr.progress.ToString("N0") + "%";
|
|
fp1.ActiveSheet.Cells[ridx, i].Note = dr.title + "\n" + dr.progress.ToString("N0") + "%";
|
|
first = false;
|
|
startcol = i;
|
|
}
|
|
else
|
|
{
|
|
endcol = i;
|
|
}
|
|
}
|
|
|
|
fp1.ActiveSheet.Cells[ridx, i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
|
|
fp1.ActiveSheet.Cells[ridx, i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
|
|
fp1.ActiveSheet.Cells[ridx, i].Font = new Font("맑은 고딕", 7);
|
|
fp1.ActiveSheet.Cells[ridx, i].CellType = ctdef;
|
|
}
|
|
if (startcol != -1 && endcol != -1)
|
|
{
|
|
fp1.ActiveSheet.AddSpanCell(ridx, startcol, 1, (endcol - startcol + 1));
|
|
// fp1.ActiveSheet.Cells[ridx, startcol].CellType = ctdef;
|
|
|
|
}
|
|
|
|
}
|
|
// dv1.Rows.Add(columns);
|
|
ridx += 1;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//프로젝트 담당자
|
|
var grp_prj = dtnew.GroupBy(t => t.name).OrderBy(t => t.Key);
|
|
foreach (var prj in grp_prj)
|
|
{
|
|
var grp_user = prj.GroupBy(t => t.uid).OrderBy(t => t.Key);
|
|
foreach (var user in grp_user)
|
|
{
|
|
//프로젝트별로 데이터를 표시한다.
|
|
var grp_prc = user.GroupBy(t => t.userprocess).OrderBy(t => t.Key);
|
|
foreach (var prc in grp_prc)
|
|
{
|
|
var prjname = prc.Key;
|
|
var sdate = prc.Max(t => t.sdate);
|
|
var ddate = prc.Max(t => t.ddate);
|
|
var uname = prc.Max(t => t.uidname);
|
|
var status = prc.Max(t => t.status);
|
|
//string[] columns = new string[dv1.ColumnCount];
|
|
|
|
//var row = 0;
|
|
//columns[row++] = grp.Max(t => t.idx).ToString();
|
|
//columns[row++] = prjname;
|
|
//columns[row++] = sdate;
|
|
//columns[row++] = ddate;
|
|
|
|
|
|
var cidx = 0;
|
|
fp1.ActiveSheet.RowCount += 1;//.AddRows(ridx, 1);
|
|
|
|
var ctdef = new FarPoint.Win.Spread.CellType.TextCellType();
|
|
ctdef.WordWrap = true;
|
|
ctdef.Multiline = true;
|
|
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = prc.Key;
|
|
|
|
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = uname;
|
|
if (status.Equals("진행"))
|
|
{
|
|
fp1.ActiveSheet.Cells[ridx, cidx].BackColor = Color.White;
|
|
fp1.ActiveSheet.Cells[ridx, cidx + 1].BackColor = Color.White;
|
|
}
|
|
else if (status.Equals("검토"))
|
|
{
|
|
fp1.ActiveSheet.Cells[ridx, cidx].BackColor = Color.SkyBlue;
|
|
fp1.ActiveSheet.Cells[ridx, cidx + 1].BackColor = Color.SkyBlue;
|
|
}
|
|
|
|
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = status;// grp.Max(t => t.idx);
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = prj.Key;
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = sdate;
|
|
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = ddate;
|
|
|
|
|
|
|
|
//세부항목데이터를 넣는다
|
|
foreach (var dr in prc)
|
|
{
|
|
//예측일
|
|
var sw = dr.sw;
|
|
if (sw.Equals("00-00")) continue;
|
|
var ew = dr.ew;
|
|
if (ew.Equals("00-00")) continue;
|
|
|
|
var isw = int.Parse(sw.Replace("-", ""));
|
|
var iew = int.Parse(ew.Replace("-", ""));
|
|
bool first = true;
|
|
int startcol = -1;
|
|
int endcol = -1;
|
|
for (int i = 4; i < fp1.ActiveSheet.ColumnCount; i++)
|
|
{
|
|
var col = fp1.ActiveSheet.Columns[i];
|
|
if (col.Tag == null) continue;
|
|
var colno = int.Parse(col.Tag.ToString());
|
|
if (colno >= isw && colno <= iew)
|
|
{
|
|
// columns[i] = "O";
|
|
|
|
if (dr.complete || dr.progress > 99)
|
|
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Lime;
|
|
else if (dr.progress < 50)
|
|
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Tomato;
|
|
else
|
|
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Gold;
|
|
|
|
if (first)
|
|
{
|
|
fp1.ActiveSheet.Cells[ridx, i].Value = dr.title + "\n" + dr.progress.ToString("N0") + "%";
|
|
fp1.ActiveSheet.Cells[ridx, i].Note = dr.title + "\n" + dr.progress.ToString("N0") + "%";
|
|
first = false;
|
|
startcol = i;
|
|
}
|
|
else
|
|
{
|
|
endcol = i;
|
|
}
|
|
}
|
|
|
|
fp1.ActiveSheet.Cells[ridx, i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
|
|
fp1.ActiveSheet.Cells[ridx, i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
|
|
fp1.ActiveSheet.Cells[ridx, i].Font = new Font("맑은 고딕", 7);
|
|
fp1.ActiveSheet.Cells[ridx, i].CellType = ctdef;
|
|
}
|
|
if (startcol != -1 && endcol != -1)
|
|
{
|
|
fp1.ActiveSheet.AddSpanCell(ridx, startcol, 1, (endcol - startcol + 1));
|
|
// fp1.ActiveSheet.Cells[ridx, startcol].CellType = ctdef;
|
|
|
|
}
|
|
|
|
}
|
|
// dv1.Rows.Add(columns);
|
|
ridx += 1;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
fp1.ActiveSheet.FrozenColumnCount = 7;
|
|
fp1.ActiveSheet.AllowNoteEdit = true;
|
|
fp1.ActiveSheet.AutoUpdateNotes = true;
|
|
for (int i = 0; i < fp1.ActiveSheet.RowCount; i++)
|
|
{
|
|
fp1.ActiveSheet.Rows[i].Height = 40;
|
|
}
|
|
|
|
fp1.ActiveSheet.Columns[0].Width = 90;
|
|
fp1.ActiveSheet.Columns[1].Width = 50;
|
|
fp1.ActiveSheet.Columns[2].Width = 50;
|
|
fp1.ActiveSheet.Columns[3].Width = 35;
|
|
fp1.ActiveSheet.Columns[4].Width = 250;
|
|
fp1.ActiveSheet.Columns[5].Width = 75;
|
|
fp1.ActiveSheet.Columns[6].Width = 75;
|
|
|
|
|
|
return;
|
|
}
|
|
|
|
private void btSave_Click(object sender, EventArgs e)
|
|
{
|
|
//dv1.ExportData(string.Empty);
|
|
var sd = new SaveFileDialog();
|
|
sd.Filter = "excel file|*.xlsx";
|
|
if (sd.ShowDialog() != DialogResult.OK) return;
|
|
fp1.SaveExcel(sd.FileName);
|
|
|
|
if (FCOMMON.Util.MsgQ("저장된 파일을 열까요?") == DialogResult.Yes)
|
|
FCOMMON.Util.RunExplorer(sd.FileName);
|
|
}
|
|
|
|
private void btRefresh_Click(object sender, EventArgs e)
|
|
{
|
|
refrehData();
|
|
}
|
|
|
|
private void tbProcess_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (binit == false) return;
|
|
UpdateUserList();
|
|
}
|
|
|
|
|
|
private void cmbUser_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (binit == false) return;
|
|
refrehData();
|
|
}
|
|
|
|
private void label2_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|