Series C# Hay Ho: EPPlus – Thư Viện Excel “bá đạo” – Phần 2

Tiếp theo phần 1, thì phần này mình sẽ hướng dẫn các bạn thao tác với các công thức trong Excel, cũng như đọc nội dung từ file Excel. 

Thêm formula vào các ô trong Excel

Tương tự như Excel, chúng ta có thể dễ dàng gọi các formula như sau :

// Thực hiện tính theo formula trong excel // Hàm Sum worksheet.Cells[listItems.Count + 3, 3].Value = "Total is :"; worksheet.Cells[listItems.Count + 3, 4].Formula = "SUM(D2:D" + (listItems.Count + 1) + ")"; // Hàm SumIf worksheet.Cells[listItems.Count + 4, 3].Value = "Greater than 20050 :"; worksheet.Cells[listItems.Count + 4, 4].Formula = "SUMIF(D2:D" + (listItems.Count + 1) + ",\">20050\")"; // Tinh theo % worksheet.Cells[listItems.Count + 5, 3].Value = "Percentatge: "; worksheet.Cells[listItems.Count + 5, 4].Style.Numberformat.Format = "0.00%"; // Dòng này có nghĩa là ở column hiện tại lấy với địa chỉ (Row hiện tại - 1)/ (Row hiện tại - 2) trong cùng một colum worksheet.Cells[listItems.Count + 5, 4].FormulaR1C1 = "(R[-1]C/R[-2]C)";

Khá là dễ dàng phải không nào 😀

Đọc nội dung từ file Excel

Tiếp sau đây mình sẽ hướng dẫn các bạn cách lấy data từ file excel và đưa lên web theo cách đơn giản nhất. Bước 1. Viết hàm ReadFromExcelFile

private DataTable ReadFromExcelfile(string path, string sheetName) { // Khởi tạo data table DataTable dt = new DataTable(); // Load file excel và các setting ban đầu using (ExcelPackage package = new ExcelPackage(new FileInfo(path))) { if (package.Workbook.Worksheets.Count < 1) { // Log - Không có sheet nào tồn tại trong file excel của bạn return null; } // Lấy Sheet đầu tiện trong file Excel để truy vấn // Truyền vào name của Sheet để lấy ra sheet cần, nếu name = null thì lấy sheet đầu tiên ExcelWorksheet workSheet = package.Workbook.Worksheets.FirstOrDefault(x => x.Name == sheetName) ?? package.Workbook.Worksheets.FirstOrDefault(); // Đọc tất cả các header foreach (var firstRowCell in workSheet.Cells[1, 1, 1, workSheet.Dimension.End.Column]) { dt.Columns.Add(firstRowCell.Text); } // Đọc tất cả data bắt đầu từ row thứ 2 for (var rowNumber = 2; rowNumber <= workSheet.Dimension.End.Row; rowNumber++) { // Lấy 1 row trong excel để truy vấn var row = workSheet.Cells[rowNumber, 1, rowNumber, workSheet.Dimension.End.Column]; // tạo 1 row trong data table var newRow = dt.NewRow(); foreach (var cell in row) { newRow[cell.Start.Column - 1] = cell.Text; } dt.Rows.Add(newRow); } } return dt; }

Lưu ý, trong ví dụ trên mình dùng workSheet.Dimension. Nó sẽ đọc tất cả các dòng và các cột đã được bind trong excel nên nếu bạn có dư nhưng dòng trắng không cần thiêt nó cũng sẽ đọc luôn. Nó sẽ lấy tới vị trí từ A1:D20 luôn nhé :D. Nếu các bạn không thích dùng cách này thì có thể pass 1 param vào hàm ReadFromExcelFile như numberOfColumn , chỉ lấy một số cột chứ không lấy toàn bộ nhé.

Bước 2. Thêm hàm ReadFromExcel trong HomeController

[HttpGet] public ActionResult ReadFromExcel() { var data = ReadFromExcelfile(@"D:\ExcelDemo.xlsx", "First Sheet"); return View(data); } @{ Layout = null; } <html> <head> <meta name="viewport" content="width=device-width" /> <title>ReadFromExcel</title> </head> <body> <div> <table border="1" cellpadding="5"> <thead> <tr> @foreach (System.Data.DataColumn col in Model.Columns) { <th>@col.Caption</th> } </tr> </thead> <tbody> @foreach(System.Data.DataRow row in Model.Rows) { <tr> @foreach (var cell in row.ItemArray) { <td>@cell.ToString()</td> } </tr> } </tbody> </table> </div> </body> </html>

Để xem kết quả, các bạn vào đường dẫn /Home/ReadFromExcel/ nhé.

demo3

Qua 2 phần của bài viết, bạn đã có cái nhìn tổng quát về EPPlus và một số cách sử dụng cơ bản của thư viện này. Nếu có thắc mắc gì, các bạn cứ post vào mục comment nhé.

Discover more from Từ coder đến developer - Tôi đi code dạo

Subscribe to get the latest posts sent to your email.

Type your email…

Subscribe

Rate this:

Like Loading...

Related

Từ khóa » Thư Viện Epplus