Thao tác với Excel trong C# | How Kteam
Dẫn nhập
Trong lập trình ứng dụng, tool hay cả website. Việc thao tác với file dữ liệu rất thiết yếu. Và thao tác với file Excel cũng chiếm tần suất không nhỏ .
Ở bài này, Kteam sẽ hướng dẫn tới bạn Thao tác với file Excel trong C# dùng thư viện EPPlus. EPPlus có một lợi thế là có thể chạy luôn cả ở phía Server.
Nội dung
Để đọc hiểu bài này tốt nhất bạn cần:
Bạn đang đọc: Thao tác với Excel trong C# | How Kteam
Bạn và Kteam sẽ cùng khám phá những nội dung sau đây
- Đọc file Excel trong C #
- Ghi dữ liệu ra file Excel và định dạng Cell .
Đọc Excel trong C#
Đầu tiên, tất cả chúng ta mở Visual Studio và tạo một project mới
Chọn WPF APP(.NET Framework) hoặc Windows Forms App nếu bạn không rành WPF. Đặt tên project và chọn đường dẫn lưu solution của bạn.
Tại màn hình hiển thị khởi đầu của project .
Bạn thay cặp thẻ
Bằng
Chúng ta tạo giao diện có một DataGrid để hiển thị dữ liệu từ Excel và hai Button Import & Export.
Code hoàn hảo của MainWindow. xaml
Một quan tâm nhỏ, trong sự kiện Click mình đã tạo sẵn một Event Click theo cách nhắc lệnh mà Visual Studio tương hỗ đó là :
Gõ Click =
Một New Event Handler sẽ hiện lên > bạn chỉ cần nhấn Enter
Sẽ tự tạo một sự kiện ở code behind
Bạn nào đã có kỹ năng và kiến thức WPF thì hoàn toàn có thể bỏ lỡ. Bạn nào chưa biết hoàn toàn có thể xem qua Serial LẬP TRÌNH WPF CƠ BẢN .
Đầu tiên, tất cả chúng ta sẽ thực thi công dụng Import Excel. Code Behind như sau :public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void btnImport_Click(object sender, RoutedEventArgs e) { } private void btnExport_Click(object sender, RoutedEventArgs e) { } }
Chúng ta sẽ bắt đầu Import thư viện EPPlus vào để dùng.
Cần 1 thư viện chính đó là EPPLus để thao tác với file Excel.
Mở tab Solution Explore > Nhấp chuột phải vào References > chọn Manage Nuget Packages
r
Trong tab Nuget mở ra. Chọn Browse và gõ từ khóa Selenium vào thanh Search. Install Selenium.WebDriver và Selenium.Chrome.WebDriver hoặc Selenium.Firefox.WebDriver tùy theo trình duyệt bạn dùng.
Chúng ta cần một file excel mẫu để thử Import. Mình tạo sẵn 1 file excel có cấu trúc như sau trong folder Debug. Có tên là:
Và mình cũng tạo một class gọi là UserInfo để lưu dữ liệu chúng ta đọc được và để đổ dữ liệu lên DataGrid cho thuận tiện.
public class UserInfo { public string Name { get; set; } public DateTime Birthday { get; set; } }
Và trong Event btnImport_Click mình sẽ dán đoạn code có comment cụ thể sau và chạy tác dụng. Giải thích chi tiết cụ thể sẽ nói tới trong video hướng dẫn .
Khuyến cáo: dùng tài liệu trên website và video cùng lúc để đạt hiệu quả cao.
private void btnImport_Click(object sender, RoutedEventArgs e) { // tạo ra danh sách UserInfo rỗng để hứng dữ liệu. List
userList = new List (); try { // mở file excel var package = new ExcelPackage(new FileInfo("ImportData.xlsx")); // lấy ra sheet đầu tiên để thao tác ExcelWorksheet workSheet = package.Workbook.Worksheets[1]; // duyệt tuần tự từ dòng thứ 2 đến dòng cuối cùng của file. lưu ý file excel bắt đầu từ số 1 không phải số 0 for (int i = workSheet.Dimension.Start.Row + 1; i <= workSheet.Dimension.End.Row; i++) { try { // biến j biểu thị cho một column trong file int j = 1; // lấy ra cột họ tên tương ứng giá trị tại vị trí [i, 1]. i lần đầu là 2 // tăng j lên 1 đơn vị sau khi thực hiện xong câu lệnh string name = workSheet.Cells[i, j++].Value.ToString(); // lấy ra cột ngày sinh tương ứng giá trị tại vị trí [i, 2]. i lần đầu là 2 // tăng j lên 1 đơn vị sau khi thực hiện xong câu lệnh // lấy ra giá trị ngày tháng và ép kiểu thành DateTime var birthdayTemp = workSheet.Cells[i, j++].Value; DateTime birthday = new DateTime(); if (birthdayTemp != null) { birthday = (DateTime)birthdayTemp; } /* Đừng lười biến mà dùng đoạn code này sẽ gây ra lỗi nếu giá trị value không thỏa kiểu DateTime DateTime birthday = (DateTime)workSheet.Cells[i, j++].Value; */ // tạo UserInfo từ dữ liệu đã lấy được UserInfo user = new UserInfo() { Name = name, Birthday = birthday }; // add UserInfo vào danh sách userList userList.Add(user); } catch (Exception exe) { } } } catch (Exception ee) { MessageBox.Show("Error!"); } dtgExcel.ItemsSource = userList; } Chạy thử nhấn button Import và xem kết quả
Chúng ta thấy dữ liệu từ file excel đã được đọc lên và đổ vào DataGrid một cách thuận tiện .
Export data ra Excel
Để xuất dữ liệu ra file excel tất cả chúng ta dùng đoạn code mẫu sau đã comment rõ ràng và hướng dẫn cụ thể trong video hướng dẫn nhé !
private void btnExport_Click(object sender, RoutedEventArgs e) { string filePath = ""; // tạo SaveFileDialog để lưu file excel SaveFileDialog dialog = new SaveFileDialog(); // chỉ lọc ra các file có định dạng Excel dialog.Filter = "Excel | *.xlsx | Excel 2003 | *.xls"; // Nếu mở file và chọn nơi lưu file thành công sẽ lưu đường dẫn lại dùng if (dialog.ShowDialog() == true) { filePath = dialog.FileName; } // nếu đường dẫn null hoặc rỗng thì báo không hợp lệ và return hàm if (string.IsNullOrEmpty(filePath)) { MessageBox.Show("Đường dẫn báo cáo không hợp lệ"); return; } try { using (ExcelPackage p = new ExcelPackage()) { // đặt tên người tạo file p.Workbook.Properties.Author = "Kteam by K9"; // đặt tiêu đề cho file p.Workbook.Properties.Title = "Báo cáo thống kê"; //Tạo một sheet để làm việc trên đó p.Workbook.Worksheets.Add("Kteam sheet"); // lấy sheet vừa add ra để thao tác ExcelWorksheet ws = p.Workbook.Worksheets[1]; // đặt tên cho sheet ws.Name = "Kteam sheet"; // fontsize mặc định cho cả sheet ws.Cells.Style.Font.Size = 11; // font family mặc định cho cả sheet ws.Cells.Style.Font.Name = "Calibri"; // Tạo danh sách các column header string[] arrColumnHeader = { "Họ tên", "Năm sinh" }; // lấy ra số lượng cột cần dùng dựa vào số lượng header var countColHeader = arrColumnHeader.Count(); // merge các column lại từ column 1 đến số column header // gán giá trị cho cell vừa merge là Thống kê thông tni User Kteam ws.Cells[1, 1].Value = "Thống kê thông tin User Kteam"; ws.Cells[1, 1, 1, countColHeader].Merge = true; // in đậm ws.Cells[1, 1, 1, countColHeader].Style.Font.Bold = true; // căn giữa ws.Cells[1, 1, 1, countColHeader].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; int colIndex = 1; int rowIndex = 2; //tạo các header từ column header đã tạo từ bên trên foreach (var item in arrColumnHeader) { var cell = ws.Cells[rowIndex, colIndex]; //set màu thành gray var fill = cell.Style.Fill; fill.PatternType = ExcelFillStyle.Solid; fill.BackgroundColor.SetColor(System.Drawing.Color.LightBlue); //căn chỉnh các border var border = cell.Style.Border; border.Bottom.Style = border.Top.Style = border.Left.Style = border.Right.Style = ExcelBorderStyle.Thin; //gán giá trị cell.Value = item; colIndex++; } // lấy ra danh sách UserInfo từ ItemSource của DataGrid List
userList = dtgExcel.ItemsSource.Cast ().ToList(); // với mỗi item trong danh sách sẽ ghi trên 1 dòng foreach (var item in userList) { // bắt đầu ghi từ cột 1. Excel bắt đầu từ 1 không phải từ 0 colIndex = 1; // rowIndex tương ứng từng dòng dữ liệu rowIndex++; //gán giá trị cho từng cell ws.Cells[rowIndex, colIndex++].Value = item.Name; // lưu ý phải .ToShortDateString để dữ liệu khi in ra Excel là ngày như ta vẫn thấy.Nếu không sẽ ra tổng số :v ws.Cells[rowIndex, colIndex++].Value = item.Birthday.ToShortDateString(); } //Lưu file lại Byte[] bin = p.GetAsByteArray(); File.WriteAllBytes(filePath, bin); } MessageBox.Show("Xuất excel thành công!"); } catch (Exception EE) { MessageBox.Show("Có lỗi khi lưu file!"); } } Chúng ta thêm 1 giá trị trong DataGrid và nhấn Export.
Chọn nơi cần lưu file
Cùng xem hiệu quả nào !
Vậy là bạn đã nắm được cách thao tác với file Excel một cách thuận tiện. Thật đơn thuần đúng không nào .
Source code tham khảo
Source code mẫu đi kèm bài viết, giúp bạn thuận tiện thao tác theo hướng dẫn và tìm hiểu thêm tốt hơn .
Kết luận
Bài viết này đã sơ lược cho những bạn Cách thao tác với Excel trong C # .
Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quyên “Luyện tập – Thử thách – Không ngại khó”.
Tài liệu
Bài hướng dẫn này là một trong những CHIẾN DỊCH được phổ cập bởi Howkteam. com và sự góp phần từ hội đồng. Bạn hoàn toàn có thể cùng mọi người nhu yếu và hỗ trợ vốn để Kteam tạo ra nhiều khóa học có ích hơn nữa .
Truy cập và khám phá chi tiết cụ thể tại :Ngoài ra, Kteam hỗ trợ tính năng lưu trữ nội dung bài THAO TÁC VỚI EXCEL TRONG C# dưới dạng file PDF trong link bên dưới.
Đừng quên like hoặc +1 Google để ủng hộ Kteam và tác giả nhé!
Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Thảo luận
Nếu bạn có bất kể khó khăn vất vả hay vướng mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI và ĐÁP trên thư viện Howkteam. com để nhận được sự tương hỗ từ hội đồng .
Source: https://thomaygiat.com
Category : Kỹ Thuật Số
Chuyển vùng quốc tế MobiFone và 4 điều cần biết – MobifoneGo
Muốn chuyển vùng quốc tế đối với thuê bao MobiFone thì có những cách nào? Đừng lo lắng, bài viết này của MobiFoneGo sẽ giúp…
Cách copy dữ liệu từ ổ cứng này sang ổ cứng khác
Bạn đang vướng mắc không biết làm thế nào để hoàn toàn có thể copy dữ liệu từ ổ cứng này sang ổ cứng khác…
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel Xử lý dữ liệu từ máy chấm công là việc làm vô cùng…
Cách nhanh nhất để chuyển đổi từ Android sang iPhone 11 | https://thomaygiat.com
Bạn đã mua cho mình một chiếc iPhone 11 mới lạ vừa ra mắt, hoặc có thể bạn đã vung tiền và có một chiếc…
Giải pháp bảo mật thông tin trong các hệ cơ sở dữ liệu phổ biến hiện nay
Hiện nay, với sự phát triển mạnh mẽ của công nghệ 4.0 trong đó có internet và các thiết bị công nghệ số. Với các…
4 điều bạn cần lưu ý khi sao lưu dữ liệu trên máy tính
08/10/2020những chú ý khi tiến hành sao lưu dữ liệu trên máy tính trong bài viết dưới đây của máy tính An Phát để bạn…