private void lbDefTemp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //取得設定檔 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Campus.Report.TemplateSettingForm TemplateForm; //畫面內容(範本內容,預設樣式 if (ConfigurationInCadre.Template != null) { TemplateForm = new Campus.Report.TemplateSettingForm(ConfigurationInCadre.Template, new Campus.Report.ReportTemplate(Properties.Resources.社團概況表_範本, Campus.Report.TemplateType.Word)); } else { ConfigurationInCadre.Template = new Campus.Report.ReportTemplate(Properties.Resources.社團概況表_範本, Campus.Report.TemplateType.Word); TemplateForm = new Campus.Report.TemplateSettingForm(ConfigurationInCadre.Template, new Campus.Report.ReportTemplate(Properties.Resources.社團概況表_範本, Campus.Report.TemplateType.Word)); } //預設名稱 TemplateForm.DefaultFileName = "社團概況表_範本"; //如果回傳為OK if (TemplateForm.ShowDialog() == DialogResult.OK) { //設定後樣試,回傳 ConfigurationInCadre.Template = TemplateForm.Template; //儲存 ConfigurationInCadre.Save(); } }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //取得設定檔 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(AnnouncementSingleConfig); //畫面內容(範本內容,預設樣式 Campus.Report.TemplateSettingForm TemplateForm; if (ConfigurationInCadre.Template != null) { TemplateForm = new Campus.Report.TemplateSettingForm(ConfigurationInCadre.Template, new Campus.Report.ReportTemplate(Properties.Resources.實驗中學_獎懲公告單, Campus.Report.TemplateType.Word)); } else { ConfigurationInCadre.Template = new Campus.Report.ReportTemplate(Properties.Resources.實驗中學_獎懲公告單, Campus.Report.TemplateType.Word); TemplateForm = new Campus.Report.TemplateSettingForm(ConfigurationInCadre.Template, new Campus.Report.ReportTemplate(Properties.Resources.實驗中學_獎懲公告單, Campus.Report.TemplateType.Word)); } //預設名稱 TemplateForm.DefaultFileName = "獎懲公告單(範本)"; //如果回傳為OK if (TemplateForm.ShowDialog() == DialogResult.OK) { //設定後樣試,回傳 ConfigurationInCadre.Template = TemplateForm.Template; //儲存 ConfigurationInCadre.Save(); } }
private void SLRClassTotalMulti_Load(object sender, EventArgs e) { // 設定背景執行哪個method _BGW.DoWork += new DoWorkEventHandler(BGW_DoWork); // 當執行結束後, 呼叫哪個method _BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted); // 取得設定檔 Campus.Report.ReportConfiguration reportConfig = new Campus.Report.ReportConfiguration(_SLRClassTotalMulti_ReportCofig); // 如果沒有設定過樣板 if (reportConfig.Template == null) { reportConfig.Template = new Campus.Report.ReportTemplate(Properties.Resources.班級服務學習統計表_多學期_範本, Campus.Report.TemplateType.Word); reportConfig.Save(); } }
private void SLRClassTotalMulti_Load(object sender, EventArgs e) { // 設定背景執行哪個method _BGW.DoWork += new DoWorkEventHandler(BGW_DoWork); // 當執行結束後, 呼叫哪個method _BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted); // 取得設定檔 Campus.Report.ReportConfiguration reportConfig = new Campus.Report.ReportConfiguration(_SLRClassTotalMulti_ReportCofig); // 如果沒有設定過樣板 if (reportConfig.Template == null) { reportConfig.Template = new Campus.Report.ReportTemplate(Properties.Resources.班級服務學習統計表_多學期_範本, Campus.Report.TemplateType.Word); reportConfig.Save(); } }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //取得設定檔 Campus.Report.ReportConfiguration reportConfig = new Campus.Report.ReportConfiguration(_SLRClassTotalMulti_ReportCofig); //畫面內容(範本內容,預設樣式 Campus.Report.TemplateSettingForm TemplateForm = new Campus.Report.TemplateSettingForm(reportConfig.Template, new Campus.Report.ReportTemplate(Properties.Resources.班級服務學習統計表_多學期_範本, Campus.Report.TemplateType.Word)); //預設名稱 TemplateForm.DefaultFileName = "班級服務學習統計表_多學期(範本)"; //如果回傳為OK if (TemplateForm.ShowDialog() == DialogResult.OK) { //設定後樣試,回傳 reportConfig.Template = TemplateForm.Template; //儲存 reportConfig.Save(); } }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //取得設定檔 Campus.Report.ReportConfiguration reportConfig = new Campus.Report.ReportConfiguration(_SLRClassTotalMulti_ReportCofig); //畫面內容(範本內容,預設樣式 Campus.Report.TemplateSettingForm TemplateForm = new Campus.Report.TemplateSettingForm(reportConfig.Template, new Campus.Report.ReportTemplate(Properties.Resources.班級服務學習統計表_多學期_範本, Campus.Report.TemplateType.Word)); //預設名稱 TemplateForm.DefaultFileName = "班級服務學習統計表_多學期(範本)"; //如果回傳為OK if (TemplateForm.ShowDialog() == DialogResult.OK) { //設定後樣試,回傳 reportConfig.Template = TemplateForm.Template; //儲存 reportConfig.Save(); } }
void BGW_DoWork(object sender, DoWorkEventArgs e) { Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ClassPrint_Config_1); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ClassPrint_Config_1); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.班級點名單_週報表樣式範本_, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 Template = ConfigurationInCadre.Template.ToDocument(); } #region 日期 List <string> config = new List <string>(); XmlElement day = (XmlElement)e.Argument; if (day == null) { MsgBox.Show("第一次使用報表請先進行[日期設定]"); return; } else { config.Clear(); foreach (XmlElement xml in day.SelectNodes("item")) { config.Add(xml.InnerText); } } #endregion DataTable table = new DataTable(); table.Columns.Add("學校名稱"); table.Columns.Add("班級名稱"); table.Columns.Add("學年度"); table.Columns.Add("學期"); table.Columns.Add("班導師"); table.Columns.Add("列印日期"); table.Columns.Add("上課開始"); table.Columns.Add("上課結束"); table.Columns.Add("人數"); for (int x = 1; x <= 日期多少天; x++) { table.Columns.Add(string.Format("日期_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("班級_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("座號_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("姓名_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("學號_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("性別_{0}", x)); } List <K12.Data.ClassRecord> crl = K12.Data.Class.SelectByIDs(K12.Presentation.NLDPanels.Class.SelectedSource); foreach (K12.Data.ClassRecord cr in crl) { DataRow row = table.NewRow(); row["學校名稱"] = K12.Data.School.ChineseName; row["班級名稱"] = cr.Name; row["學年度"] = School.DefaultSchoolYear; row["學期"] = School.DefaultSemester; row["班導師"] = cr.Teacher.Name; row["列印日期"] = DateTime.Today.ToShortDateString(); row["上課開始"] = config[0]; row["上課結束"] = config[config.Count - 1]; for (int x = 1; x <= config.Count; x++) { row[string.Format("日期_{0}", x)] = config[x - 1]; } int y = 1; foreach (StudentRecord obj in cr.Students) { if (!(obj.Status == StudentRecord.StudentStatus.一般 || obj.Status == StudentRecord.StudentStatus.延修)) { continue; } if (y <= 學生多少個) { row[string.Format("班級_{0}", y)] = obj.Class != null ? obj.Class.Name : ""; row[string.Format("座號_{0}", y)] = obj.SeatNo.HasValue ? obj.SeatNo.Value.ToString() : ""; row[string.Format("姓名_{0}", y)] = obj.Name; row[string.Format("學號_{0}", y)] = obj.StudentNumber; row[string.Format("性別_{0}", y)] = obj.Gender; y++; } } row["人數"] = y - 1; table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ConfigName); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.務學習時數記錄卡範本, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { Template = ConfigurationInCadre.Template.ToDocument(); } DataTable table = new DataTable(); for (int x = 1; x <= 務學習記錄筆數; x++) { //table.Columns.Add(string.Format("報名開始時間_{0}", x)); //table.Columns.Add(string.Format("報名結束時間_{0}", x)); table.Columns.Add(string.Format("學年度_{0}", x)); table.Columns.Add(string.Format("學期_{0}", x)); table.Columns.Add(string.Format("主辦單位_{0}", x)); table.Columns.Add(string.Format("服務日期_{0}", x)); table.Columns.Add(string.Format("備註_{0}", x)); //table.Columns.Add(string.Format("服務地點_{0}", x)); table.Columns.Add(string.Format("時數_{0}", x)); table.Columns.Add(string.Format("服務事由_{0}", x)); //table.Columns.Add(string.Format("人數上限_{0}", x)); table.Columns.Add(string.Format("登錄日期_{0}", x)); } table.Columns.Add("一上總時數"); table.Columns.Add("一下總時數"); table.Columns.Add("二上總時數"); table.Columns.Add("二下總時數"); table.Columns.Add("三上總時數"); table.Columns.Add("三下總時數"); table.Columns.Add("學校名稱"); table.Columns.Add("班級"); table.Columns.Add("座號"); //table.Columns.Add("學年度"); //table.Columns.Add("學期"); table.Columns.Add("姓名"); table.Columns.Add("學號"); table.Columns.Add("性別"); table.Columns.Add("服務學習記錄筆數"); table.Columns.Add("列印日期"); List <string> studentSelectedSource = K12.Presentation.NLDPanels.Student.SelectedSource; Dictionary <string, K12.Data.StudentRecord> dsr = K12.Data.Student.SelectByIDs(studentSelectedSource).ToDictionary(x => x.ID, x => x); //tool._Q = new FISCA.Data.QueryHelper(); //List<SLRecord> lslr = tool._Q.Select<SLRecord>("ref_student_id IN ('" + string.Join("','", studentSelectedSource) + "')"); DataTable dt = tool._Q.Select("select * from $k12.service.learning.record where ref_student_id IN ('" + string.Join("','", studentSelectedSource) + "')"); Dictionary <string, List <SLRecord> > dslr = new Dictionary <string, List <SLRecord> >(); foreach (DataRow row in dt.Rows) { if (!dslr.ContainsKey("" + row["ref_student_id"])) { dslr.Add("" + row["ref_student_id"], new List <SLRecord>()); } dslr["" + row["ref_student_id"]].Add(new SLRecord() { RefStudentID = "" + row["ref_student_id"], Hours = decimal.Parse("" + row["hours"]), OccurDate = DateTime.Parse("" + row["occur_date"]), Organizers = "" + row["organizers"], Reason = "" + row["reason"], RegisterDate = DateTime.Parse("" + row["register_date"]), Remark = "" + row["remark"], SchoolYear = int.Parse("" + row["school_year"]), Semester = int.Parse("" + row["semester"]), }); } Dictionary <string, SemesterHistoryRecord> lshr = K12.Data.SemesterHistory.SelectByStudentIDs(K12.Presentation.NLDPanels.Student.SelectedSource).ToDictionary(x => x.RefStudentID, x => x); foreach (string RefStudentID in studentSelectedSource) { DataRow row = table.NewRow(); row["學校名稱"] = School.ChineseName; row["列印日期"] = DateTime.Now.ToString("yyyy年M月d日"); if (dsr.ContainsKey(RefStudentID)) { row["班級"] = dsr[RefStudentID].Class != null ? dsr[RefStudentID].Class.Name : ""; row["座號"] = dsr[RefStudentID].SeatNo.HasValue ? dsr[RefStudentID].SeatNo.Value.ToString() : ""; row["姓名"] = dsr[RefStudentID].Name; row["學號"] = dsr[RefStudentID].StudentNumber; row["性別"] = dsr[RefStudentID].Gender; } int y = 1; if (dslr.ContainsKey(RefStudentID)) { Dictionary <string, decimal> dhours = new Dictionary <string, decimal>(); foreach (SLRecord slr in dslr[RefStudentID]) { row[string.Format("學年度_{0}", y)] = slr.SchoolYear; row[string.Format("學期_{0}", y)] = slr.Semester; row[string.Format("主辦單位_{0}", y)] = slr.Organizers; row[string.Format("服務日期_{0}", y)] = slr.OccurDate.AddYears(-1911).ToString("yyyy年M月d日"); row[string.Format("備註_{0}", y)] = slr.Remark; row[string.Format("時數_{0}", y)] = slr.Hours; row[string.Format("服務事由_{0}", y)] = slr.Reason; row[string.Format("登錄日期_{0}", y)] = slr.RegisterDate.AddYears(-1911).ToString("yyyy年M月d日"); string key = slr.SchoolYear + "#" + slr.Semester; if (!dhours.ContainsKey(key)) { dhours.Add(key, 0); } dhours[key] += slr.Hours; y++; } row["服務學習記錄筆數"] = y - 1; if (lshr.ContainsKey(RefStudentID)) { foreach (SemesterHistoryItem item2 in lshr[RefStudentID].SemesterHistoryItems) { string gy = "", sem = ""; switch (item2.GradeYear) { case 1: case 7: gy = "一"; break; case 2: case 8: gy = "二"; break; case 3: case 9: gy = "三"; break; } switch (item2.Semester) { case 1: sem = "上"; break; case 2: sem = "下"; break; } if (table.Columns.Contains(gy + sem + "總時數") && dhours.ContainsKey(item2.SchoolYear + "#" + item2.Semester)) { row[gy + sem + "總時數"] = dhours[item2.SchoolYear + "#" + item2.Semester]; } } } } for (; y < 20; y++) { row[string.Format("服務日期_{0}", y)] = "___年__月__日"; row[string.Format("時數_{0}", y)] = " "; } table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { //取得選擇 學年期 學校服務學習資料 List<SLRecord> slrList = tool._A.Select<SLRecord>(string.Format("school_year={0} and semester={1}", _school_year, _semester)); if (slrList.Count > 0) { bot = new SuperBOT(slrList); #region 範本 //整理取得報表範本 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(AnnouncementSingleConfig); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(AnnouncementSingleConfig); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.全校服務學習時數總表, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 Template = ConfigurationInCadre.Template.ToDocument(); } #endregion #region 列印報表 //填資料部份 DataTable table = new DataTable(); table.Columns.Add("學年度"); table.Columns.Add("學期"); table.Columns.Add("學校名稱"); table.Columns.Add("校內個人平均時數"); table.Columns.Add("校內全校服務總人次"); table.Columns.Add("校內全校服務總時數"); table.Columns.Add("校外個人平均時數"); table.Columns.Add("校外全校服務總人次"); table.Columns.Add("校外全校服務總時數"); table.Columns.Add("班級資料"); table.Columns.Add("主辦單位資料"); DataRow row = table.NewRow(); row["學年度"] = _school_year; row["學期"] = _semester; row["學校名稱"] = K12.Data.School.ChineseName; row["校內個人平均時數"] = bot.個人平均時數_校內; row["校內全校服務總人次"] = bot.全校服務總人次_校內; row["校內全校服務總時數"] = bot.全校服務總時數_校內; row["校外個人平均時數"] = bot.個人平均時數_校外; row["校外全校服務總人次"] = bot.全校服務總人次_校外; row["校外全校服務總時數"] = bot.全校服務總時數_校外; row["班級資料"] = ""; row["主辦單位資料"] = ""; table.Rows.Add(row); Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.MergeField += new Aspose.Words.Reporting.MergeFieldEventHandler(MailMerge_MergeField); PageOne.MailMerge.Execute(table); PageOne.MailMerge.DeleteFields(); e.Result = PageOne; #endregion } else e.Cancel = true; }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //取得設定檔 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(AnnouncementSingleConfig); //畫面內容(範本內容,預設樣式 Campus.Report.TemplateSettingForm TemplateForm; if (ConfigurationInCadre.Template != null) { TemplateForm = new Campus.Report.TemplateSettingForm(ConfigurationInCadre.Template, new Campus.Report.ReportTemplate(Properties.Resources.全校服務學習時數總表, Campus.Report.TemplateType.Word)); } else { ConfigurationInCadre.Template = new Campus.Report.ReportTemplate(Properties.Resources.全校服務學習時數總表, Campus.Report.TemplateType.Word); TemplateForm = new Campus.Report.TemplateSettingForm(ConfigurationInCadre.Template, new Campus.Report.ReportTemplate(Properties.Resources.全校服務學習時數總表, Campus.Report.TemplateType.Word)); } //預設名稱 TemplateForm.DefaultFileName = "全校服務學習時數總表(範本)"; //如果回傳為OK if (TemplateForm.ShowDialog() == DialogResult.OK) { //設定後樣試,回傳 ConfigurationInCadre.Template = TemplateForm.Template; //儲存 ConfigurationInCadre.Save(); } }
// 主要邏輯區塊 void BGW_DoWork(object sender, DoWorkEventArgs e) { //取得目前所選班級資料 List <string> classIDList = NLDPanels.Class.SelectedSource; //取得班級學生資料 List <StudentTotalObj> studentList = GetStudentOBJ(classIDList); //組合班級清單 List <ClassTotalObj> classList = GetClassOBJ(classIDList); //取得設定檔 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(_SLRClassTotalMulti_ReportCofig); _template = ConfigurationInCadre.Template.ToDocument(); _doc.Sections.Clear(); // 把查詢出來的學生加入各個班級物件裡 foreach (StudentTotalObj student in studentList) { foreach (ClassTotalObj aClass in classList) { if (student.ref_class_id == aClass.ref_class_id) { if (!aClass.StudentDic.ContainsKey(student.ref_student_id)) { aClass.StudentDic.Add(student.ref_student_id, student); } } } } // 取得學生IDs List <string> studentIDList = GetStudentID(studentList); string qu = string.Join("','", studentIDList); // 取得學生的服務時數 List <SLRecord> SLRList = _accessHelper.Select <SLRecord>("ref_student_id in ('" + qu + "')"); // 把服務時數加入各個班級的各個學生裡 foreach (SLRecord slrRecord in SLRList) { foreach (ClassTotalObj aClass in classList) { if (aClass.StudentDic.ContainsKey(slrRecord.RefStudentID)) { aClass.SetSLRInStudent(slrRecord); } } } classList.Sort(SortClass); // 把每個班級中的學生匯出至WORD foreach (ClassTotalObj aClass in classList) { if (aClass.StudentDic.Count > 0) { Document PageOne = SetDocument(aClass); if (PageOne != null) { _doc.Sections.Add(_doc.ImportNode(PageOne.FirstSection, true)); } } } e.Result = _doc; }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //將代碼傳入 ReportConfiguration物件 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ClassConfig_1); //建立一個範例物件 Campus.Report.TemplateSettingForm TemplateForm; if (ConfigurationInCadre.Template != null) { //有範本 TemplateForm = new Campus.Report.TemplateSettingForm(ConfigurationInCadre.Template, new Campus.Report.ReportTemplate(Properties.Resources.獎狀範本, Campus.Report.TemplateType.Word)); } else { //沒有範本,把預設範本填入 ConfigurationInCadre.Template = new Campus.Report.ReportTemplate(Properties.Resources.獎狀範本, Campus.Report.TemplateType.Word); TemplateForm = new Campus.Report.TemplateSettingForm(ConfigurationInCadre.Template, new Campus.Report.ReportTemplate(Properties.Resources.獎狀範本, Campus.Report.TemplateType.Word)); } //為範本設定一個儲存用的名稱 TemplateForm.DefaultFileName = "製作獎狀(範本)"; //如果使用者在範本設定畫面按下儲存 if (TemplateForm.ShowDialog() == DialogResult.OK) { //回傳使用者所上傳的範本樣式 ConfigurationInCadre.Template = TemplateForm.Template; //儲存 ConfigurationInCadre.Save(); } }
private void btnToX2s_Click(object sender, EventArgs e) { Calc_ScoreAndRank(); if (cboReportSortType.Text != "" || cboReportSortType.Text != null) StudDatas.Sort(CompareCode); int SchoolYear; string Semester; // 開啟 Word 範本 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ClassConfig_1); Document template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ClassConfig_1); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.獎狀範本, Campus.Report.TemplateType.Word); template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 template = ConfigurationInCadre.Template.ToDocument(); } //Dictionary<string, List<string>> userDefinedConfig = new Dictionary<string, List<string>>(); // 建立 Word 合併資料欄位 DataTable dt = new DataTable(); dt.Columns.Add("班級", typeof(string)); dt.Columns.Add("姓名", typeof(string)); dt.Columns.Add("學年度", typeof(string)); dt.Columns.Add("學期", typeof(string)); dt.Columns.Add("獎勵內容", typeof(string)); SchoolYear = SmartSchool.Customization.Data.SystemInformation.SchoolYear; if (SmartSchool.Customization.Data.SystemInformation.Semester == 1) Semester = "上學期"; else Semester = "下學期"; bool chkdata1 = false; string AwardString = ""; int rankXs = 0; int.TryParse(txtBox01.Text, out rankXs); int ScoreXs = 0; int.TryParse(txtBox02.Text, out ScoreXs); int ScoreX2 = 0; int.TryParse(txtBox03.Text, out ScoreX2); if (rb02.Checked == false || rankXs <= 0) rankXs = 2000;//未填入名次或全部時,依2000名為最大值 foreach (ClassRecord cr in ClassRecs) { foreach (StudentData sd in StudDatas) { if (cr.ClassName == sd.ClassName) { chkdata1 = false; //是否有資料 AwardString = ""; //獎勵內容 // 產生合併資料 if (sd.SumScore != -1 || sd.SumScoreA != -1 || sd.AvgScore != -1 || sd.AvgScoreA != -1) chkdata1 = true; if (lbxSubjct.Visible == true && cboSortType.Text == "科目排名") { foreach (ExamData ed in sd.lstStudExamScore) { if (cbYear.Checked == true && cbClass.Checked == true) if (((ed.SubjectName + ed.SubjectLevel) == lbxSubjct.Text) && (ed.ExamName == ExName) && ed.YearScoreRank <= rankXs && ed.ClassScoreRank <= rankXs) AwardString = AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級" + ed.SubjectName + "科第" + NumToChiChar(ed.YearScoreRank) + "名,全班第" + NumToChiChar(ed.ClassScoreRank) + "名,"; else chkdata1 = false; if (cbClass.Checked == false && cbYear.Checked == true) if (((ed.SubjectName + ed.SubjectLevel) == lbxSubjct.Text) && (ed.ExamName == ExName) && ed.YearScoreRank <= rankXs) AwardString = AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級" + ed.SubjectName + "科第" + NumToChiChar(ed.YearScoreRank) + "名,"; else chkdata1 = false; if (cbClass.Checked == true && cbYear.Checked == false) if (((ed.SubjectName + ed.SubjectLevel) == lbxSubjct.Text) && (ed.ExamName == ExName) && ed.ClassScoreRank <= rankXs) AwardString = AwardString = "參加" + cboExam.Text + "獲得全班" + ed.SubjectName + "科第" + NumToChiChar(ed.ClassScoreRank) + "名,"; else chkdata1 = false; } if (AwardString != "") AwardString = AwardString.Substring(0, AwardString.Length - 1); } if (cboSortType.Text == "總分排名" && cbClass.Checked == true && cbYear.Checked == false && sd.ClassSumRank <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全班第" + NumToChiChar((int)sd.ClassSumRank) + "名"; if (cboSortType.Text == "總分排名" && cbClass.Checked == true && cbYear.Checked == true && sd.YearSumRank <= rankXs && sd.ClassSumRank <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級第" + NumToChiChar((int)sd.YearSumRank) + "名,全班第" + NumToChiChar((int)sd.ClassSumRank) + "名"; if (cboSortType.Text == "總分排名" && cbClass.Checked == false && cbYear.Checked == true && sd.YearSumRank <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級第" + NumToChiChar((int)sd.YearSumRank) + "名"; if (cboSortType.Text == "加權總分排名" && cbClass.Checked == true && cbYear.Checked == false && sd.ClassSumRankA <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全班第" + NumToChiChar((int)sd.ClassSumRankA) + "名"; if (cboSortType.Text == "加權總分排名" && cbClass.Checked == true && cbYear.Checked == true && sd.YearSumRankA <= rankXs && sd.ClassSumRankA <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級第" + NumToChiChar((int)sd.YearSumRankA) + "名,全班第" + NumToChiChar((int)sd.ClassSumRankA) + "名"; if (cboSortType.Text == "加權總分排名" && cbClass.Checked == false && cbYear.Checked == true && sd.YearSumRankA <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級第" + NumToChiChar((int)sd.YearSumRankA) + "名"; if (cboSortType.Text == "平均排名" && cbClass.Checked == true && cbYear.Checked == false && sd.ClassAvgRank <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全班第" + NumToChiChar((int)sd.ClassAvgRank) + "名"; if (cboSortType.Text == "平均排名" && cbClass.Checked == true && cbYear.Checked == true && sd.YearAvgRank <= rankXs && sd.ClassAvgRank <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級第" + NumToChiChar((int)sd.YearAvgRank) + "名,全班第" + NumToChiChar((int)sd.ClassAvgRank) + "名"; if (cboSortType.Text == "平均排名" && cbClass.Checked == false && cbYear.Checked == true && sd.YearAvgRank <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級第" + NumToChiChar((int)sd.YearAvgRank) + "名"; if (cboSortType.Text == "加權平均排名" && cbClass.Checked == true && cbYear.Checked == false && sd.ClassAvgRankA <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全班第" + NumToChiChar((int)sd.ClassAvgRankA) + "名"; if (cboSortType.Text == "加權平均排名" && cbClass.Checked == true && cbYear.Checked == true && sd.ClassAvgRankA <= rankXs && sd.YearAvgRankA <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級第" + NumToChiChar((int)sd.YearAvgRankA) + "名,全班第" + NumToChiChar((int)sd.ClassAvgRankA) + "名"; if (cboSortType.Text == "加權平均排名" && cbClass.Checked == false && cbYear.Checked == true && sd.YearAvgRankA <= rankXs) AwardString = "參加" + cboExam.Text + "獲得全校" + NumToChiChar(int.Parse(sd.ClassYear)) + "年級第" + NumToChiChar((int)sd.YearAvgRankA) + "名"; if (rb03.Checked == true && sd.AvgScoreA >= ScoreXs) AwardString = "參加" + cboExam.Text + "加權平均" + ScoreXs + "分以上"; if (rb04.Checked == true && sd.ClassAvgRankAS <= 3 && sd.ClassAvgRankAS >= 0 && (sd.AvgScoreA - sd.AvgScoreA1) > 0) AwardString = "參加" + cboExam.Text + "獲得加權平均進步名次第" + NumToChiChar((int)(sd.ClassAvgRankAS)) + "名"; if (rb05.Checked == true && sd.ClassAvgRankAD <= 3 && sd.ClassAvgRankAD >= 0 && (sd.AvgScoreA - sd.AvgScoreA1) > 0) AwardString = "參加" + cboExam.Text + "獲得加權平均進步名次第" + NumToChiChar((int)(sd.ClassAvgRankAD)) + "名"; if (rb06.Checked == true && (sd.AvgScoreA - sd.AvgScoreA1 >= ScoreX2) && (sd.AvgScoreA != -1 && sd.AvgScoreA1 != -1)) AwardString = "參加" + cboExam.Text + "加權平均進步" + ScoreX2 + "分以上"; if (chkdata1 == true && AwardString != "") { dt.Rows.Add(sd.ClassName, sd.Name, SchoolYear, Semester, AwardString ); } } } } //template.MailMerge.MergeField += new MergeFieldEventHandler(MailMerge_MergeField); template.MailMerge.Execute(dt); SaveNow(template); }
void BGW_DoWork(object sender, DoWorkEventArgs e) { //開始列印學生清單 #region 資料整理 //取得需連線學校 LoginSchoolList = tool._A.Select <LoginSchool>(); // 取得社團老師資料 key : DSNS Dictionary <string, ClubTeacher> clubTeacherDic = new Dictionary <string, ClubTeacher>(); // 2018/01/23 羿均 新增 取得學校相關資料 SchoolClubDic = tool.SchoolClubDetail(LoginSchoolList); foreach (AcrossRecord Across in SchoolClubDic.Values) { foreach (OnlineClub club in Across.ClubDic.Values) { if (!Mergerdic.ContainsKey(club.ClubName)) { OnlineMergerClub Mclub = new OnlineMergerClub(tool.Point); Mergerdic.Add(club.ClubName, Mclub); Mclub.AddClub(club); } Mergerdic[club.ClubName].AddClub(club); } } //選擇了哪些社團(使用名稱進行比對) List <string> ClubIDList = K12.Club.Volunteer.ClubAdmin.Instance.SelectedSource; List <CLUBRecord> ClubRecordList = tool._A.Select <CLUBRecord>(ClubIDList); //社團名稱清單 List <string> ClubNameList = new List <string>(); foreach (CLUBRecord club in ClubRecordList) { ClubNameList.Add(club.ClubName); } //社團名稱 + 社團參與記錄學生 Dictionary <string, List <OnlineSCJoin> > dic = new Dictionary <string, List <OnlineSCJoin> >(); List <string> ClubNewNameList = new List <string>(); foreach (LoginSchool school in LoginSchoolList) { schoolMark = school.Remark; Connection me = new Connection(); me.Connect(school.School_Name, tool._contract, FISCA.Authentication.DSAServices.PassportToken); Dictionary <string, OnlineSCJoin> ScjList = RunService.GetSCJoinByClubName(me, ClubNameList); foreach (OnlineSCJoin each in ScjList.Values) { // 2018/01/24 羿均 紀錄:主要連線學校社團老師 if (school.School_Name == tool.Point) { if (!clubTeacherDic.ContainsKey(school.School_Name)) { ClubTeacher ct = new ClubTeacher(); ct.SchoolName = school.School_Name; ct.Teacher1 = each.TeacherName; ct.Teacher2 = each.TeacherName2; ct.Teacher3 = each.TeacherName3; clubTeacherDic.Add(school.School_Name, ct); } } string name = each.ClubName; if (!dic.ContainsKey(name)) { dic.Add(name, new List <OnlineSCJoin>()); ClubNewNameList.Add(name); } // 2018/01/23 羿均 新增部別欄位 each.SchoolReMark = school.Remark; dic[name].Add(each); } } ClubNewNameList.Sort(); #endregion #region 報表範本整理 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ConfigName); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.社團點名單_週報表樣式範本, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 Template = ConfigurationInCadre.Template.ToDocument(); } #endregion #region 範本再修改 List <string> config = new List <string>(); XmlElement day = (XmlElement)e.Argument; if (day == null) { MsgBox.Show("第一次使用報表請先進行[日期設定]"); return; } else { config.Clear(); foreach (XmlElement xml in day.SelectNodes("item")) { config.Add(xml.InnerText); } } SCJoinDataLoad scjoinData = new SCJoinDataLoad(); DataTable table = new DataTable(); table.Columns.Add("學校名稱"); table.Columns.Add("社團名稱"); table.Columns.Add("學年度"); table.Columns.Add("學期"); table.Columns.Add("上課地點"); table.Columns.Add("社團類型"); table.Columns.Add("社團代碼"); //table.Columns.Add("社團老師"); table.Columns.Add("社團老師1"); table.Columns.Add("社團老師2"); table.Columns.Add("社團老師3"); table.Columns.Add("列印日期"); table.Columns.Add("上課開始"); table.Columns.Add("上課結束"); table.Columns.Add("人數"); for (int x = 1; x <= 日期多少天; x++) { table.Columns.Add(string.Format("日期_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("社團_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("部別名稱_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("班級_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("座號_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("姓名_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("學號_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("性別_{0}", x)); } #endregion foreach (string each in scjoinData.CLUBRecordDic.Keys) { //社團資料 CLUBRecord cr = scjoinData.CLUBRecordDic[each]; } foreach (string each in ClubNewNameList) { DataRow row = table.NewRow(); row["學校名稱"] = K12.Data.School.ChineseName; row["學年度"] = School.DefaultSchoolYear; row["學期"] = School.DefaultSemester; row["列印日期"] = DateTime.Today.ToShortDateString(); row["上課開始"] = config[0]; row["上課結束"] = config[config.Count - 1]; row["社團名稱"] = each; // 2018/01/23 羿均 新增合併欄位: row["上課地點"] = Mergerdic[each].Location; row["社團類型"] = Mergerdic[each].ClubCategory; row["社團代碼"] = Mergerdic[each].ClubNumber; row["社團老師1"] = clubTeacherDic[tool.Point].Teacher1; row["社團老師2"] = clubTeacherDic[tool.Point].Teacher2; row["社團老師3"] = clubTeacherDic[tool.Point].Teacher3; //特殊 //if (dic[each].Count > 0) //row["社團老師"] = dic[each][0].TeacherName; for (int x = 1; x <= config.Count; x++) { row[string.Format("日期_{0}", x)] = config[x - 1]; } dic[each].Sort(SortStudentSCJoin); int y = 1; foreach (OnlineSCJoin scjoin in dic[each]) { if (y <= 學生多少個) { row[string.Format("部別名稱_{0}", y)] = scjoin.SchoolReMark; row[string.Format("班級_{0}", y)] = scjoin.ClassName; row[string.Format("座號_{0}", y)] = scjoin.SeatNo; row[string.Format("姓名_{0}", y)] = scjoin.StudentName; row[string.Format("學號_{0}", y)] = scjoin.StudentNumber; row[string.Format("性別_{0}", y)] = scjoin.Gender; y++; } } row["人數"] = y - 1; table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { List <string> StudentIDList = K12.Presentation.NLDPanels.Student.SelectedSource; _doc = new Document(); _doc.Sections.Clear(); //清空此Document //取得設定檔 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(CadreConfig); if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(CadreConfig); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.社團幹部證明單, Campus.Report.TemplateType.Word); //ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.社團點名表_合併欄位總表, Campus.Report.TemplateType.Word); _template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 _template = ConfigurationInCadre.Template.ToDocument(); } List <StudentRecord> StudList = Student.SelectByIDs(StudentIDList); //取得學生的 社團學期成績 , 內包含社長副社長,與其它資料 //$K12.ResultScore.Shinmin //結算後,相關記錄會放在學生的社團學期成績 #region 社團學期成績 _StudentResultDic.Clear(); FISCA.UDT.AccessHelper _A = new FISCA.UDT.AccessHelper(); List <ResultScoreRecord> ResultList = _A.Select <ResultScoreRecord>(string.Format("ref_student_id in ('{0}')", string.Join("','", StudentIDList))); List <string> CLUBIDList = new List <string>(); List <string> StudentOkList = new List <string>(); foreach (ResultScoreRecord each in ResultList) { if (string.IsNullOrEmpty(each.CadreName)) { continue; } if (!CLUBIDList.Contains(each.RefClubID)) { if (each.RefClubID != "") { CLUBIDList.Add(each.RefClubID); } } //當勾選畫面是社長/副社長時 if (cbPrintByPresident.Checked) { if (each.CadreName == "社長" || each.CadreName == "副社長") { if (!_StudentResultDic.ContainsKey(each.RefStudentID)) { _StudentResultDic.Add(each.RefStudentID, new List <ResultScoreRecord>()); } _StudentResultDic[each.RefStudentID].Add(each); if (!StudentOkList.Contains(each.RefStudentID)) { StudentOkList.Add(each.RefStudentID); } } } else { if (!_StudentResultDic.ContainsKey(each.RefStudentID)) { _StudentResultDic.Add(each.RefStudentID, new List <ResultScoreRecord>()); } _StudentResultDic[each.RefStudentID].Add(each); if (!StudentOkList.Contains(each.RefStudentID)) { StudentOkList.Add(each.RefStudentID); } } } #endregion if (StudentOkList.Count != 0) { // 入學照片 _PhotoPDict.Clear(); _PhotoPDict = K12.Data.Photo.SelectFreshmanPhoto(StudentOkList); // 畢業照片 _PhotoGDict.Clear(); _PhotoGDict = K12.Data.Photo.SelectGraduatePhoto(StudentOkList); } foreach (StudentRecord student in StudList) { List <string> name = new List <string>(); List <object> value = new List <object>(); if (_StudentResultDic.ContainsKey(student.ID)) { bool check = true; foreach (ResultScoreRecord each in _StudentResultDic[student.ID]) { if (!string.IsNullOrEmpty(each.CadreName)) { check = false; break; } } if (check) { continue; } } else { continue; } name.Add("資料"); if (_StudentResultDic.ContainsKey(student.ID)) { value.Add(_StudentResultDic[student.ID]); //重點欄位 } else { value.Add(new List <ResultScoreRecord>()); } #region MailMerge name.Add("學校名稱"); value.Add(School.ChineseName); if (student.Class != null) { name.Add("班級"); value.Add(student.Class.Name); } else { name.Add("班級"); value.Add(""); } name.Add("座號"); value.Add(student.SeatNo.HasValue ? student.SeatNo.Value.ToString() : ""); name.Add("姓名"); value.Add(student.Name); name.Add("學號"); value.Add(student.StudentNumber); name.Add("校長"); if (K12.Data.School.Configuration["學校資訊"].PreviousData != null) { if (K12.Data.School.Configuration["學校資訊"].PreviousData.SelectSingleNode("ChancellorChineseName") != null) { value.Add(K12.Data.School.Configuration["學校資訊"].PreviousData.SelectSingleNode("ChancellorChineseName").InnerText); } else { value.Add(""); } } else { value.Add(""); } if (_PhotoPDict.ContainsKey(student.ID)) { name.Add("新生照片1"); value.Add(_PhotoPDict[student.ID]); name.Add("新生照片2"); value.Add(_PhotoPDict[student.ID]); } if (_PhotoGDict.ContainsKey(student.ID)) { name.Add("畢業照片1"); value.Add(_PhotoGDict[student.ID]); name.Add("畢業照片2"); value.Add(_PhotoGDict[student.ID]); } #endregion //取得範本樣式 Document PageOne = (Document)_template.Clone(true); PageOne.MailMerge.MergeField += new Aspose.Words.Reporting.MergeFieldEventHandler(MailMerge_MergeField); PageOne.MailMerge.Execute(name.ToArray(), value.ToArray()); _doc.Sections.Add(_doc.ImportNode(PageOne.FirstSection, true)); } e.Result = _doc; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { #region 範本 //整理取得報表範本 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(CadreConfig); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(CadreConfig); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.社團參與證明單_英文_範本, Campus.Report.TemplateType.Word); Template = new Document(ConfigurationInCadre_1.Template.GetStream()); } else { //如果已有範本,則取得樣板 Template = new Document(ConfigurationInCadre.Template.GetStream()); } #endregion //取得社團中英文對照表 Dictionary <string, string> EngDic = tool.GetEngList(); List <StudentRecord> StudentList = K12.Data.Student.SelectByIDs(K12.Presentation.NLDPanels.Student.SelectedSource); //取得資料 List <string> StudentIDList = new List <string>(); foreach (StudentRecord stud in StudentList) { StudentIDList.Add(stud.ID); } Dictionary <string, StudentRSRecord> AllSRSRDic = GetRSR(StudentList, StudentIDList); //填資料部份 DataTable table = new DataTable(); table.Columns.Add("學校名稱"); table.Columns.Add("學校英文名稱"); table.Columns.Add("列印日期"); table.Columns.Add("校長"); table.Columns.Add("校長英文名稱"); table.Columns.Add("班級"); table.Columns.Add("座號"); table.Columns.Add("學號"); table.Columns.Add("姓名"); table.Columns.Add("英文姓名"); table.Columns.Add("新生照片1"); table.Columns.Add("新生照片2"); table.Columns.Add("畢業照片1"); table.Columns.Add("畢業照片2"); for (int x = 1; x <= 記錄多少筆; x++) { table.Columns.Add(string.Format("學年度_{0}", x)); } for (int x = 1; x <= 記錄多少筆; x++) { table.Columns.Add(string.Format("學期_{0}", x)); } for (int x = 1; x <= 記錄多少筆; x++) { table.Columns.Add(string.Format("社團_{0}", x)); } for (int x = 1; x <= 記錄多少筆; x++) { table.Columns.Add(string.Format("英文社團名稱_{0}", x)); } foreach (string studentID in AllSRSRDic.Keys) { StudentRSRecord student = AllSRSRDic[studentID]; DataRow row = table.NewRow(); row["學校名稱"] = K12.Data.School.ChineseName; row["學校英文名稱"] = K12.Data.School.EnglishName; string PrintDay = string.Format("{0} {1},{2}", tool.GetMonth(DateTime.Today.Month), tool.GetDay(DateTime.Today.Day), DateTime.Today.Year.ToString()); row["列印日期"] = PrintDay; XmlElement xml = K12.Data.School.Configuration["學校資訊"].PreviousData; if (xml.SelectSingleNode("ChancellorEnglishName") != null) { row["校長英文名稱"] = xml.SelectSingleNode("ChancellorEnglishName").InnerText; row["校長"] = xml.SelectSingleNode("ChancellorChineseName").InnerText; } else { row["校長英文名稱"] = ""; row["校長"] = ""; } row["班級"] = student._student.Class != null ? student._student.Class.Name : ""; row["座號"] = student._student.SeatNo.HasValue ? student._student.SeatNo.Value.ToString() : ""; row["學號"] = student._student.StudentNumber; row["姓名"] = student._student.Name; row["英文姓名"] = student._student.EnglishName; row["新生照片1"] = student.學生入學照片; row["新生照片2"] = student.學生入學照片; row["畢業照片1"] = student.學生畢業照片; row["畢業照片2"] = student.學生畢業照片; student._ResultList.Sort(SortResultScore); int y = 1; foreach (ResultScoreRecord ResultRecord in student._ResultList) { if (y <= 記錄多少筆) { row[string.Format("學年度_{0}", y)] = ResultRecord.SchoolYear.ToString(); row[string.Format("學期_{0}", y)] = ResultRecord.Semester.ToString(); row[string.Format("社團_{0}", y)] = ResultRecord.ClubName; if (EngDic.ContainsKey(ResultRecord.ClubName)) { row[string.Format("英文社團名稱_{0}", y)] = EngDic[ResultRecord.ClubName]; } else { row[string.Format("英文社團名稱_{0}", y)] = ResultRecord.ClubName; } y++; } } table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); //PageOne.MailMerge.MergeField += new Aspose.Words.Reporting.MergeFieldEventHandler(MailMerge_MergeField); PageOne.MailMerge.FieldMergingCallback = new MailMerge_MergeField(); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
private void BGW_DoWork(object sender, DoWorkEventArgs e) { _doc = new Document(); _doc.Sections.Clear(); //清空此Document #region 資料建立 //學校名稱及校長 String schoolName = K12.Data.School.ChineseName; string schoolMaster = K12.Data.School.Configuration["學校資訊"].PreviousData.SelectSingleNode("ChancellorChineseName").InnerText; //請先參考 FISCA.UDT.dll FISCA.Data.QueryHelper _Q = new FISCA.Data.QueryHelper(); //畫面選取的學生ID清單 List <string> StudentIDList = K12.Presentation.NLDPanels.Student.SelectedSource; //SQL StringBuilder sb = new StringBuilder(); string StudentIDs = string.Join("','", StudentIDList); sb.Append(string.Format("StudentID in ('{0}')", StudentIDs)); String tableName = "$jhschool.association.udt"; //取得學生社團成績 DataTable dt = _Q.Select(String.Format("select * from {0} where {1}", tableName, sb.ToString())); //建立字典存放各學生的社團record Dictionary <String, List <RecordObj> > StudentDic = new Dictionary <string, List <RecordObj> >(); foreach (DataRow row in dt.Rows) { String studentid = row["studentid"].ToString(); String schoolyear = row["schoolyear"].ToString(); String semester = row["semester"].ToString(); String content = row["scores"].ToString(); //此欄位為XML,需透過RecordObj去解析屬性 if (!StudentDic.ContainsKey(studentid)) { StudentDic.Add(studentid, new List <RecordObj>()); } StudentDic[studentid].Add(new RecordObj(studentid, schoolyear, semester, content)); } //排序各學生的社團record foreach (String id in StudentDic.Keys) { StudentDic[id].Sort(SortRecordObj); } //取得StudentRecord清單,為個人資料用 List <StudentRecord> studentRecords = K12.Data.Student.SelectByIDs(StudentDic.Keys.ToArray()); //建立學生record字典方便以後查詢 Dictionary <String, StudentRecord> studentRecordsDic = new Dictionary <string, StudentRecord>(); //建立班級record字典方便以後查詢 _ClassDic = new Dictionary <string, ClassRecord>(); foreach (StudentRecord each in studentRecords) //依據被選取的學生所得到的StudentRecord清單建立各字典 { if (!studentRecordsDic.ContainsKey(each.ID)) //沒有該學生ID就新增 { studentRecordsDic.Add(each.ID, each); //用學生ID可取得StudentRecord } if (!_ClassDic.ContainsKey(each.RefClassID)) //沒有該班級ID就新增 { _ClassDic.Add(each.RefClassID, new ClassRecord()); //用班級ID可取得ClassRecord } } //以班級字典的key取得各自的ClassRecord List <ClassRecord> classList = K12.Data.Class.SelectByIDs(_ClassDic.Keys.ToList()); foreach (ClassRecord classRecord in classList) { _ClassDic[classRecord.ID] = classRecord; //設定個別班級ID的ClassRecord } //排序StudentRecord清單 studentRecords.Sort(studentRecordsSort); if (StudentDic.Count != 0) { // 入學照片 _PhotoPDict.Clear(); _PhotoPDict = K12.Data.Photo.SelectFreshmanPhoto(StudentDic.Keys.ToList()); // 畢業照片 _PhotoGDict.Clear(); _PhotoGDict = K12.Data.Photo.SelectGraduatePhoto(StudentDic.Keys.ToList()); } #endregion #region 資料列印 //取得設定檔 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(CadreConfig); if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 ConfigurationInCadre.Template = new Campus.Report.ReportTemplate(Properties.Resources.社團參與證明單, Campus.Report.TemplateType.Word); } _template = ConfigurationInCadre.Template.ToDocument(); //開始列印 foreach (StudentRecord each in studentRecords) { String id = each.ID; //學生ID Document PageOne = (Document)_template.Clone(true); PageOne.MailMerge.MergeField += new Aspose.Words.Reporting.MergeFieldEventHandler(MailMerge_MergeField); //合併欄位的參照字典,key=fieldName,value=fieldValue Dictionary <String, String> fieldDic = new Dictionary <string, string>(); if (_PhotoPDict.ContainsKey(id)) { fieldDic.Add("新生照片1", _PhotoPDict[id]); fieldDic.Add("新生照片2", _PhotoPDict[id]); } if (_PhotoGDict.ContainsKey(id)) { fieldDic.Add("畢業照片1", _PhotoGDict[id]); fieldDic.Add("畢業照片2", _PhotoGDict[id]); } fieldDic.Add("班級", _ClassDic[each.RefClassID].Name); fieldDic.Add("座號", studentRecordsDic[id].SeatNo.ToString()); fieldDic.Add("學號", studentRecordsDic[id].StudentNumber); fieldDic.Add("姓名", studentRecordsDic[id].Name); fieldDic.Add("學校名稱", schoolName); fieldDic.Add("校長", schoolMaster); int fieldindex = 0; foreach (RecordObj record in StudentDic[id]) { fieldindex++; fieldDic.Add("學年度" + fieldindex, record.SchoolYear); fieldDic.Add("學期" + fieldindex, record.Semester); fieldDic.Add("社團" + fieldindex, record.ClubName); fieldDic.Add("成績" + fieldindex, record.Score); fieldDic.Add("評量" + fieldindex, record.Effort); fieldDic.Add("文字描述" + fieldindex, record.Text); PageOne.MailMerge.Execute(fieldDic.Keys.ToArray(), fieldDic.Values.ToArray()); } _doc.Sections.Add(_doc.ImportNode(PageOne.FirstSection, true)); } #endregion }
void BGW_DoWork(object sender, DoWorkEventArgs e) { //開始列印學生清單 #region 資料整理 //取得需連線學校 LoginSchoolList = tool._A.Select <LoginSchool>(); //選擇了哪些社團(使用名稱進行比對) List <string> ClubIDList = K12.Club.Volunteer.ClubAdmin.Instance.SelectedSource; List <CLUBRecord> ClubRecordList = tool._A.Select <CLUBRecord>(ClubIDList); //社團名稱清單 List <string> ClubNameList = new List <string>(); foreach (CLUBRecord club in ClubRecordList) { ClubNameList.Add(club.ClubName); } //社團名稱 + 社團參與記錄學生 Dictionary <string, List <OnlineSCJoin> > dic = new Dictionary <string, List <OnlineSCJoin> >(); List <string> ClubNewNameList = new List <string>(); foreach (LoginSchool school in LoginSchoolList) { Connection me = new Connection(); me.Connect(school.School_Name, tool._contract, FISCA.Authentication.DSAServices.PassportToken); Dictionary <string, OnlineSCJoin> ScjList = RunService.GetSCJoinByClubName(me, ClubNameList); foreach (OnlineSCJoin each in ScjList.Values) { string name = each.ClubName; if (!dic.ContainsKey(name)) { dic.Add(name, new List <OnlineSCJoin>()); ClubNewNameList.Add(name); } dic[name].Add(each); } } ClubNewNameList.Sort(); #endregion #region 報表範本整理 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ConfigName); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.班級點名單_週報表樣式範本, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 Template = ConfigurationInCadre.Template.ToDocument(); } #endregion #region 範本再修改 List <string> config = new List <string>(); XmlElement day = (XmlElement)e.Argument; if (day == null) { MsgBox.Show("第一次使用報表請先進行[日期設定]"); return; } else { config.Clear(); foreach (XmlElement xml in day.SelectNodes("item")) { config.Add(xml.InnerText); } } DataTable table = new DataTable(); table.Columns.Add("學校名稱"); table.Columns.Add("社團名稱"); table.Columns.Add("學年度"); table.Columns.Add("學期"); table.Columns.Add("社團老師"); table.Columns.Add("列印日期"); table.Columns.Add("上課開始"); table.Columns.Add("上課結束"); table.Columns.Add("人數"); for (int x = 1; x <= 日期多少天; x++) { table.Columns.Add(string.Format("日期_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("社團_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("班級_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("座號_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("姓名_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("學號_{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("性別_{0}", x)); } #endregion foreach (string each in ClubNewNameList) { DataRow row = table.NewRow(); row["學校名稱"] = K12.Data.School.ChineseName; row["學年度"] = School.DefaultSchoolYear; row["學期"] = School.DefaultSemester; row["列印日期"] = DateTime.Today.ToShortDateString(); row["上課開始"] = config[0]; row["上課結束"] = config[config.Count - 1]; row["社團名稱"] = each; //特殊 if (dic[each].Count > 0) { row["社團老師"] = dic[each][0].TeacherName; } for (int x = 1; x <= config.Count; x++) { row[string.Format("日期_{0}", x)] = config[x - 1]; } dic[each].Sort(SortStudentSCJoin); int y = 1; foreach (OnlineSCJoin scjoin in dic[each]) { if (y <= 學生多少個) { row[string.Format("班級_{0}", y)] = scjoin.ClassName; row[string.Format("座號_{0}", y)] = scjoin.SeatNo; row[string.Format("姓名_{0}", y)] = scjoin.StudentName; row[string.Format("學號_{0}", y)] = scjoin.StudentNumber; row[string.Format("性別_{0}", y)] = scjoin.Gender; y++; } } row["人數"] = y - 1; table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ConfigName); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.服務學習時數點名單範本, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { Template = ConfigurationInCadre.Template.ToDocument(); } DataTable table = new DataTable(); for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("班級_{0}", x)); table.Columns.Add(string.Format("座號_{0}", x)); table.Columns.Add(string.Format("姓名_{0}", x)); table.Columns.Add(string.Format("學號_{0}", x)); table.Columns.Add(string.Format("性別_{0}", x)); } table.Columns.Add("學校名稱"); table.Columns.Add("報名開始時間"); table.Columns.Add("報名結束時間"); table.Columns.Add("學年度"); table.Columns.Add("學期"); table.Columns.Add("主辦單位"); table.Columns.Add("服務日期"); table.Columns.Add("備註"); table.Columns.Add("服務地點"); table.Columns.Add("預計時數"); table.Columns.Add("服務事由"); table.Columns.Add("人數上限"); table.Columns.Add("人數"); table.Columns.Add("列印日期"); List<string> where = new List<string>(); foreach (CreationItemsRecord item in lcir) { where.Add("ref_creationitemsrecord_id = '" + item.UID + "'"); } DataTable dt = tool._Q.Select("select ref_student_id,ref_creationitemsrecord_id from $k12.service.learning.creationitemsparticipaterecord where can_participate = true and " + string.Join(" or ", where)); where = null; List<string> lsid = new List<string>(); Dictionary<string, List<string>> dsid = new Dictionary<string, List<string>>(); foreach (DataRow row in dt.Rows) { if (!lsid.Contains("" + row[0])) lsid.Add("" + row[0]); if (!dsid.ContainsKey("" + row[1])) dsid.Add("" + row[1], new List<string>()); if (!dsid["" + row[1]].Contains("" + row[0])) dsid["" + row[1]].Add("" + row[0]); } Dictionary<string,K12.Data.StudentRecord> dsr = K12.Data.Student.SelectByIDs(lsid).ToDictionary(x=>x.ID,x=>x); foreach (CreationItemsRecord item in lcir) { DataRow row = table.NewRow(); row["學校名稱"] = K12.Data.School.ChineseName; row["報名開始時間"] = item.RegistStartTime; row["報名結束時間"] = item.RegistEndTime; row["學年度"] = item.SchoolYear; row["學期"] = item.Semester; row["主辦單位"] = item.Organizers; row["服務日期"] = item.OccurDate.ToString("yyyy/M/d"); row["備註"] = item.Remark; row["服務地點"] = item.Location; row["預計時數"] = item.ExpectedHours; row["服務事由"] = item.Reason; row["人數上限"] = item.ParticipateLimit; row["列印日期"] = DateTime.Today.ToShortDateString(); int y = 1; if (dsid.ContainsKey(item.UID)) { foreach (string sid in dsid[item.UID]) { StudentRecord tmp = dsr[sid]; if (y <= 學生多少個) { row[string.Format("班級_{0}", y)] = tmp.Class != null ? tmp.Class.Name : ""; row[string.Format("座號_{0}", y)] = tmp.SeatNo.HasValue ? tmp.SeatNo.Value.ToString() : ""; row[string.Format("姓名_{0}", y)] = tmp.Name; row[string.Format("學號_{0}", y)] = tmp.StudentNumber; row[string.Format("性別_{0}", y)] = tmp.Gender; y++; } } } row["人數"] = y-1; table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { cd.Save(); #region 範本 //整理取得報表範本 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(AnnouncementSingleConfig); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(AnnouncementSingleConfig); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.實驗中學_獎懲公告單, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 Template = ConfigurationInCadre.Template.ToDocument(); } #endregion //取得一般生清單 StudentInfoDic = GetStudent(); //取得日期區間內的所有獎懲記錄(含日期類型判斷) List <DisciplineRecord> DisciplineList = GetDiscipline(StudentInfoDic.Keys.ToList()); foreach (DisciplineRecord each in DisciplineList) { if (StudentInfoDic.ContainsKey(each.RefStudentID)) { StudentInfoDic[each.RefStudentID].DISList.Add(each); } } //填資料部份 DataTable table = new DataTable(); table.Columns.Add("學校中文名稱"); table.Columns.Add("學校英文名稱"); table.Columns.Add("日期區間"); table.Columns.Add("列印日期"); table.Columns.Add("資料"); DataRow row = table.NewRow(); row["學校中文名稱"] = K12.Data.School.ChineseName; row["學校英文名稱"] = K12.Data.School.EnglishName; string PrintDay = string.Format("{0} {1},{2}", tool.GetMonth(DateTime.Today.Month), tool.GetDay(DateTime.Today.Day), DateTime.Today.Year.ToString()); row["列印日期"] = PrintDay; string Print1 = string.Format("{0} {1},{2} ", tool.GetMonth(dateTimeInput1.Value.Month), tool.GetDay(dateTimeInput1.Value.Day), dateTimeInput1.Value.Year.ToString()); string Print2 = string.Format(" {0} {1},{2}", tool.GetMonth(dateTimeInput2.Value.Month), tool.GetDay(dateTimeInput2.Value.Day), dateTimeInput2.Value.Year.ToString()); row["日期區間"] = Print1 + " To " + Print2; row["資料"] = ""; table.Rows.Add(row); Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.MergeField += new Aspose.Words.Reporting.MergeFieldEventHandler(MailMerge_MergeField); PageOne.MailMerge.Execute(table); PageOne.MailMerge.DeleteFields(); e.Result = PageOne; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ConfigName); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.服務學習時數記錄卡範本, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { Template = ConfigurationInCadre.Template.ToDocument(); } DataTable table = new DataTable(); for (int x = 1; x <= 服務學習記錄筆數; x++) { //table.Columns.Add(string.Format("報名開始時間_{0}", x)); //table.Columns.Add(string.Format("報名結束時間_{0}", x)); table.Columns.Add(string.Format("學年度_{0}", x)); table.Columns.Add(string.Format("學期_{0}", x)); table.Columns.Add(string.Format("主辦單位_{0}", x)); table.Columns.Add(string.Format("服務日期_{0}", x)); table.Columns.Add(string.Format("備註_{0}", x)); //table.Columns.Add(string.Format("服務地點_{0}", x)); table.Columns.Add(string.Format("時數_{0}", x)); table.Columns.Add(string.Format("服務事由_{0}", x)); //table.Columns.Add(string.Format("人數上限_{0}", x)); table.Columns.Add(string.Format("登錄日期_{0}", x)); } table.Columns.Add("一上總時數"); table.Columns.Add("一下總時數"); table.Columns.Add("二上總時數"); table.Columns.Add("二下總時數"); table.Columns.Add("三上總時數"); table.Columns.Add("三下總時數"); table.Columns.Add("學校名稱"); table.Columns.Add("班級"); table.Columns.Add("座號"); //table.Columns.Add("學年度"); //table.Columns.Add("學期"); table.Columns.Add("姓名"); table.Columns.Add("學號"); table.Columns.Add("性別"); table.Columns.Add("服務學習記錄筆數"); table.Columns.Add("列印日期"); List<string> studentSelectedSource = K12.Presentation.NLDPanels.Student.SelectedSource; Dictionary<string, K12.Data.StudentRecord> dsr = K12.Data.Student.SelectByIDs(studentSelectedSource).ToDictionary(x => x.ID, x => x); //tool._Q = new FISCA.Data.QueryHelper(); //List<SLRecord> lslr = tool._Q.Select<SLRecord>("ref_student_id IN ('" + string.Join("','", studentSelectedSource) + "')"); DataTable dt = tool._Q.Select("select * from $k12.service.learning.record where ref_student_id IN ('" + string.Join("','", studentSelectedSource) + "')"); Dictionary<string, List<SLRecord>> dslr = new Dictionary<string, List<SLRecord>>(); foreach (DataRow row in dt.Rows) { if (!dslr.ContainsKey("" + row["ref_student_id"])) dslr.Add("" + row["ref_student_id"], new List<SLRecord>()); dslr["" + row["ref_student_id"]].Add(new SLRecord() { RefStudentID = "" + row["ref_student_id"], Hours = decimal.Parse("" + row["hours"]), OccurDate = DateTime.Parse("" + row["occur_date"]), Organizers = "" + row["organizers"], Reason = "" + row["reason"], RegisterDate = DateTime.Parse("" + row["register_date"]), Remark = "" + row["remark"], SchoolYear = int.Parse("" + row["school_year"]), Semester = int.Parse("" + row["semester"]), }); } Dictionary<string,SemesterHistoryRecord> lshr = K12.Data.SemesterHistory.SelectByStudentIDs(K12.Presentation.NLDPanels.Student.SelectedSource).ToDictionary(x => x.RefStudentID, x => x); foreach (string RefStudentID in studentSelectedSource) { DataRow row = table.NewRow(); row["學校名稱"] = School.ChineseName; row["列印日期"] = DateTime.Now.ToString("yyyy年M月d日"); if (dsr.ContainsKey(RefStudentID)) { row["班級"] = dsr[RefStudentID].Class != null ? dsr[RefStudentID].Class.Name : ""; row["座號"] = dsr[RefStudentID].SeatNo.HasValue ? dsr[RefStudentID].SeatNo.Value.ToString() : ""; row["姓名"] = dsr[RefStudentID].Name; row["學號"] = dsr[RefStudentID].StudentNumber; row["性別"] = dsr[RefStudentID].Gender; } int y = 1 ; if (dslr.ContainsKey(RefStudentID)) { Dictionary<string, decimal> dhours = new Dictionary<string, decimal>(); foreach (SLRecord slr in dslr[RefStudentID]) { row[string.Format("學年度_{0}", y)] = slr.SchoolYear; row[string.Format("學期_{0}", y)] = slr.Semester; row[string.Format("主辦單位_{0}", y)] = slr.Organizers; row[string.Format("服務日期_{0}", y)] = slr.OccurDate.AddYears(-1911).ToString("yyyy年M月d日"); row[string.Format("備註_{0}", y)] = slr.Remark; row[string.Format("時數_{0}", y)] = slr.Hours; row[string.Format("服務事由_{0}", y)] = slr.Reason; row[string.Format("登錄日期_{0}", y)] = slr.RegisterDate.AddYears(-1911).ToString("yyyy年M月d日"); string key = slr.SchoolYear + "#" + slr.Semester; if (!dhours.ContainsKey(key)) { dhours.Add(key, 0); } dhours[key] += slr.Hours; y++; } row["服務學習記錄筆數"] = y - 1; if (lshr.ContainsKey(RefStudentID)) { foreach (SemesterHistoryItem item2 in lshr[RefStudentID].SemesterHistoryItems) { string gy = "",sem = ""; switch (item2.GradeYear) { case 1: case 7: gy = "一"; break; case 2: case 8: gy = "二"; break; case 3: case 9: gy = "三"; break; } switch (item2.Semester) { case 1: sem = "上"; break; case 2: sem = "下"; break; } if (table.Columns.Contains(gy + sem + "總時數") && dhours.ContainsKey(item2.SchoolYear + "#" + item2.Semester)) row[gy + sem + "總時數"] = dhours[item2.SchoolYear + "#" + item2.Semester]; } } } for (; y < 20; y++) { row[string.Format("服務日期_{0}", y)] = "___年__月__日"; row[string.Format("時數_{0}", y)] = " "; } table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { #region 報表範本整理 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ConfigName); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.班級點名單_週報表樣式範本_, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 Template = ConfigurationInCadre.Template.ToDocument(); } #endregion #region 範本再修改 List <string> config = new List <string>(); XmlElement day = (XmlElement)e.Argument; if (day == null) { MsgBox.Show("第一次使用報表請先進行[日期設定]"); return; } else { config.Clear(); foreach (XmlElement xml in day.SelectNodes("item")) { config.Add(xml.InnerText); } } DataTable table = new DataTable(); table.Columns.Add("學校名稱"); table.Columns.Add("學校英文名稱"); table.Columns.Add("班級名稱"); table.Columns.Add("班導師"); table.Columns.Add("學年度"); table.Columns.Add("學期"); table.Columns.Add("列印日期"); table.Columns.Add("上課開始"); table.Columns.Add("上課結束"); table.Columns.Add("人數"); for (int x = 1; x <= 日期多少天; x++) { table.Columns.Add(string.Format("日期{0}", x)); table.Columns.Add(string.Format("日期{0}星期", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("座號{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("學號{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("姓名{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("英文姓名{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("英文別名{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("性別{0}", x)); } #endregion List <string> StudentIDList = new List <string>(); List <K12.Data.ClassRecord> crlt = K12.Data.Class.SelectByIDs(K12.Presentation.NLDPanels.Class.SelectedSource); crlt.Sort(CommonMethods.ClassComparer); foreach (K12.Data.ClassRecord cr in crlt) { foreach (StudentRecord obj in cr.Students) { if (!StudentIDList.Contains(obj.ID)) { StudentIDList.Add(obj.ID); } } } //雙語部 - 英文別名欄位 //學生ID : 英文別名 Dictionary <string, string> StudentEXTDic = tool.GetStudentEXT(StudentIDList); foreach (K12.Data.ClassRecord cr in crlt) { DataRow row = table.NewRow(); row["學校名稱"] = K12.Data.School.ChineseName; row["學校英文名稱"] = K12.Data.School.EnglishName; row["班級名稱"] = cr.Name; row["學年度"] = tool.GetSchoolChange(School.DefaultSchoolYear); row["學期"] = School.DefaultSemester; row["班導師"] = cr.Teacher != null ? cr.Teacher.Name : ""; row["列印日期"] = DateTime.Today.ToShortDateString(); row["上課開始"] = config[0]; row["上課結束"] = config[config.Count - 1]; for (int x = 1; x <= config.Count; x++) { row[string.Format("日期{0}", x)] = config[x - 1]; DateTime dt = DateTime.Today; if (DateTime.TryParse(config[x - 1], out dt)) { row[string.Format("日期{0}星期", x)] = tool.CheckWeek(dt.DayOfWeek.ToString()); } } int y = 1; foreach (StudentRecord obj in cr.Students) { if (!(obj.Status == StudentRecord.StudentStatus.一般 || obj.Status == StudentRecord.StudentStatus.延修)) { continue; } if (y <= 學生多少個) { row[string.Format("座號{0}", y)] = obj.SeatNo.HasValue ? obj.SeatNo.Value.ToString() : ""; row[string.Format("學號{0}", y)] = obj.StudentNumber; row[string.Format("姓名{0}", y)] = obj.Name; row[string.Format("英文姓名{0}", y)] = obj.EnglishName; row[string.Format("性別{0}", y)] = obj.Gender; if (StudentEXTDic.ContainsKey(obj.ID)) { row[string.Format("英文別名{0}", y)] = StudentEXTDic[obj.ID]; } y++; } } row["人數"] = y - 1; table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
// 主要邏輯區塊 void BGW_DoWork(object sender, DoWorkEventArgs e) { //取得目前所選班級資料 List<string> classIDList = NLDPanels.Class.SelectedSource; //取得班級學生資料 List<StudentTotalObj> studentList = GetStudentOBJ(classIDList); //組合班級清單 List<ClassTotalObj> classList = GetClassOBJ(classIDList); //取得設定檔 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(_SLRClassTotalMulti_ReportCofig); _template = ConfigurationInCadre.Template.ToDocument(); _doc.Sections.Clear(); // 把查詢出來的學生加入各個班級物件裡 foreach (StudentTotalObj student in studentList) { foreach (ClassTotalObj aClass in classList) { if (student.ref_class_id == aClass.ref_class_id) { if (!aClass.StudentDic.ContainsKey(student.ref_student_id)) { aClass.StudentDic.Add(student.ref_student_id, student); } } } } // 取得學生IDs List<string> studentIDList = GetStudentID(studentList); string qu = string.Join("','", studentIDList); // 取得學生的服務時數 List<SLRecord> SLRList = _accessHelper.Select<SLRecord>("ref_student_id in ('" + qu + "')"); // 把服務時數加入各個班級的各個學生裡 foreach (SLRecord slrRecord in SLRList) { foreach (ClassTotalObj aClass in classList) { if (aClass.StudentDic.ContainsKey(slrRecord.RefStudentID)) { aClass.SetSLRInStudent(slrRecord); } } } classList.Sort(SortClass); // 把每個班級中的學生匯出至WORD foreach (ClassTotalObj aClass in classList) { if (aClass.StudentDic.Count > 0) { Document PageOne = SetDocument(aClass); if (PageOne != null) { _doc.Sections.Add(_doc.ImportNode(PageOne.FirstSection, true)); } } } e.Result = _doc; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { #region 資料整理 //是否可連線&是否可取得相關資料 if (!tool.UserConnection()) { e.Cancel = true; } //取得學校連線資料 LoginSchoolList = tool._A.Select <LoginSchool>(); LoginSchoolDic = new Dictionary <string, string>(); foreach (LoginSchool s in LoginSchoolList) { if (!LoginSchoolDic.ContainsKey(s.School_Name)) { LoginSchoolDic.Add(s.School_Name, s.Remark); } } //取得學校相關資料 SchoolClubDic = SchoolClubDetail(LoginSchoolList); //資料整合(以掛載模組為主) MergerClubDic = tool.ResourceMerger(SchoolClubDic); //取得志願 foreach (string each in SchoolClubDic.Keys) { //設定目前社團人數狀況 SchoolClubDic[each].設定目前社團人數(MergerClubDic); } #endregion #region 報表範本整理 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Aspose.Words.Document Template; if (ConfigurationInCadre.Template == null) { //如果範本為空,則建立一個預設範本 Campus.Report.ReportConfiguration ConfigurationInCadre_1 = new Campus.Report.ReportConfiguration(ConfigName); ConfigurationInCadre_1.Template = new Campus.Report.ReportTemplate(Properties.Resources.社團概況表_範本, Campus.Report.TemplateType.Word); Template = ConfigurationInCadre_1.Template.ToDocument(); } else { //如果已有範本,則取得樣板 Template = ConfigurationInCadre.Template.ToDocument(); } #endregion DataTable table = new DataTable(); table.Columns.Add("學校名稱"); table.Columns.Add("學年度"); table.Columns.Add("學期"); table.Columns.Add("列印日期"); for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("類型{0}", x)); table.Columns.Add(string.Format("代碼{0}", x)); table.Columns.Add(string.Format("社團名稱{0}", x)); table.Columns.Add(string.Format("指導老師{0}", x)); table.Columns.Add(string.Format("科別限制{0}", x)); table.Columns.Add(string.Format("男女限制{0}", x)); foreach (string each in SchoolClubDic.Keys) { table.Columns.Add(string.Format("1年級{0}{1}", SchoolClubDic[each].SchoolRemake, x)); table.Columns.Add(string.Format("2年級{0}{1}", SchoolClubDic[each].SchoolRemake, x)); table.Columns.Add(string.Format("3年級{0}{1}", SchoolClubDic[each].SchoolRemake, x)); } table.Columns.Add(string.Format("1年級總{0}", x)); table.Columns.Add(string.Format("2年級總{0}", x)); table.Columns.Add(string.Format("3年級總{0}", x)); table.Columns.Add(string.Format("總人數{0}", x)); table.Columns.Add(string.Format("場地{0}", x)); } DataRow row = table.NewRow(); row["學校名稱"] = K12.Data.School.ChineseName; row["學年度"] = _SchoolYear; row["學期"] = _Semester; row["列印日期"] = DateTime.Today.ToShortDateString(); int y = 1; foreach (string each in MergerClubDic.Keys) { if (y <= 學生多少個) { OnlineMergerClub club = MergerClubDic[each]; row[string.Format("類型{0}", y)] = club.ClubCategory; row[string.Format("代碼{0}", y)] = club.ClubNumber; row[string.Format("社團名稱{0}", y)] = club.ClubName; row[string.Format("指導老師{0}", y)] = club.TeacherName; row[string.Format("男女限制{0}", y)] = club.GenderRestrict; row[string.Format("總人數{0}", y)] = club.NowStudentCount; row[string.Format("場地{0}", y)] = club.Location; int Grade1 = 0; int Grade2 = 0; int Grade3 = 0; foreach (string gr1 in club.Grade1.SchoolGradeDic.Keys) { row[string.Format("1年級{0}{1}", LoginSchoolDic[gr1], y)] = club.Grade1.SchoolGradeDic[gr1].ToString(); Grade1 += club.Grade1.SchoolGradeDic[gr1]; } foreach (string gr2 in club.Grade2.SchoolGradeDic.Keys) { row[string.Format("2年級{0}{1}", LoginSchoolDic[gr2], y)] = club.Grade2.SchoolGradeDic[gr2].ToString(); Grade2 += club.Grade2.SchoolGradeDic[gr2]; } foreach (string gr3 in club.Grade3.SchoolGradeDic.Keys) { row[string.Format("3年級{0}{1}", LoginSchoolDic[gr3], y)] = club.Grade3.SchoolGradeDic[gr3].ToString(); Grade3 += club.Grade3.SchoolGradeDic[gr3]; } if (Grade1 != 0) { row[string.Format("1年級總{0}", y)] = Grade1; } if (Grade2 != 0) { row[string.Format("2年級總{0}", y)] = Grade2; } if (Grade3 != 0) { row[string.Format("3年級總{0}", y)] = Grade3; } y++; } } table.Rows.Add(row); Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }
void BGW_DoWork(object sender, DoWorkEventArgs e) { #region 報表範本整理 Campus.Report.ReportConfiguration ConfigurationInCadre = new Campus.Report.ReportConfiguration(ConfigName); Aspose.Words.Document Template; Template = new Document(new MemoryStream(temp)); #endregion #region 範本再修改 List <string> config = new List <string>(); DataTable table = new DataTable(); table.Columns.Add("學校名稱"); table.Columns.Add("學校英文名稱"); table.Columns.Add("班級名稱"); table.Columns.Add("班導師"); table.Columns.Add("學年度"); table.Columns.Add("學期"); table.Columns.Add("列印日期"); table.Columns.Add("上課開始"); table.Columns.Add("上課結束"); table.Columns.Add("人數"); for (int x = 1; x <= 日期多少天; x++) { table.Columns.Add(string.Format("日期{0}", x)); table.Columns.Add(string.Format("日期{0}星期", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("座號{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("學號{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("姓名{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("英文姓名{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("英文別名{0}", x)); } for (int x = 1; x <= 學生多少個; x++) { table.Columns.Add(string.Format("性別{0}", x)); } #endregion List <string> StudentIDList = new List <string>(); List <K12.Data.ClassRecord> crlt = K12.Data.Class.SelectByIDs(K12.Presentation.NLDPanels.Class.SelectedSource); crlt.Sort(CommonMethods.ClassComparer); foreach (K12.Data.ClassRecord cr in crlt) { foreach (StudentRecord obj in cr.Students) { if (!StudentIDList.Contains(obj.ID)) { StudentIDList.Add(obj.ID); } } } //雙語部 - 英文別名欄位 //學生ID : 英文別名 Dictionary <string, string> StudentEXTDic = tool.GetStudentEXT(StudentIDList); foreach (K12.Data.ClassRecord cr in crlt) { DataRow row = table.NewRow(); row["學校名稱"] = K12.Data.School.ChineseName; row["學校英文名稱"] = K12.Data.School.EnglishName; row["班級名稱"] = cr.Name; row["學年度"] = School.DefaultSchoolYear; row["學期"] = School.DefaultSemester; row["班導師"] = cr.Teacher != null ? cr.Teacher.Name : ""; row["列印日期"] = DateTime.Today.ToShortDateString(); int y = 1; foreach (StudentRecord obj in cr.Students) { if (!(obj.Status == StudentRecord.StudentStatus.一般 || obj.Status == StudentRecord.StudentStatus.延修)) { continue; } if (y <= 學生多少個) { row[string.Format("座號{0}", y)] = obj.SeatNo.HasValue ? obj.SeatNo.Value.ToString() : ""; row[string.Format("學號{0}", y)] = obj.StudentNumber; row[string.Format("姓名{0}", y)] = obj.Name; row[string.Format("英文姓名{0}", y)] = obj.EnglishName; row[string.Format("性別{0}", y)] = obj.Gender; if (StudentEXTDic.ContainsKey(obj.ID)) { row[string.Format("英文別名{0}", y)] = StudentEXTDic[obj.ID]; } y++; } } row["人數"] = y - 1; table.Rows.Add(row); } Document PageOne = (Document)Template.Clone(true); PageOne.MailMerge.Execute(table); e.Result = PageOne; }