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; } }