public bool ThucHien() { if (DsMonThi.SoLuongMau > DSGioThi.Count) { return(BatLoi.ThongBao2("Số lượng giờ thi sử dụng không đủ để xếp lịch. Vui lòng kiểm tra lại")); } try { TienTrinh = new Thread(ShowProcess); TienTrinh.Start(); int TietXep = 0; while (DsMonThi.Length > 0) { DsMonThi.SortGiam(); if (DuocPhepTo(DsMonThi[0], TietXep)) { DsMonThi.SetGio(DsMonThi[0], DSGioThi[TietXep]); UpdateDs(DsMonThi[0]); } for (int i = 0; i < DsMonThi.Length; i++) { MonThi mt2 = DsMonThi[i]; if (!GioDaDung(DsMonThi[i], TietXep) && DuocPhepTo(DsMonThi[i], TietXep)) { DsMonThi.SetGio(mt2, DSGioThi[TietXep]); UpdateDs(mt2); i--; } } TietXep++; } } catch (Exception) { TienTrinh.Abort(); return(false); } TienTrinh.Abort(); return(true); }
public static void Export(DataTable dt, string fileName, string title) { Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbooks oBooks; Microsoft.Office.Interop.Excel.Sheets oSheets; Microsoft.Office.Interop.Excel.Workbook oBook; Microsoft.Office.Interop.Excel.Worksheet oSheet; //Tạo mới một Excel WorkBook oExcel.Visible = true; oExcel.DisplayAlerts = false; oExcel.Application.SheetsInNewWorkbook = 1; oBooks = oExcel.Workbooks; oBook = (Microsoft.Office.Interop.Excel.Workbook)(oExcel.Workbooks.Add(Type.Missing)); oSheets = oBook.Worksheets; oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oSheets.get_Item(1); oSheet.Name = "KetQua"; // Tạo phần đầu nếu muốn Microsoft.Office.Interop.Excel.Range head = oSheet.get_Range("A1", "L1"); head.MergeCells = true; head.RowHeight = 30; head.Value2 = title; head.Font.Bold = true; head.Font.Name = "Tahoma"; head.Font.Size = "18"; head.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // Tạo tiêu đề cột Microsoft.Office.Interop.Excel.Range cl1 = oSheet.get_Range("A2", "A2"); cl1.Value2 = "STT"; cl1.ColumnWidth = 8; Microsoft.Office.Interop.Excel.Range cl2 = cl1.Next; cl2.Value2 = "MÃ HP"; cl2.ColumnWidth = 10; Microsoft.Office.Interop.Excel.Range cl3 = cl2.Next; cl3.Value2 = "TÊN HỌC PHẦN"; cl3.ColumnWidth = 35; Microsoft.Office.Interop.Excel.Range cl5 = cl3.Next; cl5.Value2 = "SỐ TC"; cl5.ColumnWidth = 8; Microsoft.Office.Interop.Excel.Range cl6 = cl5.Next; cl6.Value2 = "SỐ SV"; cl6.ColumnWidth = 8; Microsoft.Office.Interop.Excel.Range cl7 = cl6.Next; cl7.Value2 = "HT THI"; cl7.ColumnWidth = 15; Microsoft.Office.Interop.Excel.Range cl8 = cl7.Next; cl8.Value2 = "THỜI LƯỢNG"; cl8.ColumnWidth = 15; Microsoft.Office.Interop.Excel.Range cl9 = cl8.Next; cl9.Value2 = "NGÀY"; cl9.ColumnWidth = 15; cl9.EntireColumn.NumberFormat = "MM/dd/yyyy"; Microsoft.Office.Interop.Excel.Range cl10 = cl9.Next; cl10.Value2 = "GIỜ"; cl10.ColumnWidth = 10; cl10.EntireColumn.NumberFormat = "hh:mm"; Microsoft.Office.Interop.Excel.Range cl11 = cl10.Next; cl11.Value2 = "PHÒNG"; cl11.ColumnWidth = 15; Microsoft.Office.Interop.Excel.Range cl12 = cl11.Next; cl12.Value2 = "LỚP"; cl12.ColumnWidth = 20; Microsoft.Office.Interop.Excel.Range cl13 = cl12.Next; cl13.Value2 = "GIẢNG VIÊN"; cl13.ColumnWidth = 15; Microsoft.Office.Interop.Excel.Range rowHead = oSheet.get_Range("A2", "L2"); rowHead.Font.Bold = true; // Kẻ viền rowHead.Borders.LineStyle = Microsoft.Office.Interop.Excel.Constants.xlSolid; // Thiết lập màu nền rowHead.Interior.ColorIndex = 15; rowHead.Font.Size = 13; rowHead.RowHeight = 20; rowHead.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // Tạo mảng đối tượng để lưu dữ toàn bộ dữ liệu trong DataTable, // vì dữ liệu được được gán vào các Cell trong Excel phải thông qua object thuần. object[,] arr = new object[dt.Rows.Count, dt.Columns.Count]; //Chuyển dữ liệu từ DataTable vào mảng đối tượng for (int r = 0; r < dt.Rows.Count; r++) { DataRow dr = dt.Rows[r]; for (int c = 0; c < dt.Columns.Count; c++) { arr[r, c] = dr[c]; } } //Thiết lập vùng điền dữ liệu int rowStart = 3; int columnStart = 1; int rowEnd = rowStart + dt.Rows.Count - 1; int columnEnd = dt.Columns.Count; // Ô bắt đầu điền dữ liệu Microsoft.Office.Interop.Excel.Range c1 = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[rowStart, columnStart]; // Ô kết thúc điền dữ liệu Microsoft.Office.Interop.Excel.Range c2 = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[rowEnd, columnEnd]; // Lấy về vùng điền dữ liệu Microsoft.Office.Interop.Excel.Range range = oSheet.get_Range(c1, c2); //Điền dữ liệu vào vùng đã thiết lập range.Value2 = arr; // Kẻ viền range.Borders.LineStyle = Microsoft.Office.Interop.Excel.Constants.xlSolid; // Định dạng oSheet.get_Range(c1, c2).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; oSheet.get_Range(c1, c2).Font.Size = 12; //oBook.SaveAs(fileName,Microsoft.Office.Interop.Excel.XlFileFormat.xlXMLSpreadsheet, false,false,false, false,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,false, false, false, false, false); oBook.SaveAs(fileName); oBook.Close(); oExcel.Quit(); if (BatLoi.DgResul("Lưu thành công, bạn có muốn mở file không")) { Process.Start(fileName); } }