1. 程式人生 > >C# 將圖片匯出Excel(包括 建立Excel 、檔案壓縮、遞迴刪除檔案及資料夾)

C# 將圖片匯出Excel(包括 建立Excel 、檔案壓縮、遞迴刪除檔案及資料夾)

新增引用

using ICSharpCode.SharpZipLib.Zip;

 

 public void CreateDirectory(string DirectoryPath)
        {
            if (!Directory.Exists(DirectoryPath))  // 判斷當前目錄是否存在。
            {
                Directory.CreateDirectory(DirectoryPath);  // 建立上傳檔案存放目錄。
            }
        }

        protected void dlZipDir(string strPath, string strFileName)
        {
            MemoryStream ms = null;
            Response.ContentType = "application/octet-stream";
            strFileName = HttpUtility.UrlEncode(strFileName);
            Response.AddHeader("Content-Disposition", "attachment;   filename=" + strFileName + ".zip");
            ms = new MemoryStream();
            zos = new ZipOutputStream(ms);
            strBaseDir = strPath + "";
            addZipEntry(strBaseDir);
            zos.Finish();
            zos.Close();
            this.DeleteFolder(strPath);
            Response.Clear();
            Response.BinaryWrite(ms.ToArray());
            Response.End();
        }

        protected void addZipEntry(string PathStr)
        {
            DirectoryInfo di = new DirectoryInfo(PathStr);
            foreach (DirectoryInfo item in di.GetDirectories())
            {
                addZipEntry(item.FullName);
            }
            foreach (FileInfo item in di.GetFiles())
            {
                FileStream fs = File.OpenRead(item.FullName);
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                string strEntryName = item.FullName.Replace(strBaseDir + "\\", "");
                ZipEntry entry = new ZipEntry(strEntryName);
                zos.PutNextEntry(entry);
                zos.Write(buffer, 0, buffer.Length);
                fs.Close();
            }
        }

        public void DeleteFolder(string dir)
        {
            if (Directory.Exists(dir)) //如果存在這個資料夾刪除之    
            {
                foreach (string d in Directory.GetFileSystemEntries(dir))
                {
                    if (File.Exists(d))
                        File.Delete(d); //直接刪除其中的檔案                           
                    else
                        DeleteFolder(d); //遞迴刪除子資料夾    
                }
                Directory.Delete(dir, true); //刪除已空資料夾                    
            }
        }

        /// <summary>
        /// 單元格屬性
        /// </summary>
        /// <param name="range">單元格物件</param>
        /// <param name="MergeCells">是否合併</param>
        /// <param name="Bold">是否字型加粗</param>
        /// <param name="Num">文字左(0),中(1),右(2)</param>
        public void ExcelRange(Range range, bool MergeCells, bool Bold, int Num)
        {
            //高度
            range.RowHeight = 20;
            //字型大小
            range.Font.Size = 10;
            //是否 單元格合併  還是 自動合併
            if (MergeCells == true)
            {
                range.MergeCells = true;
            }
            //設定字型加粗
            if (Bold == true)
            {
                range.Font.Bold = true;
            }
            //寬度
            range.ColumnWidth = 9.4;
            //字元型
            range.NumberFormatLocal = "@";
            //設定字型顏色
            range.Font.ColorIndex = 0;
            range.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
            range.HorizontalAlignment = Num == 0 ? Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft : Num == 1 ? Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter : Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
            //設定邊框樣式
            range.Borders.LineStyle = XlLineStyle.xlContinuous;
        }

  /// <summary>
        /// 學生資訊下載
        /// </summary>
        /// <param name="StudentModel">學生物件</param>
        /// <param name="FamilyList">家庭成員集合</param>
        /// <param name="StudentPremiumList">獲獎集合</param>
        /// <param name="ExcelPath">Excel檔案絕對路徑</param>
        /// <param name="ImagePath">照片絕對路徑</param>
        protected void OutPortExcel(StudentModel StudentModel, List<FamilyNumberModel> FamilyList, List<StudentPremiumModel> StudentPremiumList, string ExcelPath, string ImagePath)
        {
            object miss = Missing.Value;
            Application excel = new Application();
            Workbooks workbooks = excel.Workbooks;
            Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
            Worksheet worksheet = (Worksheet)workbook.Worksheets.Add(miss, miss, miss, miss);
            try
            {
                excel.Selection.NumberFormatLocal = "@";
                //-----------------------------------第一行標題------------------------------------------
                worksheet.Cells[1, 1] = "XX學生資訊";
                //獲取標題行的單元格
                Range range1 = (Range)worksheet.Range[worksheet.Cells[1, 1], worksheet.Cells[1, 10]];
                this.ExcelRange(range1, true, true, 1);
                range1.RowHeight = 30;
                range1.Font.Size = 20;
                //-----------------------------------資料行-------------------------------------------------
                worksheet.Cells[2, 1] = "基本資訊";
                //獲取標題行的單元格
                Range range2_1 = (Range)worksheet.Range[worksheet.Cells[2, 1], worksheet.Cells[15, 1]];
                this.ExcelRange(range2_1, true, true, 0);
                range2_1.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
                range2_1.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                //第2行
                range2_1.Borders.LineStyle = XlLineStyle.xlContinuous;
                worksheet.Cells[2, 2] = "中考號";
                Range range2_3 = (Range)worksheet.Range[worksheet.Cells[2, 2], worksheet.Cells[2, 2]];
                this.ExcelRange(range2_3, false, false, 0);
               
                worksheet.Cells[2, 3] ="'"+TextToHtml(StudentModel.StudentCode.ToString());
                Range range2_4 = (Range)worksheet.Range[worksheet.Cells[2, 3], worksheet.Cells[2, 4]];
                this.ExcelRange(range2_4, true, false, 0);

                worksheet.Cells[2, 5] = "姓名";
                Range range2_5 = (Range)worksheet.Range[worksheet.Cells[2, 5], worksheet.Cells[2, 5]];
                this.ExcelRange(range2_5, false, false, 0);
                worksheet.Cells[2, 6] = TextToHtml(StudentModel.StudentName);
                Range range2_6 = (Range)worksheet.Range[worksheet.Cells[2, 6], worksheet.Cells[2, 8]];
                this.ExcelRange(range2_6, true, false, 0);
                worksheet.Cells[2, 9] = "照片";
                Range range2_9 = (Range)worksheet.Range[worksheet.Cells[2, 9], worksheet.Cells[7, 9]];
                this.ExcelRange(range2_6, true, false, 0);
                //第3行
                worksheet.Cells[3, 2] = "畢業學校";
                Range range3_2 = (Range)worksheet.Range[worksheet.Cells[3, 2], worksheet.Cells[3, 2]];
                this.ExcelRange(range3_2, false, false, 0);

                worksheet.Cells[3, 3] = TextToHtml(StudentModel.GraduateSchool2.Replace("╋", "").Replace("├─", "").Replace("├", "").Replace("請選擇", "") + StudentModel.GraduateSchool.Replace("╋", "").Replace("├─", "").Replace("├", "").Replace("請選擇", ""));
                Range range3_3 = (Range)worksheet.Range[worksheet.Cells[3, 3], worksheet.Cells[3, 4]];
                this.ExcelRange(range3_3, true, false, 0);

                worksheet.Cells[3, 5] = "性別";
                Range range3_5 = (Range)worksheet.Range[worksheet.Cells[3, 5], worksheet.Cells[3, 5]];
                this.ExcelRange(range3_5, false, false, 0);

                worksheet.Cells[3, 6] = TextToHtml(StudentModel.SexName);
                Range range3_6 = (Range)worksheet.Range[worksheet.Cells[3, 6], worksheet.Cells[3, 8]];
                this.ExcelRange(range3_6, true, false, 0);
                //第4行
                worksheet.Cells[4, 2] = "籍貫";
                Range range4_2 = (Range)worksheet.Range[worksheet.Cells[4, 2], worksheet.Cells[4, 2]];
                this.ExcelRange(range4_2, false, false, 0);

                worksheet.Cells[4, 3] = TextToHtml(StudentModel.LocationName.Replace("╋", "").Replace("├─", "").Replace("├", "").Replace("請選擇", ""));
                Range range4_3 = (Range)worksheet.Range[worksheet.Cells[4, 3], worksheet.Cells[4, 4]];
                this.ExcelRange(range4_3, true, false, 0);

                worksheet.Cells[4, 5] = "名族";
                Range range4_5 = (Range)worksheet.Range[worksheet.Cells[4, 5], worksheet.Cells[4, 5]];
                this.ExcelRange(range4_5, false, false, 0);

                worksheet.Cells[4, 6] = TextToHtml(StudentModel.NationName);
                Range range4_6 = (Range)worksheet.Range[worksheet.Cells[4, 6], worksheet.Cells[4, 8]];
                this.ExcelRange(range4_6, true, false, 0);
                //第4行
                worksheet.Cells[5, 2] = "政治面貌";
                Range range5_2 = (Range)worksheet.Range[worksheet.Cells[5, 2], worksheet.Cells[5, 2]];
                this.ExcelRange(range5_2, false, false, 0);

                worksheet.Cells[5, 3] = TextToHtml(StudentModel.PoliticalName);
                Range range5_3 = (Range)worksheet.Range[worksheet.Cells[5, 3], worksheet.Cells[5, 4]];
                this.ExcelRange(range5_3, true, false, 0);

                worksheet.Cells[5, 5] = "入團時間";
                Range range5_5 = (Range)worksheet.Range[worksheet.Cells[5, 5], worksheet.Cells[5, 5]];
                this.ExcelRange(range4_5, false, false, 0);

                worksheet.Cells[5, 6] =(StudentModel.PoliticalDate == MinDateTime ? string.Empty : StudentModel.PoliticalDate.ToString(DateFormat));
                Range range5_6 = (Range)worksheet.Range[worksheet.Cells[5, 6], worksheet.Cells[5, 8]];
                this.ExcelRange(range5_6, true, false, 0);
                range5_6.NumberFormat = "yyyy-MM-dd";
                //第5行
                worksheet.Cells[6, 2] = "出生日期";
                Range range6_2 = (Range)worksheet.Range[worksheet.Cells[6, 2], worksheet.Cells[6, 2]];
                this.ExcelRange(range6_2, false, false, 0);
               

                worksheet.Cells[6, 3] =(StudentModel.BirthdayDate == MinDateTime ? string.Empty : StudentModel.BirthdayDate.ToString(DateFormat));
                Range range6_3 = (Range)worksheet.Range[worksheet.Cells[6, 3], worksheet.Cells[6, 4]];
                this.ExcelRange(range6_3, true, false, 0);
                range6_3.NumberFormat = "yyyy-MM-dd";

                worksheet.Cells[6, 5] = "健康狀態";
                Range range6_5 = (Range)worksheet.Range[worksheet.Cells[6, 5], worksheet.Cells[6, 5]];
                this.ExcelRange(range6_5, false, false, 0);

                worksheet.Cells[6, 6] = TextToHtml(StudentModel.HealthName);
                Range range6_6 = (Range)worksheet.Range[worksheet.Cells[6, 6], worksheet.Cells[6, 8]];
                this.ExcelRange(range6_6, true, false, 0);

                //第6行
                worksheet.Cells[7, 2] = "戶口型別";
                Range range7_2 = (Range)worksheet.Range[worksheet.Cells[7, 2], worksheet.Cells[7, 2]];
                this.ExcelRange(range7_2, false, false, 0);

                worksheet.Cells[7, 3] = TextToHtml(StudentModel.LocationAddress.Replace("╋", "").Replace("├─", "").Replace("├", "").Replace("請選擇", ""));
                Range range7_3 = (Range)worksheet.Range[worksheet.Cells[7, 3], worksheet.Cells[7, 4]];
                this.ExcelRange(range7_3, true, false, 0);

                worksheet.Cells[7, 5] = "戶口所在地";
                Range range7_5 = (Range)worksheet.Range[worksheet.Cells[7, 5], worksheet.Cells[7, 5]];
                this.ExcelRange(range7_5, false, false, 0);

                worksheet.Cells[7, 6] = TextToHtml(StudentModel.BirthDayAddress.Replace("╋", "").Replace("├─", "").Replace("├", "").Replace("請選擇", ""));
                Range range7_6 = (Range)worksheet.Range[worksheet.Cells[7, 6], worksheet.Cells[7, 8]];
                this.ExcelRange(range7_6, true, false, 0);

                //第7行
                worksheet.Cells[8, 2] = "出生地";
                Range range8_2 = (Range)worksheet.Range[worksheet.Cells[8, 2], worksheet.Cells[8, 2]];
                this.ExcelRange(range8_2, false, false, 0);

                worksheet.Cells[8, 3] = TextToHtml(StudentModel.BirthDayAddress.Replace("╋", "").Replace("├─", "").Replace("├", "").Replace("請選擇", ""));
                Range range8_3 = (Range)worksheet.Range[worksheet.Cells[8, 3], worksheet.Cells[8, 4]];
                this.ExcelRange(range8_3, true, false, 0);

                worksheet.Cells[8, 5] = "血型";
                Range range8_5 = (Range)worksheet.Range[worksheet.Cells[8, 5], worksheet.Cells[8, 5]];
                this.ExcelRange(range8_5, false, false, 0);

                worksheet.Cells[8, 6] = TextToHtml(StudentModel.Blood);
                Range range8_6 = (Range)worksheet.Range[worksheet.Cells[8, 6], worksheet.Cells[8, 10]];
                this.ExcelRange(range8_6, true, false, 0);

                //第8行
                worksheet.Cells[9, 2] = "學級";
                Range range9_2 = (Range)worksheet.Range[worksheet.Cells[9, 2], worksheet.Cells[9, 2]];
                this.ExcelRange(range9_2, false, false, 0);

                worksheet.Cells[9, 3] = TextToHtml(StudentModel.ScienceSessionName);
                Range range9_3 = (Range)worksheet.Range[worksheet.Cells[9, 3], worksheet.Cells[9, 4]];
                this.ExcelRange(range9_3, true, false, 0);

                worksheet.Cells[9, 5] = "身份證號";
                Range range9_5 = (Range)worksheet.Range[worksheet.Cells[9, 5], worksheet.Cells[9, 5]];
                this.ExcelRange(range9_5, false, false, 0);

                worksheet.Cells[9, 6] ="'"+TextToHtml(StudentModel.IDNumber);
                Range range9_6 = (Range)worksheet.Range[worksheet.Cells[9, 6], worksheet.Cells[9, 10]];
                this.ExcelRange(range9_6, true, false, 0);

                //第9行
                worksheet.Cells[10, 2] = "港澳臺僑外";
                Range range10_2 = (Range)worksheet.Range[worksheet.Cells[10, 2], worksheet.Cells[10, 2]];
                this.ExcelRange(range10_2, false, false, 0);

                worksheet.Cells[10, 3] = (StudentModel.IsForeign == decimal.One ? "是" : "否");
                Range range10_3 = (Range)worksheet.Range[worksheet.Cells[10, 3], worksheet.Cells[10, 4]];
                this.ExcelRange(range10_3, true, false, 0);

                worksheet.Cells[10, 5] = "郵政編碼";
                Range range10_5 = (Range)worksheet.Range[worksheet.Cells[10, 5], worksheet.Cells[10, 5]];
                this.ExcelRange(range10_5, false, false, 0);

                worksheet.Cells[10, 6] = TextToHtml(StudentModel.PostalCode);
                Range range10_6 = (Range)worksheet.Range[worksheet.Cells[10, 6], worksheet.Cells[10, 10]];
                this.ExcelRange(range10_6, true, false, 0);

                //第10行
                worksheet.Cells[11, 2] = "聯絡電話";
                Range range11_2 = (Range)worksheet.Range[worksheet.Cells[11, 2], worksheet.Cells[11, 2]];
                this.ExcelRange(range11_2, false, false, 0);

                worksheet.Cells[11, 3] = "'"+TextToHtml(StudentModel.Phone);
                Range range11_3 = (Range)worksheet.Range[worksheet.Cells[11, 3], worksheet.Cells[11, 4]];
                this.ExcelRange(range11_3, true, false, 0);

                worksheet.Cells[11, 5] = "電子郵箱";
                Range range11_5 = (Range)worksheet.Range[worksheet.Cells[11, 5], worksheet.Cells[11, 5]];
                this.ExcelRange(range11_5, false, false, 0);

                worksheet.Cells[11, 6] = TextToHtml(StudentModel.Email);
                Range range11_6 = (Range)worksheet.Range[worksheet.Cells[11, 6], worksheet.Cells[11, 10]];
                this.ExcelRange(range11_6, true, false, 0);

                //第11行
                worksheet.Cells[12, 2] = "通訊地址";
                Range range12_2 = (Range)worksheet.Range[worksheet.Cells[12, 2], worksheet.Cells[12, 2]];
                this.ExcelRange(range12_2, false, false, 0);

                worksheet.Cells[12, 3] = TextToHtml(StudentModel.Address);
                Range range12_3 = (Range)worksheet.Range[worksheet.Cells[12, 3], worksheet.Cells[12, 10]];
                this.ExcelRange(range12_3, true, false, 0);

                //第12行
                worksheet.Cells[13, 2] = "家庭地址";
                Range range13_2 = (Range)worksheet.Range[worksheet.Cells[13, 2], worksheet.Cells[3, 2]];
                this.ExcelRange(range13_2, false, false, 0);

                worksheet.Cells[13, 3] = TextToHtml(StudentModel.Address);
                Range range13_3 = (Range)worksheet.Range[worksheet.Cells[13, 3], worksheet.Cells[13, 10]];
                this.ExcelRange(range13_3, true, false, 0);

                //第13行
                worksheet.Cells[14, 2] = "現住地址";
                Range range14_2 = (Range)worksheet.Range[worksheet.Cells[14, 2], worksheet.Cells[14, 2]];
                this.ExcelRange(range14_2, false, false, 0);

                worksheet.Cells[14, 3] = TextToHtml(StudentModel.CurrentAddress);
                Range range14_3 = (Range)worksheet.Range[worksheet.Cells[14, 3], worksheet.Cells[14, 10]];
                this.ExcelRange(range14_3, true, false, 0);

                //第14行
                worksheet.Cells[15, 2] = "特長";
                Range range15_2 = (Range)worksheet.Range[worksheet.Cells[15, 2], worksheet.Cells[15, 2]];
                this.ExcelRange(range15_2, false, false, 0);

                worksheet.Cells[15, 3] = TextToHtml(StudentModel.Speciality);
                Range range15_3 = (Range)worksheet.Range[worksheet.Cells[15, 3], worksheet.Cells[15, 10]];
                this.ExcelRange(range15_3, true, false, 0);

                //----------------------------------------擴充套件資訊-----------------------------------------------------
                worksheet.Cells[16, 1] = "擴充套件資訊";
                Range range16_1 = (Range)worksheet.Range[worksheet.Cells[16, 1], worksheet.Cells[16, 1]];
                this.ExcelRange(range16_1, false, true, 1);


                worksheet.Cells[16, 2] = "是否留守兒童";
                Range range16_2 = (Range)worksheet.Range[worksheet.Cells[16, 2], worksheet.Cells[16, 2]];
                this.ExcelRange(range16_2, false, false, 1);

                worksheet.Cells[16, 3] = (StudentModel.IsVillageStay == decimal.One ? "是" : "否");
                Range range16_3 = (Range)worksheet.Range[worksheet.Cells[16, 3], worksheet.Cells[16, 3]];
                this.ExcelRange(range16_3, false, false, 0);

                worksheet.Cells[16, 4] = "是否獨生子女";
                Range range16_4 = (Range)worksheet.Range[worksheet.Cells[16, 4], worksheet.Cells[16, 4]];
                this.ExcelRange(range16_4, false, false, 1);

                worksheet.Cells[16, 5] = (StudentModel.IsOnlyChild == decimal.One ? "是" : "否");
                Range range16_5 = (Range)worksheet.Range[worksheet.Cells[16, 5], worksheet.Cells[16, 5]];
                this.ExcelRange(range16_5, false, false, 0);

                worksheet.Cells[16, 6] = "是否孤兒";
                Range range16_6 = (Range)worksheet.Range[worksheet.Cells[16, 6], worksheet.Cells[16, 6]];
                this.ExcelRange(range16_6, false, false, 1);

                worksheet.Cells[16, 7] = (StudentModel.IsOrphan == decimal.One ? "是" : "否");
                Range range16_7 = (Range)worksheet.Range[worksheet.Cells[16, 7], worksheet.Cells[16, 10]];
                this.ExcelRange(range16_7, true, false, 0);
                //-------------------------------------------監護人與家庭成員資訊---------------------------------------------
                worksheet.Cells[17, 1] = "監護人與家庭成員資訊";
                Range range17_1 = (Range)worksheet.Range[worksheet.Cells[17, 1], worksheet.Cells[22, 1]];
                this.ExcelRange(range17_1, true, true, 1);

                worksheet.Cells[17, 2] = "序號";
                Range range17_2 = (Range)worksheet.Range[worksheet.Cells[17, 2], worksheet.Cells[17, 2]];
                this.ExcelRange(range17_2, true, false, 1);

                worksheet.Cells[17, 3] = "關係";
                Range range17_3 = (Range)worksheet.Range[worksheet.Cells[17, 3], worksheet.Cells[17, 3]];
                this.ExcelRange(range17_3, false, false, 1);

                worksheet.Cells[17, 4] = "是否監護人";
                Range range17_4 = (Range)worksheet.Range[worksheet.Cells[17, 4], worksheet.Cells[17, 4]];
                this.ExcelRange(range17_4, false, false, 1);

                worksheet.Cells[17, 5] = "姓名";
                Range range17_5 = (Range)worksheet.Range[worksheet.Cells[17, 5], worksheet.Cells[17, 5]];
                this.ExcelRange(range17_5, false, false, 1);

                worksheet.Cells[17, 6] = "文化程度";
                Range range17_6 = (Range)worksheet.Range[worksheet.Cells[17, 6], worksheet.Cells[17, 6]];
                this.ExcelRange(range17_6, false, false, 1);

                worksheet.Cells[17, 7] = "聯絡電話";
                Range range17_7 = (Range)worksheet.Range[worksheet.Cells[17, 7], worksheet.Cells[17, 7]];
                this.ExcelRange(range17_7, false, false, 1);

                worksheet.Cells[17, 8] = "職務";
                Range range17_8 = (Range)worksheet.Range[worksheet.Cells[17, 8], worksheet.Cells[17, 8]];
                this.ExcelRange(range17_8, false, false, 1);

                worksheet.Cells[17, 9] = "工作單位";
                Range range17_9 = (Range)worksheet.Range[worksheet.Cells[17, 9], worksheet.Cells[17, 10]];
                this.ExcelRange(range17_9, true, false, 1);
                var RowCountIndex = 18;//行的開始位置
                var index = 1;
                foreach (var tt in FamilyList)
                {
                    worksheet.Cells[RowCountIndex, 2] = index.ToString();
                    Range range18_2 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 2], worksheet.Cells[RowCountIndex, 2]];
                    this.ExcelRange(range18_2, false, false, 1);
                    worksheet.Cells[RowCountIndex, 3] = TextToHtml(tt.NumberRelation);
                    Range range18_3 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 3], worksheet.Cells[RowCountIndex, 3]];
                    this.ExcelRange(range18_3, false, false, 1);
                    worksheet.Cells[RowCountIndex, 4] = (tt.IsGuardianShip == decimal.One ? "是" : "否");
                    Range range18_4 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 4], worksheet.Cells[RowCountIndex, 4]];
                    this.ExcelRange(range18_4, false, false, 1);
                    worksheet.Cells[RowCountIndex, 5] = TextToHtml(tt.NemberName);
                    Range range18_5 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 5], worksheet.Cells[RowCountIndex, 5]];
                    this.ExcelRange(range18_5, false, false, 1);
                    worksheet.Cells[RowCountIndex, 6] = TextToHtml(tt.Education);
                    Range range18_6 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 6], worksheet.Cells[RowCountIndex, 6]];
                    this.ExcelRange(range18_6, false, false, 1);
                    worksheet.Cells[RowCountIndex, 7] = "'"+TextToHtml(tt.Telephone);
                    Range range18_7 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 7], worksheet.Cells[RowCountIndex, 7]];
                    this.ExcelRange(range18_7, false, false, 0);
                    worksheet.Cells[RowCountIndex, 8] = TextToHtml(tt.Job);
                    Range range18_8 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 8], worksheet.Cells[RowCountIndex, 8]];
                    this.ExcelRange(range18_8, false, false, 0);
                    worksheet.Cells[RowCountIndex, 9] = TextToHtml(tt.WorkPlace);
                    Range range18_9 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 9], worksheet.Cells[RowCountIndex, 10]];
                    this.ExcelRange(range18_9, true, false, 0);
                    RowCountIndex++;
                    index++;
                }
                for (int i = 0; i < 5 - FamilyList.Count; i++)
                {
                    worksheet.Cells[RowCountIndex, 2] = index.ToString();
                    Range range18_2 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 2], worksheet.Cells[RowCountIndex, 2]];
                    this.ExcelRange(range18_2, false, false, 1);
                    worksheet.Cells[RowCountIndex, 3] = "";
                    Range range18_3 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 3], worksheet.Cells[RowCountIndex, 3]];
                    this.ExcelRange(range18_3, false, false, 1);
                    worksheet.Cells[RowCountIndex, 4] = "";
                    Range range18_4 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 4], worksheet.Cells[RowCountIndex, 4]];
                    this.ExcelRange(range18_4, false, false, 1);
                    worksheet.Cells[RowCountIndex, 5] = "";
                    Range range18_5 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 5], worksheet.Cells[RowCountIndex, 5]];
                    this.ExcelRange(range18_5, false, false, 1);
                    worksheet.Cells[RowCountIndex, 6] = "";
                    Range range18_6 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 6], worksheet.Cells[RowCountIndex, 6]];
                    this.ExcelRange(range18_6, false, false, 1);
                    worksheet.Cells[RowCountIndex, 7] = "";
                    Range range18_7 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 7], worksheet.Cells[RowCountIndex, 7]];
                    this.ExcelRange(range18_7, false, false, 0);
                    worksheet.Cells[RowCountIndex, 8] = "";
                    Range range18_8 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 8], worksheet.Cells[RowCountIndex, 8]];
                    this.ExcelRange(range18_8, false, false, 0);
                    worksheet.Cells[RowCountIndex, 9] = "";
                    Range range18_9 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 9], worksheet.Cells[RowCountIndex, 10]];
                    this.ExcelRange(range18_9, true, false, 0);
                    RowCountIndex++;
                    index++;
                }

                //-------------------------------------------獲獎情況---------------------------------------------
                worksheet.Cells[23, 1] = "獲獎情況";
                Range range23_1 = (Range)worksheet.Range[worksheet.Cells[23, 1], worksheet.Cells[28, 1]];
                this.ExcelRange(range23_1, true, true, 1);

                worksheet.Cells[23, 2] = "序號";
                Range range23_2 = (Range)worksheet.Range[worksheet.Cells[23, 2], worksheet.Cells[23, 2]];
                this.ExcelRange(range23_2, false, false, 1);

                worksheet.Cells[23, 3] = "獲獎名稱";
                Range range23_3 = (Range)worksheet.Range[worksheet.Cells[23, 3], worksheet.Cells[23, 3]];
                this.ExcelRange(range23_3, false, false, 1);

                worksheet.Cells[23, 4] = "獲獎等級";
                Range range23_4 = (Range)worksheet.Range[worksheet.Cells[23, 4], worksheet.Cells[23, 4]];
                this.ExcelRange(range23_4, false, false, 1);

                worksheet.Cells[23, 5] = "獲獎日期";
                Range range23_5 = (Range)worksheet.Range[worksheet.Cells[23, 5], worksheet.Cells[23, 5]];
                this.ExcelRange(range23_5, false, false, 1);
               

                worksheet.Cells[23, 6] = "獲獎單位";
                Range range23_6 = (Range)worksheet.Range[worksheet.Cells[23, 6], worksheet.Cells[23, 10]];
                this.ExcelRange(range23_6, true, false, 1);
                RowCountIndex = 24;
                index = 1;
                foreach (var item in StudentPremiumList)
                {
                    worksheet.Cells[RowCountIndex, 2] = index.ToString();
                    Range range24_2 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 2], worksheet.Cells[RowCountIndex, 2]];
                    this.ExcelRange(range24_2, false, false, 1);
                    worksheet.Cells[RowCountIndex, 3] = TextToHtml(item.PremiumName);
                    Range range24_3 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 3], worksheet.Cells[RowCountIndex, 3]];
                    this.ExcelRange(range24_3, false, false, 0);
                    worksheet.Cells[RowCountIndex, 4] = TextToHtml(item.PremiumLevelName);
                    Range range24_4 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 4], worksheet.Cells[RowCountIndex, 4]];
                    this.ExcelRange(range24_4, false, false, 1);
                    worksheet.Cells[RowCountIndex, 5] =(item.PremiumDate == MinDateTime ? string.Empty : item.PremiumDate.ToString(DateFormat));
                    Range range24_5 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 5], worksheet.Cells[RowCountIndex, 5]];
                    this.ExcelRange(range24_5, false, false, 1);
                    range24_5.NumberFormat = "yyyy-MM-dd";

                    worksheet.Cells[RowCountIndex, 6] = TextToHtml(item.PremiumAddress);
                    Range range24_6 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 6], worksheet.Cells[RowCountIndex, 10]];
                    this.ExcelRange(range24_6, true, false, 0);
                    RowCountIndex++;
                    index++;
                }
                for (int i = 0; i < 5 - StudentPremiumList.Count; i++)
                {
                    worksheet.Cells[RowCountIndex, 2] = index.ToString();
                    Range range24_2 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 2], worksheet.Cells[RowCountIndex, 2]];
                    this.ExcelRange(range24_2, false, false, 1);
                    worksheet.Cells[RowCountIndex, 3] = "";
                    Range range24_3 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 3], worksheet.Cells[RowCountIndex, 3]];
                    this.ExcelRange(range24_3, false, false, 0);
                    worksheet.Cells[RowCountIndex, 4] = "";
                    Range range24_4 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 4], worksheet.Cells[RowCountIndex, 4]];
                    this.ExcelRange(range24_4, false, false, 1);
                    worksheet.Cells[RowCountIndex, 5] = "";
                    Range range24_5 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 5], worksheet.Cells[RowCountIndex, 5]];
                    this.ExcelRange(range24_5, false, false, 1);
                    worksheet.Cells[RowCountIndex, 6] = "";
                    Range range24_6 = (Range)worksheet.Range[worksheet.Cells[RowCountIndex, 6], worksheet.Cells[RowCountIndex, 10]];
                    this.ExcelRange(range24_6, true, false, 0);
                    RowCountIndex++;
                    index++;
                }
                //-------------------------------------------高中三年規劃和目標---------------------------------------------
                worksheet.Cells[29, 1] = "高中三年規劃和目標";
                Range range29_1 = (Range)worksheet.Range[worksheet.Cells[29, 1], worksheet.Cells[29, 1]];
                range29_1.RowHeight = 80;
                //字型大小
                range29_1.Font.Size = 10;
                range29_1.Font.Bold = true;
                //設定字型顏色
                range29_1.Font.ColorIndex = 0;
                //居左
                range29_1.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft;
                //設定邊框樣式
                range29_1.Borders.LineStyle = XlLineStyle.xlContinuous;

                worksheet.Cells[29, 2] =StudentModel.Remark; //TextToHtml()
                Range range29_2 = (Range)worksheet.Range[worksheet.Cells[29, 2], worksheet.Cells[29, 10]];
                range29_2.RowHeight = 80;
                //字型大小
                range29_2.Font.Size = 10;
                range29_2.MergeCells = true;

                //設定字型顏色
                range29_2.Font.ColorIndex = 0;
                //居左
                range29_2.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft;
                //設定邊框樣式
                range29_2.Borders.LineStyle = XlLineStyle.xlContinuous;

                range29_2.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignTop;
                range29_2.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
                range29_2.WrapText = true;//自動換行


                worksheet.Cells[30, 1] = "請仔細核對以上資訊,確保真實有效,如不相符,由學生本人和監護人承擔由此造成的一切後果";
                Range range30_1 = (Range)worksheet.Range[worksheet.Cells[30, 1], worksheet.Cells[30, 10]];
                range30_1.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft;
                range30_1.Borders.LineStyle = XlLineStyle.xlContinuous;
                range30_1.MergeCells = true;
                range30_1.RowHeight = 20;
                range30_1.Font.ColorIndex = 0;
                range30_1.Font.Size = 10;

                worksheet.Cells[31, 1] = "學生簽名:          監護人簽名:     ";
                Range range31_1 = (Range)worksheet.Range[worksheet.Cells[31, 1], worksheet.Cells[31, 10]];
                range31_1.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlRight;
                range31_1.Borders.LineStyle = XlLineStyle.xlContinuous;
                range31_1.MergeCells = true;
                range31_1.RowHeight = 20;
                range31_1.Font.ColorIndex = 0;
                range31_1.Font.Size = 10;
                //excel.Visible = true;

                worksheet.Cells[32, 1] = "年    月    日   ";
                Range range32_1 = (Range)worksheet.Range[worksheet.Cells[32, 1], worksheet.Cells[32, 10]];
                range32_1.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlRight;
                range32_1.Borders.LineStyle = XlLineStyle.xlContinuous;
                range32_1.MergeCells = true;
                range32_1.RowHeight = 20;
                range32_1.Font.ColorIndex = 0;
                range32_1.Font.Size = 10;

                //------------------------------------照片---------------------------------------------------------
                Microsoft.Office.Interop.Excel.Range rangeImage = excel.Range[excel.Cells[2, 9], excel.Cells[7, 10]];
                rangeImage.Borders.LineStyle = XlLineStyle.xlContinuous;
                rangeImage.MergeCells = true;
                rangeImage.Select();

                Microsoft.Office.Interop.Excel.Range pic2 = excel.Range[excel.Cells[2, 9], excel.Cells[7, 10]];
                pic2.Select();
                float picleft, pictop;
                picleft = Convert.ToSingle(pic2.Left + 0.35);
                pictop = Convert.ToSingle(pic2.Top + 1);
                float width, height;
                width = 118;
                height = 115;
                worksheet.Shapes.AddPicture(ImagePath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, picleft, pictop, width, height);
                workbook.SaveAs(ExcelPath, miss, miss, miss, miss, miss, XlSaveAsAccessMode.xlNoChange, miss, miss, miss, miss, miss);

                workbook.RefreshAll();
                worksheet = null;
            }
            catch (Exception err)
            {
                this.ShowMessage("操作Excel檔案異常: " + Environment.NewLine + err.Message);
            }
            finally
            {
                if (workbook != null)
                {
                    workbook.Close(false, Missing.Value, Missing.Value);
                    workbook = null;
                }
                if (excel != null)
                {
                    excel.Quit();
                    excel = null;
                }
                GC.Collect();
            }

        }