Beispiel #1
0
        private void btnXuatExcel_Click(object sender, EventArgs e)
        {
            try
            {
                string            saveExcelFile = @"D:\excel_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;
                }
                int    row               = 1;
                string fontName          = "Times New Roman";
                int    fontSizeTieuDe    = 18;
                int    fontSizeTenTruong = 14;
                int    fontSizeNoiDung   = 12;
                //Xuất dòng Tiêu đề của File báo cáo: Lưu ý
                Range row1_TieuDe_ThongKeSanPham = ws.get_Range("C1", "E1");
                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 = "Phiếu Nhập Kho";

                Range row1_SoPhieu = ws.get_Range("C2");
                //   row1_SoPhieu.Merge();
                row1_SoPhieu.Font.Size = fontSizeTenTruong;
                row1_SoPhieu.Font.Name = fontName;
                row1_SoPhieu.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row1_SoPhieu.Value2 = "Số Phiếu:";

                Range row1_MaPhieu = ws.get_Range("D2");
                row1_MaPhieu.Font.Size = fontSizeNoiDung;
                row1_MaPhieu.Font.Name = fontName;
                row1_MaPhieu.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row1_MaPhieu.Value2 = maPNChon;

                Range row1_NguoiLap = ws.get_Range("E2");
                row1_NguoiLap.Font.Size = fontSizeNoiDung;
                row1_NguoiLap.Font.Name = fontName;
                row1_NguoiLap.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row1_NguoiLap.Value2 = "Người Tạo:";

                Range row1_NguoiTao = ws.get_Range("F2");
                row1_NguoiTao.Font.Size = fontSizeNoiDung;
                row1_NguoiTao.Font.Name = fontName;
                row1_NguoiTao.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row1_NguoiTao.Value2 = Form1.tenNgDung;

                //Tạo Ô Số Thứ Tự (STT)
                Range row23_STT = ws.get_Range("A3", "A4");//Cột A dòng 2 và dòng 3
                row23_STT.Merge();
                row23_STT.Font.Size = fontSizeTenTruong;
                row23_STT.Font.Name = fontName;
                row23_STT.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row23_STT.Value2 = "STT";

                //Tạo Ô Mã Sản phẩm :
                Range row23_MaSP = ws.get_Range("B3", "B4");//Cột B dòng 2 và dòng 3
                row23_MaSP.Merge();
                row23_MaSP.Font.Size = fontSizeTenTruong;
                row23_MaSP.Font.Name = fontName;
                row23_MaSP.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row23_MaSP.Value2      = "Mã Sản Phẩm";
                row23_MaSP.ColumnWidth = 20;

                //Tạo Ô Tên Sản phẩm :
                Range row23_TenSP = ws.get_Range("C3", "C4");//Cột C dòng 2 và dòng 3
                row23_TenSP.Merge();
                row23_TenSP.Font.Size = fontSizeTenTruong;
                row23_TenSP.Font.Name = fontName;
                row23_TenSP.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row23_TenSP.ColumnWidth = 20;
                row23_TenSP.Value2      = "Tên Sản Phẩm";

                //Tạo Ô Giá Sản phẩm :
                Range row2_GiaSP = ws.get_Range("D3", "D4");//Cột D->E của  dòng 2
                row2_GiaSP.Merge();
                row2_GiaSP.Font.Size = fontSizeTenTruong;
                row2_GiaSP.Font.Name = fontName;
                row2_GiaSP.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row2_GiaSP.ColumnWidth = 20;
                row2_GiaSP.Value2      = "Giá Sản Phẩm";

                //Tạo Ô Số Lượng
                Range row3_GiaNhap = ws.get_Range("E3", "E4");//Ô D3
                row3_GiaNhap.Merge();
                row3_GiaNhap.Font.Size = fontSizeTenTruong;
                row3_GiaNhap.Font.Name = fontName;
                row3_GiaNhap.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row3_GiaNhap.Value2      = "Số Lượng";
                row3_GiaNhap.ColumnWidth = 20;

                //Tạo Ô Số Lượng
                Range row3_ThanhTien = ws.get_Range("F3", "F4");//Ô D3
                row3_ThanhTien.Merge();
                row3_ThanhTien.Font.Size = fontSizeTenTruong;
                row3_ThanhTien.Font.Name = fontName;
                row3_ThanhTien.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                row3_ThanhTien.Value2      = "Thành Tiền";
                row3_ThanhTien.ColumnWidth = 20;


                int stt = 0;
                row = 4;//dữ liệu xuất bắt đầu từ dòng số 4 trong file Excel (khai báo 3 để vào vòng lặp nó ++ thành 4)
                List <DTO_ChiTietPN>  list = new List <DTO_ChiTietPN>();
                System.Data.DataTable data = BUS_ChiTietPN.Intance.getCTPN(maPNChon);
                foreach (DataRow item in data.Rows)
                {
                    stt++;
                    row++;
                    int       thanhTien = int.Parse(item["DonGia"].ToString()) * int.Parse(item["SoLuong"].ToString());
                    dynamic[] arr       = { stt, item["MaHang"].ToString(), item["TenHang"].ToString(), item["DonGia"].ToString(), item["SoLuong"].ToString(), thanhTien.ToString() };
                    Range     rowData   = ws.get_Range("A" + row, "F" + row);//Lấy dòng thứ row ra để đổ dữ liệu
                    rowData.Font.Size = fontSizeNoiDung;
                    rowData.Font.Name = fontName;
                    rowData.Value2    = arr;
                }

                //Tô nền vàng các cột tiêu đề:
                Range row23_CotTieuDe = ws.get_Range("A3", "F4");
                //nền vàng
                row23_CotTieuDe.Interior.Color = ColorTranslator.ToOle(System.Drawing.Color.Yellow);
                //in đậm
                row23_CotTieuDe.Font.Bold = true;
                //chữ đen
                row23_CotTieuDe.Font.Color = ColorTranslator.ToOle(System.Drawing.Color.Black);

                BorderAround(ws.get_Range("A3", "F" + row));
                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);
            }
        }
        private void XuatExcel()
        {
            if (check < 5)
            {
                Microsoft.Office.Interop.Excel._Application _Application = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel._Workbook    workbook     = _Application.Workbooks.Add(Type.Missing);
                Microsoft.Office.Interop.Excel.Worksheet    worksheet    = null;
                worksheet = workbook.Sheets["Sheet1"];
                worksheet = workbook.ActiveSheet;
                string fontName = "Times New Roman";
                Range  row1     = worksheet.get_Range("G3", "H3");
                row1.Merge();
                row1.Font.Size = 12;
                row1.Font.Name = fontName;
                row1.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                row1.Value2 = "Địa Chỉ : 41/58A , Cầu Xây , Quận 9";

                Range row2 = worksheet.get_Range("G4", "H4");
                row2.Merge();
                row2.Font.Size = 12;
                row2.Font.Name = fontName;
                row2.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                row2.Value2    = "Hotline : 0123456789";
                row2.Font.Bold = true;
                int hang           = 6;
                int fontSizeTieuDe = 15;
                //   int fontSizeTenTruong = 14;
                int   fontSizeNoiDung            = 12;
                Range row1_TieuDe_ThongKeSanPham = worksheet.get_Range("G6", "M6");
                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    = " Bảng Thống Kê Từ Ngày  " + t1.ToString("dd / MM / yyyy") + "  Đến Ngày  " + t2.ToString("dd / MM / yyyy");
                row1_TieuDe_ThongKeSanPham.Font.Bold = true;
                hang += 2;
                Range row1_TieuDe1_ThongKeSanPham = worksheet.get_Range("I" + hang, "K" + hang);
                row1_TieuDe1_ThongKeSanPham.Merge();
                row1_TieuDe1_ThongKeSanPham.Font.Size = fontSizeTieuDe - 2;
                row1_TieuDe1_ThongKeSanPham.Font.Name = fontName;
                row1_TieuDe1_ThongKeSanPham.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;


                if (check == 3)
                {
                    row1_TieuDe1_ThongKeSanPham.Value2 = " Bảng Thống Kê Hóa Đơn"; hang += 1;
                }

                else if (check == 1)
                {
                    row1_TieuDe1_ThongKeSanPham.Value2 = " Bảng Thống Kê Hàng Hóa"; hang += 1;
                }
                else if (check == 2)
                {
                    row1_TieuDe1_ThongKeSanPham.Value2 = " Bảng Thống Kê Khách Hàng"; hang += 1;
                }
                else if (check == 4)
                {
                    row1_TieuDe1_ThongKeSanPham.Value2 = " Bảng Thống Kê Phiếu Nhập"; hang += 1;
                }


                hang++;
                row1_TieuDe1_ThongKeSanPham.Font.Bold = true;
                row1.Font.Bold = true;
                Range row23_CotTieuDe = worksheet.get_Range("M" + hang, "G" + hang);
                //nền vàng
                row23_CotTieuDe.Interior.Color = ColorTranslator.ToOle(System.Drawing.Color.Yellow);
                //in đậm
                row23_CotTieuDe.Font.Bold = true;

                worksheet.Cells[hang, 9] = "  STT";
                // int Colum = 10;
                dynamic[] arr = new dynamic[dtThongKe.Columns.Count];
                for (int i = 0; i < dtThongKe.Columns.Count; i++)
                {
                    arr[i] = "" + dtThongKe.Columns[i].Name;
                    // Colum += 1;
                }
                Range rowData1 = worksheet.get_Range("M" + hang, "G" + hang);//Lấy dòng thứ row ra để đổ dữ liệu
                rowData1.Font.Size = fontSizeNoiDung;
                rowData1.Font.Name = fontName;
                rowData1.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                rowData1.Value2             = arr;
                row23_CotTieuDe.ColumnWidth = 20;

                int stt = 1;
                int q   = hang;
                for (int i = 0; i < dtThongKe.Rows.Count - 1; i++)
                {
                    try
                    {
                        stt++;
                        hang++;
                        arr = new dynamic[dtThongKe.Columns.Count];
                        for (int j = 0; j < dtThongKe.Columns.Count; j++)
                        {
                            arr[j] = dtThongKe.Rows[i].Cells[j].Value.ToString();
                        }
                        Range rowData = worksheet.get_Range("M" + hang, "G" + hang);   //Lấy dòng thứ row ra để đổ dữ liệu
                        rowData.Font.Size = fontSizeNoiDung;
                        rowData.Font.Name = fontName;
                        rowData.Value2    = arr;
                    }
                    catch { }
                }
                BorderAround(worksheet.get_Range("M" + (q + 1), "G" + hang));
                //Tô nền vàng các cột tiêu đề:
                //  Range row23_CotTieuDe = worksheet.get_Range("I9", "R"+Colum);
                //nền vàng
                //    row23_CotTieuDe.Interior.Color = ColorTranslator.ToOle(System.Drawing.Color.Yellow);
                //in đậm
                // row23_CotTieuDe.Font.Bold = true;
                //chữ đen
                row23_CotTieuDe.Font.Color = ColorTranslator.ToOle(System.Drawing.Color.Black);
                _Application.Rows.AutoFit();
                _Application.Visible = true;
            }
        }