– Đầu tiên, bạn tạo một Form, rồi đưa thêm 1 WebBrowser control vào, tôi đặt tên nó là wbReportViewer, thông thường tôi hay để thuộc tính Dock của WebBrowser control này là Full. Nếu muốn bổ sung thêm một số chức năng khác như lưu nội dung báo cáo vào file thì bạn có thể đưa bổ sung thêm thanh công cụ vào Form này. – Bạn có thể xem qua và đặt một số thuộc tính cần thiết cho wbReportViewer, ví dụ tôi đặt các thuộc tính sau: * IsWebBrowserContextMenuEnabled = false: không cho phép hiển thị menu ngữ cảnh khi người dùng nhấn chuột phải vào trình duyệt. * AllowWebBrowserDrop = false: không cho thực hiện thao tác kéo thả và cửa sổ trình duyệt. * WebBrowserShortcutsEnabled = false: không cho dùng các phím tắt đối với trình duyệt. … – Khi người dùng muốn xem báo cáo, bạn sẽ sinh ra nội dung và gán vào thuộc tính DocumentText của wbReportViewer, nội dung sẽ được hiển thị trên cửa sổ giống như khi bạn xem trên Internet Explorer. Đây là ví dụ về một thủ tục mở cửa sổ báo cáo của tôi:
Private Sub cmdOpenReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpenReport.Click Dim frmReport As New ReportForm Dim html As New StringBuilder html.AppendLine("<html>") html.AppendFormat("<body>") html.AppendLine(reportContent) <---- Đưa nội dung báo cáo vào đây html.AppendLine("<br /><hr />") html.Append("</body></html>") frmReport.wbMessage.DocumentText = html.ToString frmReport.ShowDialog() End Sub
Áp dụng định dạng Như bạn thấy, mọi việc rất đơn giản, để áp dụng định dạng cho báo cáo bạn cugnx dùng những cách giống như trong HTML thường dùng, cách ưa thích của tôi là sử dụng CSS, cách này có nhiều điểm lợi: mã HTML đơn giản hơn, file CSS nằm riêng và có thể dùng trình soạn thảo CSS của Visual Studio để chỉnh sửa, ngoài ra mọi thay đổi trong file CSS sẽ được áp dụng cho tất cả những chỗ dùng nó. Để áp dụng CSS thì bạn có thể làm như sau: – Tạo một file mới có tên Report.css, double-click lên file này để chỉnh sửa nội dung, một ví dụ về CSS như sau:
.report_header { font-weight: bold; } .report_item { color: blue; } body { font-size: 10pt; font-family: verdana; background-color: #fafad2; }
– Vào menu Project/<Tên dự án> Properties, mục này thường nằm cuối cùng trong menu Project, trong cửa sổ này, bấm vào nút Resources, bấm tiếp vào hình tam giác bên phải nút Add Resource và chọn Add Existing File…, tìm đến file Report.css đã tạo ở trên và nhấn Open. – Quay trở lại với thủ tục cmdOpenReport_Click ở trên, giờ bạn phải chỉnh sửa lại phần header của dữ liệu HTML để nó dùng CSS trong file Report.css, mấy dòng đầu để tạo HTML giờ sẽ đổi thành:
html.AppendLine("<html><head><style type=""text/css"">") html.AppendLine(My.Resources.Report) html.AppendLine("</style></head>")
– Việc cuối cùng là sử dụng các class CSS: html.AppendFormat(“<body>
“, “REPORT – ” & DateTime.Now.ToString(My.Application.UICulture.DateTimeFormat)) html.AppendFormat(”
Private Sub cmdOpenReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpenReport.Click Dim frmReport As New ReportForm Dim html As New StringBuilder html.AppendLine("<html><head><style type=""text/css"">") html.AppendLine(My.Resources.Report) html.AppendLine("</style></head>") html.AppendFormat("<body><b><div class='report_header'>{0}</div></b><br />", "REPORT - " & DateTime.Now.ToString(My.Application.UICulture.DateTimeFormat)) html.AppendFormat("<div class='report_item'>{0}<div>", reportContent) <---- [COLOR=green]Đưa nội dung báo cáo vào đây[/COLOR] html.Append("</body></html>") frmReport.wbMessage.DocumentText = html.ToString frmReport.ShowDialog() End Sub
OK, vậy là xong, nếu théc méc chỗ nào thì xin mời hỏi 😀
Hihi, anh oi, em cung dnag tim hieu cai nay! Nhung neu trong C# thi co khac nhieu khong a!
Trong C# không có gì khác em ạ
a có thể hướng dẫn cụ thể làm báo cáo bằng webbrowser trong C# cho e với được ko? E đang làm cái này mà ko biết làm sao hết. Cảm ơn a trước nha, giúp e với
Khi in ra giấy khổ A4, có phải fix cái gì không ạ, hoặc in ra khổ bất kỳ, ví dụ khổ 80mm, 76mm như các hóa đơn trong siêu thị có phải fix with, height gì không?
Anh Nam cho em hỏi tạo report trong Siverlight mình làm thế nào vậy anh, em đang tìm hiểu phần này mà không biết sao hết, mong anh giúp đỡ