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();
            }
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        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();
     }
 }
Ejemplo n.º 6
0
 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();
     }
 }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        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();
            }
        }
Ejemplo n.º 11
0
        // 主要邏輯區塊
        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;
        }
Ejemplo n.º 12
0
        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();
            }
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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;
        }
Ejemplo n.º 16
0
        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;
        }
Ejemplo n.º 17
0
        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
        }
Ejemplo n.º 18
0
        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;
        }
Ejemplo n.º 19
0
        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;
        }
Ejemplo n.º 20
0
        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;
        }
Ejemplo n.º 22
0
        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;
        }
Ejemplo n.º 25
0
        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;
        }