/// <summary> /// 學生資料整理 /// </summary> private Dictionary <string, StudentRSRecord> GetRSR(List <StudentRecord> StudentList, List <string> StudentIDList) { Dictionary <string, StudentRSRecord> dic = new Dictionary <string, StudentRSRecord>(); List <ResultScoreRecord> RSList = tool._A.Select <ResultScoreRecord>(string.Format("ref_student_id in ('{0}')", string.Join("','", StudentIDList))); //整理學生基本資料記錄 foreach (StudentRecord stud in StudentList) { StudentRSRecord rsr = new StudentRSRecord(stud); if (!dic.ContainsKey(stud.ID)) { dic.Add(stud.ID, rsr); } } //整理學生社團記錄 foreach (ResultScoreRecord rsr in RSList) { if (dic.ContainsKey(rsr.RefStudentID)) { dic[rsr.RefStudentID].SetRSR(rsr); } } // 入學照片 Dictionary <string, string> _PhotoPDict = new Dictionary <string, string>(); // 畢業照片 Dictionary <string, string> _PhotoGDict = new Dictionary <string, string>(); if (StudentList.Count != 0) { // 入學照片 _PhotoPDict = K12.Data.Photo.SelectFreshmanPhoto(StudentIDList); // 畢業照片 _PhotoGDict = K12.Data.Photo.SelectGraduatePhoto(StudentIDList); } //處理照片 foreach (string studnetID in dic.Keys) { if (_PhotoPDict.ContainsKey(studnetID)) { dic[studnetID].學生入學照片 = _PhotoPDict[studnetID]; } if (_PhotoGDict.ContainsKey(studnetID)) { dic[studnetID].學生畢業照片 = _PhotoGDict[studnetID]; } } return(dic); }
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; }