void BGW_DoWork(object sender, DoWorkEventArgs e)
        {
            #region 範本

            //整理取得報表範本
            ReportConfiguration ConfigurationInCadre = new ReportConfiguration(FitnessConfig);
            Document            Template;

            if (ConfigurationInCadre.Template == null)
            {
                //如果範本為空,則建立一個預設範本
                ReportConfiguration ConfigurationInCadre_1 = new ReportConfiguration(FitnessConfig);
                ConfigurationInCadre_1.Template = new ReportTemplate(Properties.Resources.體適能證明單_範本1, TemplateType.docx);
                Template = ConfigurationInCadre_1.Template.ToDocument();
            }
            else
            {
                //如果已有範本,則取得樣板
                Template = ConfigurationInCadre.Template.ToDocument();
            }

            #endregion

            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("新生照片1");
            table.Columns.Add("新生照片2");
            table.Columns.Add("畢業照片1");
            table.Columns.Add("畢業照片2");
            SerColumn(table, "學年度");
            SerColumn(table, "測驗日期");

            SerColumn(table, "身高");
            //SerColumn(table, "身高常模");

            SerColumn(table, "體重");
            //SerColumn(table, "體重常模");

            SerColumn(table, "坐姿體前彎");
            SerColumn(table, "坐姿體前彎常模");

            SerColumn(table, "立定跳遠");
            SerColumn(table, "立定跳遠常模");

            SerColumn(table, "仰臥起坐");
            SerColumn(table, "仰臥起坐常模");

            SerColumn(table, "心肺適能");
            SerColumn(table, "心肺適能常模");

            foreach (string studentID in AllSRSRDic.Keys)
            {
                StudentRSRecord student = AllSRSRDic[studentID];

                DataRow row = table.NewRow();
                row["學校名稱"] = K12.Data.School.ChineseName;

                row["列印日期"] = DateTime.Today.ToShortDateString();

                XmlElement xml = K12.Data.School.Configuration["學校資訊"].PreviousData;

                if (xml.SelectSingleNode("ChancellorEnglishName") != null)
                {
                    row["校長名稱"] = xml.SelectSingleNode("ChancellorChineseName").InnerText;
                }
                else
                {
                    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["新生照片1"] = student.學生入學照片;
                row["新生照片2"] = student.學生入學照片;
                row["畢業照片1"] = student.學生畢業照片;
                row["畢業照片2"] = student.學生畢業照片;

                student._ResultList.Sort(SortResultScore);

                int y = 1;
                foreach (StudentFitnessRecord Fitness in student._ResultList)
                {
                    if (y <= 記錄多少筆)
                    {
                        row[string.Format("學年度{0}", y)]  = Fitness.SchoolYear.ToString();
                        row[string.Format("測驗日期{0}", y)] = Fitness.TestDate.ToShortDateString();

                        row[string.Format("身高{0}", y)] = Fitness.Height;
                        //row[string.Format("身高常模{0}", y)] = Fitness.HeightDegree;

                        row[string.Format("體重{0}", y)] = Fitness.Weight;
                        //row[string.Format("體重常模{0}", y)] = Fitness.WeightDegree;

                        row[string.Format("坐姿體前彎{0}", y)]   = Fitness.SitAndReach;
                        row[string.Format("坐姿體前彎常模{0}", y)] = Fitness.SitAndReachDegree;

                        row[string.Format("立定跳遠{0}", y)]   = Fitness.StandingLongJump;
                        row[string.Format("立定跳遠常模{0}", y)] = Fitness.StandingLongJumpDegree;

                        row[string.Format("仰臥起坐{0}", y)]   = Fitness.SitUp;
                        row[string.Format("仰臥起坐常模{0}", y)] = Fitness.SitUpDegree;

                        row[string.Format("心肺適能{0}", y)]   = Fitness.Cardiorespiratory;
                        row[string.Format("心肺適能常模{0}", y)] = Fitness.CardiorespiratoryDegree;
                        y++;
                    }
                }

                table.Rows.Add(row);
            }

            Document PageOne = (Document)Template.Clone(true);
            PageOne.MailMerge.FieldMergingCallback = new HandleMergeImageFieldFromBlob();
            PageOne.MailMerge.CleanupOptions       = Aspose.Words.Reporting.MailMergeCleanupOptions.RemoveEmptyParagraphs;
            PageOne.MailMerge.Execute(table);
            PageOne.MailMerge.DeleteFields(); //刪除未合併之內容

            e.Result = PageOne;
        }