Enter your keyword

Menu

Recent

[Series .NET MVC hay ho] EPPLUS thư viện EXCEL khủng


Trong thời gian làm đồ án có động đến xuất dữ liệu từ database ra file EXCEL nhằm thực hiện chức năng thống kê của đề tài. Sau khi lướt web chán trường, mình có tìm được một thư viện bá đạo, dễ triển khai(mặc dù ban đầu cũng ngơ ngơ với nó). Cái EPPLUS này có khả năng xứ lí tuốt tuồn tuột những thứ liên quan đến EXCEL. Không lan man nữa, mà cũng chả biết viết gì nữa ta đi thẳng vấn đề chính luôn. Mình sẽ hướng dẫn cách NUTget và import vào project, rồi sử dụng nó ra sao đối với 1 bảng dữ liệu thực tế.

Đầu tiên, khi đã có database trước đó, ta tiến hành tạo 1 project và cài đặt thư viện EPPLUS qua Manage NuGet Packages bằng cách nhấn chuột phải project chọn ...



Tiếp theo, tìm EPPLUS trong Browse



Khi cài đặt xong, nó đã xuất hiện trong references của project




Đã cài xong, bây giờ dùng nó !!!

B1: Giả sử ta đã có 1 EmployeeViewModel
public class EmployeeViewModel
    {
        public int EmployeeId { get; set; }
        public string EmployeeName { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
        public int Experience { get; set; }
    }


B2: Tạo ControllerView cho nó

HomeController ta tạo 1 action Index nhằm hiển thị 1 list Employee qua view.cshtml HomeController.cs
public class HomeController : Controller
    {
        MVCTutorialEntities db = new MVCTutorialEntities();
        public ActionResult Index()
        {
            List emplist = db.EmployeeInfoes.Select(x => new EmployeeViewModel
            {
                EmployeeId = x.EmployeeId,
                EmployeeName = x.EmployeeName,
                Email = x.Email,
                Phone = x.Phone,
                Experience = x.Experience
            }).ToList();

            return View(emplist);
        }
      }

View.cshtml ta thực hiện đọc từng Employee trong List đó và hiển thị chúng.
Dưới cùng, để xuất ra file Excel ta tạo một URL.Action nhằm gọi phương thức ExportToExcel mà ta sẽ tạo ngay sau đây.

View.cshtml


@model IEnumerable

@if (Model != null) { foreach (var item in Model) { if (item.Experience < 5) { } else { } } }
EmployeeId EmployeeName Email Phone Experience
@item.EmployeeId @item.EmployeeName @item.Phone @item.Email @item.Experience
@item.EmployeeId @item.EmployeeName @item.Phone @item.Email @item.Experience
Export Excel

B3: Add phương thức ExportToExcel trong HomeController

Trong phương thức ExportToExcel ta cũng truy vấn ra một List các Employee.

+ Tạo Excel package

+ Add 1 ExcelSheet (ExcelWorksheet)

+Thực hiện định dạng các ô, thêm value cho các ô tương ứng trong Excel "A1,A2,B2,..".


+ Sau đó thực hiện duyệt List và thực hiện đọc ghi các phần tử trong List.

rowStart là định nghĩa vị trí dòng bắt đầu ghi dữ liệu List ra file Excel.

+ Thực hiện xong vòng lặp, thực hiện căn chỉnh tự động các ô trong toàn bảng ghi (A:AZ).

+ Cấu hình tên file và kết thúc xuất ra file Excel.


public void ExportToExcel()
        {
            List emplist = db.EmployeeInfoes.Select(x => new EmployeeViewModel
            {
                EmployeeId = x.EmployeeId,
                EmployeeName = x.EmployeeName,
                Email = x.Email,
                Phone = x.Phone,
                Experience = x.Experience
            }).ToList();

            ExcelPackage pck = new ExcelPackage();
            ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Report");

            ws.Cells["A1"].Value = "Communication";
            ws.Cells["B1"].Value = "Com1";

            ws.Cells["A2"].Value = "Report";
            ws.Cells["B2"].Value = "Report1";

            ws.Cells["A3"].Value = "Date";
            ws.Cells["B3"].Value = string.Format("{0:dd MMMM yyyy} at {0:H: mm tt}",DateTimeOffset.Now);

            ws.Cells["A6"].Value = "EmployeeId";
            ws.Cells["B6"].Value = "EmployeeName";
            ws.Cells["C6"].Value = "Email";
            ws.Cells["D6"].Value = "Phone";
            ws.Cells["E6"].Value = "Experience";
           int rowStart = 7;
            foreach (var item in emplist)
            {
                if (item.Experience < 5)
                {
                    ws.Row(rowStart).Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                    ws.Row(rowStart).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml(string.Format("pink")));

                }

                ws.Cells[string.Format("A{0}", rowStart)].Value = item.EmployeeId;
                ws.Cells[string.Format("B{0}", rowStart)].Value = item.EmployeeName;
                ws.Cells[string.Format("C{0}", rowStart)].Value = item.Email;
                ws.Cells[string.Format("D{0}", rowStart)].Value = item.Phone;
                ws.Cells[string.Format("E{0}", rowStart)].Value = item.Experience;
                rowStart++;
            }

            ws.Cells["A:AZ"].AutoFitColumns();
            Response.Clear();
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("content-disposition", "attachment: filename=" + "ExcelReport.xlsx");
            Response.BinaryWrite(pck.GetAsByteArray());
            Response.End();

        }

Bây giờ chạy thử file cshtml để thử.
Ở bài sau, mình sẽ hướng dẫn cách định dạng ô EXCEL trong EPPLUS.Thân!!!

[Series .NET MVC hay ho] EPPLUS thư viện EXCEL khủng [Series .NET MVC hay ho]  EPPLUS thư viện EXCEL khủng Reviewed by Duy Nguyễn on 3/16/2018 Rating: 5

Không có nhận xét nào: