Ejemplo n.º 1
0
        private void btnThucHien_Click(object sender, EventArgs e)
        {
            btnThucHien.Enabled = false;
            Cursor.Current      = Cursors.WaitCursor;
            ATINChamCongEntities context         = new ATINChamCongEntities();
            int          TongSoNV                = context.Nguois.Count();
            int          TongSoNVDangHD          = context.Nguois.Where(x => (x.TrangThaiHoatDong == 1 || x.TrangThaiHoatDong == 2)).Count();
            int          TongSoNVDaDiemDanh      = 0;
            List <Nguoi> lstNhanVienChuaDiemDanh = new List <Nguoi>();

            foreach (var nguoi in context.Nguois.Where(x => (x.TrangThaiHoatDong == 1 || x.TrangThaiHoatDong == 2)).ToList())
            {
                if (context.spGetAllViewGioNguonOrderByNgayGio(nguoi.MaNguoi, dateChonNgay.Value, dateChonNgay.Value).Count() > 0)
                {
                    TongSoNVDaDiemDanh++;
                }
                else
                {
                    lstNhanVienChuaDiemDanh.Add(nguoi);
                }
            }
            try
            {
                string saveExcelFile = @"C:\ĐiemDanh_report.xlsx";

                Excel.Application xlApp = new Excel.Application();

                if (xlApp == null)
                {
                    MessageBox.Show("Lỗi không thể sử dụng được thư viện EXCEL");
                    return;
                }
                xlApp.Visible = false;

                object misValue = System.Reflection.Missing.Value;

                Workbook wb = xlApp.Workbooks.Add(misValue);

                Worksheet ws = (Worksheet)wb.Worksheets[1];

                if (ws == null)
                {
                    MessageBox.Show("Không thể tạo được WorkSheet");
                    return;
                }
                string fontName          = "Times New Roman";
                int    fontSizeTieuDe    = 18;
                int    fontSizeTenTruong = 12;
                int    fontSizeNoiDung   = 11;
                //Xuất dòng Tiêu đề của File báo cáo: Lưu ý
                Range row1_TieuDe_ThongKeSanPham = ws.get_Range("A1", "D1");
                row1_TieuDe_ThongKeSanPham.Merge();
                row1_TieuDe_ThongKeSanPham.Font.Size = fontSizeTieuDe;
                row1_TieuDe_ThongKeSanPham.Font.Name = fontName;
                row1_TieuDe_ThongKeSanPham.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                row1_TieuDe_ThongKeSanPham.Value2 = "Điểm Danh";

                Range row23_TongNV = ws.get_Range("A2", "A3");
                row23_TongNV.Merge();
                row23_TongNV.Font.Size = fontSizeTenTruong;
                row23_TongNV.Font.Name = fontName;
                row23_TongNV.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row23_TongNV.Value2 = "Tổng số nhân viên";
                row23_TongNV.Columns.AutoFit();

                Range row23_TongNVDangHD = ws.get_Range("B2", "B3");
                row23_TongNVDangHD.Merge();
                row23_TongNVDangHD.Font.Name = fontName;
                row23_TongNVDangHD.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row23_TongNVDangHD.Value2    = "Tổng số nhân viên đang hoạt động";
                row23_TongNVDangHD.Font.Size = fontSizeTenTruong;
                row23_TongNVDangHD.Columns.AutoFit();


                Range row23_NVDaDiemDanh = ws.get_Range("C2", "C3");
                row23_NVDaDiemDanh.Merge();
                row23_NVDaDiemDanh.Font.Size = fontSizeTenTruong;
                row23_NVDaDiemDanh.Font.Name = fontName;
                row23_NVDaDiemDanh.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row23_NVDaDiemDanh.Value2 = "Tổng số nhân viên đã điểm danh";
                row23_NVDaDiemDanh.Columns.AutoFit();



                Range row23_TongNVChuaDiemDanh = ws.get_Range("D2", "D3");
                row23_TongNVChuaDiemDanh.Merge();
                row23_TongNVChuaDiemDanh.Font.Size = fontSizeTenTruong;
                row23_TongNVChuaDiemDanh.Font.Name = fontName;
                row23_TongNVChuaDiemDanh.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row23_TongNVChuaDiemDanh.Value2 = "Tổng số nhân viên chưa điểm danh";
                row23_TongNVChuaDiemDanh.Columns.AutoFit();

                Range row23_listNV = ws.get_Range("A5", "D5");
                row23_listNV.Merge();
                row23_listNV.Font.Size = fontSizeTenTruong;
                row23_listNV.Font.Name = fontName;
                row23_listNV.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row23_listNV.Value2 = "Danh sách nhân viên chưa điểm danh(nếu có)";

                Range     rowData1 = ws.get_Range("A" + 4, "D" + 4);
                dynamic[] arr      = { TongSoNV, TongSoNVDangHD, TongSoNVDaDiemDanh, TongSoNVDangHD - TongSoNVDaDiemDanh };
                rowData1.Font.Size = fontSizeNoiDung;
                rowData1.Font.Name = fontName;
                rowData1.Cells.HorizontalAlignment = XlHAlign.xlHAlignLeft;
                rowData1.Value2 = arr;

                int row = 5;//dữ liệu xuất bắt đầu từ dòng số 4 trong file Excel (khai báo 2 để vào vòng lặp nó ++ thành 3)
                foreach (var sp in lstNhanVienChuaDiemDanh)
                {
                    row++;
                    Range rowData = ws.get_Range("A" + row, "D" + row);//Lấy dòng thứ row ra để đổ dữ liệu
                    rowData.Merge();
                    rowData.Font.Size = fontSizeNoiDung;
                    rowData.Font.Name = fontName;
                    rowData.Value2    = sp.HoTen + "(" + sp.MaNguoi + ")";
                }
                //Kẻ khung toàn bộ
                BorderAround(ws.get_Range("A2", "D" + row));

                //Lưu file excel xuống Ổ cứng
                wb.SaveAs(saveExcelFile);

                //đóng file để hoàn tất quá trình lưu trữ
                wb.Close(true, misValue, misValue);
                //thoát và thu hồi bộ nhớ cho COM
                xlApp.Quit();
                releaseObject(ws);
                releaseObject(wb);
                releaseObject(xlApp);

                //Mở File excel sau khi Xuất thành công
                System.Diagnostics.Process.Start(saveExcelFile);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            btnThucHien.Enabled = true;
            Cursor.Current      = Cursors.Default;
            this.Close();
        }