public SetForm() { InitializeComponent(); _A = new AccessHelper(); colTarget.Items.Add("事病假"); colTarget.Items.Add("曠課"); colTarget.Items.Add("遲到"); //取得全部假別 foreach (AbsenceMappingInfo info in AbsenceMapping.SelectAll()) { colSource.Items.Add(info.Name); } //排序 _auList = _A.Select <AbsenceUDT>(); _auList.Sort(delegate(AbsenceUDT x, AbsenceUDT y) { string xx = x.Target.PadLeft(20, '0'); xx += x.Source.PadLeft(20, '0'); string yy = y.Target.PadLeft(20, '0'); yy += y.Source.PadLeft(20, '0'); return(xx.CompareTo(yy)); }); foreach (AbsenceUDT au in _auList) { DataGridViewRow row = new DataGridViewRow(); row.CreateCells(dgv, au.Target, au.Source); dgv.Rows.Add(row); } }
/// <summary> /// 取得缺曠對照 List,一般_曠課.. /// </summary> /// <returns></returns> public static List <string> GetATMappingKey() { List <string> retVal = new List <string>(); List <string> key1List = new List <string>(); List <string> Key2List = new List <string>(); foreach (PeriodMappingInfo data in PeriodMapping.SelectAll()) { if (!key1List.Contains(data.Type)) { key1List.Add(data.Type); } } foreach (AbsenceMappingInfo data in AbsenceMapping.SelectAll()) { if (!Key2List.Contains(data.Name)) { Key2List.Add(data.Name); } } // 一般_曠課 foreach (string key1 in key1List) { foreach (string key2 in Key2List) { retVal.Add(key1 + "_" + key2); } } return(retVal); }
/// <summary> /// 取得缺曠對照 List,一般_曠課.. /// </summary> /// <returns></returns> public static List <string> GetATMappingKey() { List <string> retVal = new List <string>(); List <string> key1List = new List <string>(); List <string> Key2List = new List <string>(); foreach (PeriodMappingInfo data in PeriodMapping.SelectAll()) { if (!key1List.Contains(data.Type)) { key1List.Add(data.Type); } } foreach (AbsenceMappingInfo data in AbsenceMapping.SelectAll()) { if (!Key2List.Contains(data.Name)) { Key2List.Add(data.Name); } //2017/1/3 穎驊新增,因應文華ePost 缺曠格式與舊常春藤不一樣, //雖然本次和恩正討論後,用不到了,但日後有可能有用,先留著。 //if (!retVal.Contains(data.Name)) //{ // retVal.Add(data.Name); //} } // 一般_曠課 foreach (string key1 in key1List) { foreach (string key2 in Key2List) { retVal.Add(key1 + "_" + key2); } } return(retVal); }
private void AttendanceReport_Load(object sender, EventArgs e) { this.MaximumSize = this.MinimumSize = this.Size; // 預設學年度、學期 iptSchoolYear.Value = int.Parse(K12.Data.School.DefaultSchoolYear); iptSemester.Value = int.Parse(K12.Data.School.DefaultSemester); // 載入代碼對照 Dictionary <string, List <ConfigDataItem> > datas = _cd.GetConfigDataItemDict(); Dictionary <string, string> dataDict = GetDefaultItemDict(); List <string> dataList1 = GetDefaultPeridList(); Dictionary <string, string> tmpDict1 = new Dictionary <string, string>(); Dictionary <string, string> tmpDict2 = GetDefaultPeridDict(); // 載入假別 List <AbsenceMappingInfo> AbsenceMappingList = AbsenceMapping.SelectAll(); List <string> aList = new List <string>(); aList.Add(""); foreach (AbsenceMappingInfo rec in AbsenceMappingList) { aList.Add(rec.Name); if (!tmpDict1.ContainsKey(rec.Name)) { tmpDict1.Add(rec.Name, rec.Name); } } colType.Items.AddRange(aList.ToArray()); // 載入節次對照 List <PeriodMappingInfo> PeriodMappingList = PeriodMapping.SelectAll(); // 節次>類別 List <string> pList = new List <string>(); pList.Add(""); foreach (PeriodMappingInfo rec in PeriodMappingList) { pList.Add(rec.Name); } colPerType.Items.AddRange(pList.ToArray()); colType.DropDownStyle = ComboBoxStyle.DropDownList; colPerType.DropDownStyle = ComboBoxStyle.DropDownList; #region 讀取設定值 // 有儲存過 假別 if (datas.ContainsKey(_ConfigName1)) { List <string> defList = new List <string>(); int rowIdx = 0; foreach (ConfigDataItem cdi in datas[_ConfigName1]) { defList.Add(cdi.Name); rowIdx = dgData.Rows.Add(); dgData.Rows[rowIdx].Cells[colName.Index].Value = cdi.Name; dgData.Rows[rowIdx].Cells[colValue.Index].Value = cdi.Value; dgData.Rows[rowIdx].Cells[colType.Index].Value = cdi.TargetName; } // 檢查加入預設是否完整 foreach (string key in dataDict.Keys) { if (!defList.Contains(key)) { rowIdx = dgData.Rows.Add(); dgData.Rows[rowIdx].Cells[colName.Index].Value = key; dgData.Rows[rowIdx].Cells[colValue.Index].Value = dataDict[key]; if (tmpDict1.ContainsKey(key)) { dgData.Rows[rowIdx].Cells[colType.Index].Value = tmpDict1[key]; } else { dgData.Rows[rowIdx].Cells[colType.Index].Value = ""; } } } } else { // 完全沒使用過 foreach (string key in dataDict.Keys) { int rowIdx = dgData.Rows.Add(); dgData.Rows[rowIdx].Cells[colName.Index].Value = key; dgData.Rows[rowIdx].Cells[colValue.Index].Value = dataDict[key]; if (tmpDict1.ContainsKey(key)) { dgData.Rows[rowIdx].Cells[colType.Index].Value = tmpDict1[key]; } else { dgData.Rows[rowIdx].Cells[colType.Index].Value = ""; } } } // 有儲存過 節次 if (datas.ContainsKey(_ConfigName2)) { List <string> defList = new List <string>(); int rowIdx = 0; foreach (ConfigDataItem cdi in datas[_ConfigName2]) { defList.Add(cdi.Name); rowIdx = dgPerdata.Rows.Add(); dgPerdata.Rows[rowIdx].Cells[colPerName.Index].Value = cdi.Name; dgPerdata.Rows[rowIdx].Cells[colPerType.Index].Value = cdi.TargetName; } // 檢查加入預設是否完整 foreach (string key in dataList1) { if (!defList.Contains(key)) { rowIdx = dgPerdata.Rows.Add(); dgPerdata.Rows[rowIdx].Cells[colPerName.Index].Value = key; dgPerdata.Rows[rowIdx].Cells[colPerType.Index].Value = ""; if (tmpDict2.ContainsKey(key)) { dgPerdata.Rows[rowIdx].Cells[colPerType.Index].Value = tmpDict2[key]; } } } } else { // 完全沒使用過 foreach (string key in dataList1) { int rowIdx = dgPerdata.Rows.Add(); dgPerdata.Rows[rowIdx].Cells[colPerName.Index].Value = key; dgPerdata.Rows[rowIdx].Cells[colPerType.Index].Value = ""; if (tmpDict2.ContainsKey(key)) { dgPerdata.Rows[rowIdx].Cells[colPerType.Index].Value = tmpDict2[key]; } } } Dictionary <string, string> ds = _cd.GetKeyValueItem(_ConfigName3); if (ds.ContainsKey("學年度")) { if (ds["學年度"] != "") { iptSchoolYear.Value = int.Parse(ds["學年度"]); } } if (ds.ContainsKey("學期")) { if (ds["學期"] != "") { iptSemester.Value = int.Parse(ds["學期"]); } } #endregion }
public void Export() { //取得班級ID List <string> ClassIDList = K12.Presentation.NLDPanels.Class.SelectedSource; List <string> 會影響全勤的假別 = new List <string>(); foreach (AbsenceMappingInfo each in AbsenceMapping.SelectAll()) { if (!each.Noabsence) { 會影響全勤的假別.Add(each.Name); } } //取得班級學生 List <StudentRecord> StudentList = Student.SelectByClassIDs(ClassIDList); //所有學生 Dictionary <string, StudentRecord> StudentDic = new Dictionary <string, StudentRecord>(); //不全勤學生 Dictionary <string, StudentRecord> noOK_StudentList = new Dictionary <string, StudentRecord>(); //全勤的學生 Dictionary <string, StudentRecord> OK_StudentList = new Dictionary <string, StudentRecord>(); foreach (StudentRecord each in StudentList) { if (each.Status == StudentRecord.StudentStatus.一般 || each.Status == StudentRecord.StudentStatus.延修) { if (!StudentDic.ContainsKey(each.ID)) { StudentDic.Add(each.ID, each); } } } //取得學生所有的缺曠資料 //如果沒有缺曠記錄的 //就算是全勤 List <AttendanceRecord> TestList = Attendance.SelectByStudentIDs(StudentDic.Keys); List <AttendanceRecord> AttendanceList = new List <AttendanceRecord>(); if (checkBoxX1.Checked) { //相同學年度/學期 foreach (AttendanceRecord attendnace in TestList) { int schoolYear = int.Parse(cboSchoolYear.SelectedItem.ToString()); int semester = int.Parse(cboSemester.SelectedItem.ToString()); if (attendnace.SchoolYear == schoolYear && attendnace.Semester == semester) { AttendanceList.Add(attendnace); } } } else { AttendanceList.AddRange(TestList); } foreach (AttendanceRecord each in AttendanceList) { foreach (K12.Data.AttendancePeriod period in each.PeriodDetail) { if (會影響全勤的假別.Contains(period.AbsenceType)) { if (!noOK_StudentList.ContainsKey(period.RefStudentID)) { noOK_StudentList.Add(period.RefStudentID, StudentDic[period.RefStudentID]); } } } } foreach (StudentRecord each in StudentDic.Values) { if (!noOK_StudentList.ContainsKey(each.ID)) { if (!OK_StudentList.ContainsKey(each.ID)) { OK_StudentList.Add(each.ID, each); } } } List <StudentRecord> StudentRecordList = new List <StudentRecord>(); foreach (StudentRecord each in OK_StudentList.Values) { StudentRecordList.Add(each); } StudentRecordList = SortClassIndex.K12Data_StudentRecord(StudentRecordList); Workbook book = new Workbook(); Worksheet sheet = book.Worksheets[0]; string schoolName = School.ChineseName; Cell A1 = sheet.Cells["A1"]; A1.Style.Borders.SetColor(Color.Black); string A1Name = schoolName + " "; if (checkBoxX1.Checked) { A1Name += "(" + cboSchoolYear.SelectedItem.ToString() + "/" + cboSemester.SelectedItem.ToString() + ") "; } A1Name += "全勤學生名單"; sheet.Name = "全勤學生名單"; A1.PutValue(A1Name); A1.Style.HorizontalAlignment = TextAlignmentType.Center; sheet.Cells.Merge(0, 0, 1, 5); FormatCell(sheet.Cells["A2"], "編號"); FormatCell(sheet.Cells["B2"], "班級"); FormatCell(sheet.Cells["C2"], "座號"); FormatCell(sheet.Cells["D2"], "姓名"); FormatCell(sheet.Cells["E2"], "學號"); int index = 1; foreach (StudentRecord e in StudentRecordList) { int rowIndex = index + 2; FormatCell(sheet.Cells["A" + rowIndex], index.ToString()); FormatCell(sheet.Cells["B" + rowIndex], string.IsNullOrEmpty(e.RefClassID) ? "" : e.Class.Name); FormatCell(sheet.Cells["C" + rowIndex], e.SeatNo.HasValue ? e.SeatNo.Value.ToString() : ""); FormatCell(sheet.Cells["D" + rowIndex], e.Name); FormatCell(sheet.Cells["E" + rowIndex], e.StudentNumber); index++; } string path = Path.Combine(Application.StartupPath, "Reports"); path = Path.Combine(path, book.Worksheets[0].Name + ".xls"); int i = 1; while (true) { string newPath = Path.GetDirectoryName(path) + "\\" + Path.GetFileNameWithoutExtension(path) + (i++) + Path.GetExtension(path); if (!File.Exists(newPath)) { path = newPath; break; } } try { book.Save(path); } catch (IOException) { try { FileInfo file = new FileInfo(path); string nameTempalte = file.FullName.Replace(file.Extension, "") + "{0}.xls"; int count = 1; string fileName = string.Format(nameTempalte, count); while (File.Exists(fileName)) { fileName = string.Format(nameTempalte, count++); } book.Save(fileName); path = fileName; } catch (Exception ex) { MsgBox.Show("檔案儲存失敗:" + ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } catch (Exception ex) { MsgBox.Show("檔案儲存失敗:" + ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { Process.Start(path); } catch (Exception ex) { MsgBox.Show("檔案開啟失敗:" + ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }