Phát triển add-in cho Excel trong môi trường C/C++ (áp dụng cho lĩnh vực tài chính)

nguyentheanh

Tác giả Dự toán GXD
Thành viên BQT
Tham gia
6/7/07
Bài viết
4.561
Điểm thành tích
113
Website
giaxaydung.vn
Trong quá trình nghiên cứu lập trình phần mềm Dự toán GXD và các phần mềm Kinh tế xây dựng, Định giá xây dựng, TA tìm ra được 2 tài liệu (tiếng Anh) trên 4shared xin giới thiệu cùng các bạn quan tâm:

1. Excel add-in development in C/C++ Applications in Finance, tác giả Steve Dalton. Kích để tải file.
2. Financial applications using Excel add-in development in C/C++, tác giả Steve Dalton, Second Edition (xuất bản lần thứ 2). Tải file ở đây.

Theo TA, 2 quyển về cơ bản cùng nội dung (TA chưa đọc hết), nhưng quyển 2 được ghi là Now covers Excel 2007 tức là đã cập nhật cho phiên bản Excel 2007.

Mặc dù là dùng cho lĩnh vực tài chính, nhưng TA cho rằng chúng ta có thể tham khảo để xây dựng các phần mềm ứng dụng phục vụ lĩnh vực Kinh tế xây dựng, Định giá xây dựng và lĩnh vực đầu tư xây dựng công trình. Bởi chúng ta cũng rất cần tính toán, xử lý số liệu trên Excel.

Với suy nghĩ là đọc, dịch và hiểu một mình thì rất phí và ích kỷ, TA sẽ đọc và dịch dần dần ở đây để các bạn quan tâm tham khảo đặc biệt là cho các bạn sinh viên ngành tin học trường ĐH Xây dựng, Giao thông vận tải, Thủy lợi, Mỏ địa chất, Tài chính, Kinh tế.... Chỉ với một mong ước duy nhất: đóng góp cho sự phát triển của TIN HỌC XÂY DỰNG VIỆT NAM. Các bạn tham khảo và góp ý nhé.
 

nguyentheanh

Tác giả Dự toán GXD
Thành viên BQT
Tham gia
6/7/07
Bài viết
4.561
Điểm thành tích
113
Website
giaxaydung.vn
1.5 About add-ins - về các add-in

TA có thể dịch không theo trình tự, mà dịch từ vấn đề nào quan tâm trước. Bài này TA dịch từ trang 7 (trang 34 của file pdf) của bản Secon Edition. Bản dịch có thể chưa chuẩn, các bạn mở bản tiếng Anh để đối chiếu và chỉnh lại (nếu thấy TA sai nhé), cũng mong nhận được góp ý của các bạn.

Add-in đơn giản là các đoạn mã có thể gắn vào phiên bản phần mềm chuẩn để mở rộng các chức năng của phần mềm đó. Excel cung cấp một lượng lớn các add-in có thể cài vào theo nhu cầu và mong muốn của người sử dụng. Có những tính năng đặc biệt không cần thiết cho hầu hết người sử dụng, ví dụ như Analysis ToolPak (sic) (các chức năng này đã được tích hợp vào bản Excel 2007), và một vài add-in cung cấp các chức năng phức tạp như Solver add-in.
Các Add-in bao gồm 2 loại chính: các macro được dịch hoặc các mã nguồn được dịch. Phiên bản 4 của Excel giới thiệu các macro được viết trong các sheet của bảng tính (một phần của Dự toán GXD được viết bằng Macro 4) các mã lệnh macro được viết bằng ngôn ngữ macro của Excel (viết tắt là XLM). Các sheet chứa macro bao gồm các cột tập hợp các chỉ thị hoặc tính toán từ đó dẫn đến một kết quả được trả về nếu là hàm hoặc thực hiện các hoạt động như là định dạng một ô nếu là lệnh (chức năng). Các sheet chứa Macro có thể là một phần của Workbook hoặc được lưu trữ và tải vào riêng biệt để có thể truy xuất từ bất kỳ Workbook nào (đây cũng là cơ chế hoạt động của Dự toán GXD hiện nay). Mặc dù mềm dẻo nhưng chúng khá chậm và không thúc đẩy nhận biết cấu trúc coding. Trên thực tế chúng hỗ trợ chính xác những gì đối lập nhau, Ví dụ: chúng có thể điều chỉnh (sửa) chính chúng trong khi hoạt động.
Phiên bản 5 Excel đưa ra Visual Basic worksheets. Điều này cho khả năng coding các hàm và lệnh như trước kia nhưng xoay chuyển cách coding tốt hơn và thi hành thuật toán từ các ngôn ngữ khác trước đó.
Đến bản Excel 97 thì các VB sheet đó được thay thế bằng trình ứng dụng VBA (Visual Basic for Applications - ngôn ngữ lập trình Visual Basic được tích hợp vào Excel cũng như các ứng dụng Office khác và cả AutoCad) và trình soạn thảo VBE (Visual Basic Editor) - một bao hàm toàn bộ IDE với bộ nhạy ngữ cảnh hỗ trợ có định hướng, trình biên dịch trước, gỡ lỗi và nhiều vấn đề khác.
Các macro dù là XLM hoặc VB đều được dịch. Khi chạy, trình biên dịch đọc từng dòng từng dòng một, tạo ra định hướng trong khi kiểm tra các lỗi trong cú pháp, biên dịch mã và chỉ khi sau đó chạy các chỉ lệnh (???).
Mặc dù VBA đã thực hiện được nhiều công việc nâng cao, nhưng đây vẫn là một tiến trình chậm. Phương pháp sử dụng VBA tránh những công cụ cần thiết để tạo đầy đủ một trình biên dịch mã để tạo ra các add-in có thể cho những người lập trình không chuyên. VBA tạo các tiện ích đối tượng ứng dụng Excel và do đó lựa chọn trước đó cho các lệnh và chức năng người dùng định nghĩa mà cần tốc độ phát triển hơn là tốc độ khởi tạo. Cho đến phiên bản Excel 2007, Microsoft đã không cập nhật các C API được phát hành từ Excel 97 và chỉ hỗ trợ XLM cho tương thích ở phía sau. Thậm chí trong Excel 2007 hầu hết các chức năng và đối tượng được đưa vào từ Excel 97 chỉ có khả năng ứng dụng truy xuất các đối tượng COM được trình ra của Excel. Điều này cũng không quá nghiêm trọng như chức năng thêm vào mà từ đó hầu như tương thích để truy xuất từ VBA (hoặc VB), hơn là thông qua API.
 

nguyentheanh

Tác giả Dự toán GXD
Thành viên BQT
Tham gia
6/7/07
Bài viết
4.561
Điểm thành tích
113
Website
giaxaydung.vn
1.5 About add-ins - về các add-in (tiếp)

Cái điểm hay chính của add-in chính là sự biên dịch mã nguồn trước để từ đó không bị quá tải khi chạy của ngôn ngữ dịch và do đó đặc biệt nhanh trong sự đối chiếu. The cost is the need to use, and so understand, another development language and another compiler or IDE. Về bản chất, không có sự khó khăn hơn trong việc sử dụng VBA và chương trình soạn thảo VB. Một yêu cầu cần bổ sung là phải biết Excel chờ đợi và cung cấp những gì để gọi chính nó một Excel add-in. Mặt khác, bạn cần biết giao tiếp Excel. Có hai giao tiếp đã có sẵn trong các năm gần đây là C API và COM (viết tắt của Common Object Model cũng được gọi là Automation - kỹ thuật tự động hóa). COM cung cấp truy xuất tới các đối tượng exposed của Excel, các phương pháp và đặc tính. VBA tự nó là một ứng dụng kỹ thuật tự động hóa (COM Automation application). Ở phần 9.5 Truy xuất hàm Excel sử dụng COM/OLE automation bằng ngôn ngữ C++, trang 376 sẽ thảo luận về một vài khái niệm COM cơ bản. (Dự toán GXD cũng như các phần mềm tính toán kinh tế xây dựng được TA nghiên cứu theo hướng này - tạo các COM để tích hợp vào Excel).

Các VBA macro có thể ghi lại như một Excel add-in với rất ít công sức nhưng code có thể chạy chậm hơn với add-in viết bằng C được biên dịch. (Một vài so sánh về hiệu suất được trình bày ở phần 9.2 Relative performance of VB, C/C++: Kiểm tra và kết quả (tests and results) trang 369). Mặc dù VBA phát triển không ngừng và linh hoạt, nhưng có một số sự thiếu khuyết của khái niệm khóa ngôn ngữ (lập trình) hiện diện trong C và C++, đặc thù, con trỏ. Thỉnh thoảng có giới hạn với hiệu suất thực thi của những thuật toán cụ thể. Một ví dụ đặc biệt đúng với trường hợp sự sử dụng các chuỗi.
Sự thông dụng của .NET làm thay đổi mọi thứ. Ví dụ mã nguồn VB có thể biên dịch và các hàm được bao hàm truy xuất trực tiếp từ worksheet (tối thiểu từ Excel 2002 và các phiên bản sau). Tài nguyên C, C++ và C# có thể truy xuất trực tiếp từ một worksheet không cần sử dụng C API.
 

nguyentheanh

Tác giả Dự toán GXD
Thành viên BQT
Tham gia
6/7/07
Bài viết
4.561
Điểm thành tích
113
Website
giaxaydung.vn
8.1 The Excel 4 Macro Language (XLM)

Phiên bản Excel 4 trình làng ngôn ngữ macro, XLM. Hỗ trợ cho XLM và các chức năng của C API vẫn không thay đổi cho tới phiên bản Excel 2003, mặc dù Excel2007 đã update một vài vấn đề của C API. Thực tế là xóa bỏ các điểm yếu của C API liên quan tới VBA: VBA truy xuất tới các đối tượng của Excel tốt hơn C API. Việc viết các dòng lệnh với VBA dễ dàng hơn.
Lợi ích thực sự khi sử dụng C/C++ DLL và C API là các hàm sử dụng cho bảng tính do người dùng định nghĩa. Các lệnh VBA và các hàm DLL sử dụng C API dễ dàng để ghép nối như mô tả ở phần 3.6 Sử dụng VBA và kết nối với add-in DLL ở bên ngoài (trang 62).
Tài liệu này không nói về các worksheet hoặc Excel macro 4 sheets, nhưng biết cú pháp của worksheet và các lệnh và chức năng XLM là rất quan trọng khi sử dụng C API: C API nghịch đảo. Tối thiểu để đăng ký các hàm DLL cần phải có hiểu biết về hàm của XLM đó là REGISTER().
 

Tải bộ cài phần mềm Dự toán GXD, Đấu thầu GXD, Thanh Quyết toán GXD, Quản lý chất lượng GXD. Dành cho người mua bản quyền
Kích để xem khóa học Dự toán công trình
Kích để xem khóa học Dự toán công trình
Phần mềm quản lý chất lượng công trình QLCL GXD
Tìm hiểu khóa học Thanh Quyết toán GXD

Các bài viết mới

Top