Hôm nay: Năm Tháng 5 02, 2024 9:43 am
Xem bài chưa có ai trả lời

Tên truy cập:     Mật khẩu:

StructDesignPro
Gửi bài mới   Trả lời chủ đề này
 
 Tác giả   Thông điệp 

structdesignpro


Site Admin


Ngày tham gia: 28 2 2009
Số bài: 668
Đến từ: Việt Nam

     
Bài gửi Gửi: CN 4 12, 2009 9:53 pm    Tiêu đề: Báo cáo bằng RTF
 Trả lời với trích dẫn nội dung bài viết này  

Trong quá trình làm đồ án, một chức năng không thể thiếu được là kết xuất kết quả dưới dạng báo cáo hoặc thuyết minh tính toán.
Nhiều người sử dụng thuyết minh dạng file text, tuy nhiên định dạng này còn nhiều hạn chế về mặt biểu diễn dữ liệu cũng như về hình thức
Để kết xuất được file văn bản Word, một số bạn sử dụng phương pháp OLE với Word. Giải pháp này có nhiều nhược điểm như: Chậm, yêu cầu người dùng phải cài đặt Word trên máy tính của mình, chưa kể đến việc không tương thích giữa các phiên bản Word. Xét về mặt hình thức, phương pháp này cũng không đáp ứng được vì không đưa vào được các hình ảnh và công thức toán học
Trong bài viết này tôi trình bày một phương pháp đơn giản để tạo các file báo cáo RTF (Rich text format), là định dạng mà hầu hết các chương trình soạn thảo văn bản đều hiểu. Phương pháp này không sử dụng bất cứ một ActiveX nào cũng như không bắt buộc máy tính của người dùng phải cài đặt Word
Sở dĩ định dạng RTF được sử dụng vì các file RTF được lưu trữ dưới dạng text, do đó chúng ta hoàn toàn có thể mở file bằng các trình soạn thảo text thông dụng như NotePad để quan sát nội dung. Ngoài ra, đặc điểm này còn giúp cho VB có thể đọc nội dung của file RTF, thực hiện các phép thay thế các đoạn văn bản sẵn có trong file RTF bởi các đoạn văn bản khác. Đây chính là cơ cấu hoạt động chính của quá trình tạo báo cáo RTF.
Báo cáo được xây dựng gồm các bước sau
Tạo mẫu báo cáo: Mẫu (template) báo cáo được tạo bằng Word, lưu dưới định dạng RTF (chức năng Save As của Word). Trong mẫu báo cáo, các bạn có thể bố trí tùy thích định dạng văn bản, các hình ảnh minh họa, công thức toán học....
Sử dụng chương trình VB đọc file template, thay thế các nội dung trong template bởi các thông số trong chương trình. Để tiện thay thế (không bị thay nhầm), các nội dung cần thay nên bố trí 1 cách thật đặc biệt (tôi hay sử dụng cú pháp %%Nội dung cần thay thế%%)
Hệ thống template được thiết kế dưới dạng một lớp (clsRTFReport), gồm các chức năng sau
GetTemplate(fileName As String): lấy nội dung từ file RTF được soạn thảo trong Word
SetValue(strValueName As String, Value As Variant): Thay thế chuỗi ký tự strValueName trong file template bằng giá trị Value
GetBookMark(strBookMarkName As String): Lấy nội dung giữa 2 cặp bookmark, nội dung này được lưu trong 1 đối tượng clsRTFReport khác để có thể sử dụng và chèn lại nhiều lần vào template (xem phần ví dụ minh họa)
InsertBookmark(strBookMarkName As String, InsertText As String): Chèn nội dung InsertText vào vị trí cũ của BookMark đã được lấy bằng hàm GetBookMark. Hàm InsertBookMark có thể được gọi nhiều lần để đưa liên tiếp nhiều nội dung kế tiếp nhau ra file RTF
WriteToRTF(fileName As String): Ghi toàn bộ nội dung của Report ra file RTF

Download mã nguồn và ví dụ sử dụng tại đây

_________________
Mời bạn đến với bách khoa toàn thư về kết cấu:.
http://vi.ketcau.wikia.com
Về Đầu Trang
Xem lý lịch thành viên Gửi tin nhắn Gửi email Website của thành viên này


Trình bày bài viết theo thời gian:   

   StructDesignPro -> VBA cho AutoCAD

Gửi bài mới   Trả lời chủ đề này
 


 
Bạn không có quyền gửi bài viết
Bạn không có quyền trả lời bài viết
Bạn không có quyền sửa chữa bài viết của bạn
Bạn không có quyền xóa bài viết của bạn
Bạn không có quyền tham gia bầu chọn


Trang 1 trong tổng số 1 trang
Thời gian được tính theo giờ [GMT+ 7 giờ]

Chuyển đến 


Powered by phpBB © 2001, 2002 phpBB Group
Web Hosting Directory
This contents of this page are in no way endorsed by the Mozilla Foundation
Mozilla_Firefox theme created by Plastikaa © 2005


Free Web Hosting | File Hosting | Photo Gallery | Matrimonial


Powered by PhpBB.BizHat.com, setup your forum now!
For Support, visit Forums.BizHat.com