Cách làm việc lập trình WinForms theo kiểu tách bạch giữa giao diện, bộ quản lý, và file định nghĩa mẫu báo cáo đúng là lúc đầu rất lằng nhằng và dễ rối nếu mình chưa hình dung được bức tranh tổng thể.
Để bạn dễ hiểu và nắm trọn bản chất, hãy tưởng tượng hệ thống báo cáo giống như một nhà hàng:
Khách hàng (Giao diện -
UclReports): Bấm chọn món trên thực đơn.Quản lý nhà hàng (
ReportManager): Nhận order, kiểm tra xem món đó có thật không rồi chuyển xuống bếp.Đầu bếp (
SignatureListReport- file mẫu báo cáo cụ thể): Nhìn công thức, chế biến ra đĩa thức ăn (xuất ra file Excel chuẩn chỉnh).
Bây giờ, nếu bạn muốn làm thêm một báo cáo mới (ví dụ Report1.cs ), bạn sẽ cần làm việc ở 3 nơi chính theo đúng thứ tự sau. Giải thích cụ thể vì sao phải làm từng bước:
Bước 1: Tạo file mẫu báo cáo riêng (Ví dụ: SignatureListReport.cs)
Nằm ở đâu: Thư mục
Reports/Templates/trong dự án của bạn.Cần code gì: Class này phải tuân theo một cái "khuôn chung" (giao diện
IReportTemplate), bên trong nó sẽ viết code dùng thư viện Excel (như EPPlus) để:Mở file Excel mẫu có sẵn (hoặc tự vẽ dòng, cột, ô).
Đổ dữ liệu từ Database vào đúng các ô trong Excel.
Lưu lại thành file mới.
Vì sao phải làm: Để tách riêng biệt logic vẽ Excel của từng mẫu ra một file độc lập. Sau này sếp bắt sửa mẫu A1, bạn chỉ mở đúng file A1 này ra sửa mà không sợ làm ảnh hưởng đến các báo cáo khác.
Bước 2: Đăng ký mẫu đó với ông Quản lý (ReportManager.cs)
Nằm ở đâu: Thư mục
Reports/ReportManager.cs.Cần code gì: Trong hàm khởi tạo của
ReportManager, bạn thêm một dòng "đăng ký" để hệ thống biết là nhà hàng có thêm món mới này:C#Register(new SignatureListReport()); // Đăng ký mẫu báo cáo chữ kýVì sao phải làm: Giống như việc bạn in một món mới lên menu của quán. Nếu không
Registerở đây, hệ thống sẽ ngu ngơ không hiểu mã báo cáoA1hayReport1nằm ở đâu để mà gọi.
Bước 3: Gọi nó ra từ giao diện người dùng (UclReports.cs)
Nằm ở đâu: Thư mục
Controls/UclReports.cs(giao diện trên màn hình).Cần code gì: Khi người dùng bấm vào nút "Xuất Excel" trên màn hình, bạn viết code ra lệnh cho ông quản lý chạy mã báo cáo tương ứng:
C#// Bảo ông quản lý chạy mẫu có mã là "A1" và lưu ra đường dẫn do người dùng chọn _reportManager.ExecuteReport("A1", saveDlg.FileName, dataSource);Vì sao phải làm: Đây là cầu nối cuối cùng từ cái nút bấm màu xanh trên giao diện truyền tín hiệu xuống tầng xử lý code bên dưới để bật cửa sổ lưu file và xuất ra file Excel cho người dùng.
Tóm lại quy trình khi bạn muốn làm thêm 1 Report mới:
Tạo 1 file
.csviết code xuất Excel cho mẫu đó (đặt tên ví dụ:Report02.cs).Vào
ReportManager.csgõ lệnhRegister(...)để khai báo.Gắn sự kiện vào nút bấm trên màn hình (
UclReports.cs) gọi mã của report đó ra là xong.
0 nhận xét Blogger 0 Facebook