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) { //開始列印學生清單 #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; }