Đối tượng OLE và Điều khiển ActiveX

Đối tượng OLE và Điều khiển ActiveX

Đối tượng OLE và Điều khiển ActiveX

Aspose.Words FOSS cho .NET cung cấp quyền truy cập đọc vào các đối tượng OLE được nhúng và các điều khiển Forms 2.0 ActiveX thông qua điểm vào OleFormat và các lớp liên quan trong Aspose.Words.Drawing và Aspose.Words.Drawing.Ole.


Truy cập dữ liệu đối tượng OLE được nhúng

OleFormat được cung cấp bởi một Shape được nhúng và cho phép truy cập vào dữ liệu thô và siêu dữ liệu của đối tượng được nhúng. SuggestedFileName và SuggestedExtension mô tả cách mà đối tượng được nhúng sẽ được lưu, ProgId xác định ứng dụng máy chủ OLE đã tạo ra nó, và IsLink phân biệt đối tượng liên kết (SourceFullName/SourceItem chỉ tới nguồn bên ngoài) với một đối tượng được nhúng hoàn toàn. GetOleEntry(oleEntryName) đọc một luồng có tên cụ thể từ cấu trúc tệp hợp OLE, GetRawData() trả về dữ liệu thô đầy đủ của đối tượng, và Save(fileName) / Save(stream) ghi dữ liệu gốc của đối tượng nhúng ra đĩa hoặc luồng — hữu ích để trích xuất tệp gốc được nhúng (ví dụ như một bảng tính hoặc bản trình bày được nhúng) mà không cần mở nó trong ứng dụng gốc. OlePackage, được truy cập qua OleFormat.OlePackage, hiển thị FileName và DisplayName cho các đối tượng được nhúng dưới dạng OLE Package.


Làm việc với các Điều khiển ActiveX của Forms 2.0

Khi đối tượng được nhúng là một điều khiển ActiveX của Microsoft Forms 2.0 (ô chọn, ô văn bản, hộp combo và các điều khiển tương tác tương tự thay vì tài liệu được nhúng), OleFormat.OleControl trả về một OleControl. Kiểm tra thuộc tính IsForms2OleControl của nó, và nếu true, ép kiểu nó sang Forms2OleControl (lớp cơ sở trừu tượng cho tất cả các điều khiển Forms 2.0) để truy cập các thuộc tính riêng biệt của điều khiển: Caption, Value, Enabled, Type (một giá trị Forms2OleControlType — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton, và các giá trị khác), cùng với các thuộc tính hiển thị ForeColor, BackColor, Width, và Height. Các điều khiển chứa như khung (frame) hiển thị các điều khiển lồng nhau của chúng thông qua ChildNodes, một Forms2OleControlCollection.


Mẹo và Thực hành tốt nhất

  • Kiểm tra OleFormat.IsLink trước khi cho rằng dữ liệu đối tượng nhúng có sẵn cục bộ — các đối tượng liên kết tham chiếu tới tệp bên ngoài qua SourceFullName thay vì nhúng nội dung của chúng.
  • Sử dụng SuggestedExtension kết hợp với Save() để tái tạo tên tệp đầu ra hợp lý khi trích xuất hàng loạt các đối tượng nhúng.
  • Luôn kiểm tra OleControl.IsForms2OleControl trước khi ép kiểu sang Forms2OleControl — không phải mọi OleControl đều là điều khiển Forms 2.0.
  • Forms2OleControlCollection.Count và việc liệt kê qua GetEnumerator() cho phép bạn duyệt các điều khiển lồng nhau bên trong một khung hoặc điều khiển container đa trang.

Các vấn đề thường gặp

Vấn đềNguyên nhânCách khắc phục
GetRawData() trả về dữ liệu không mong đợi/trốngĐối tượng là một liên kết (IsLink == true), không được nhúngKiểm tra IsLink trước; giải quyết SourceFullName cho các đối tượng được liên kết
InvalidCastException ép kiểu OleControl sang Forms2OleControlControl không phải là một điều khiển Forms 2.0Kiểm tra IsForms2OleControl trước khi ép kiểu
GetOleEntry() trả về null cho một luồng có tênTên luồng không tồn tại trong cấu trúc tệp hợp chất của đối tượng nàyLiệt kê các tên mục thực tế thay vì giả định một tên cố định
Không tìm thấy các điều khiển lồng nhau bên trong khungChỉ kiểm tra OleControl mức trên cùng, không phải ChildNodesĐệ quy vào Forms2OleControl.ChildNodes để xử lý các điều khiển container

FAQ

Làm thế nào để tôi trích xuất một đối tượng Excel hoặc PowerPoint đã được nhúng từ tài liệu Word?

Truy cập OleFormat của hình dạng, sau đó gọi Save(fileName) hoặc GetRawData() để lấy các byte gốc của đối tượng nhúng; sử dụng SuggestedExtension để đặt tên tệp đầu ra một cách phù hợp.

Sự khác biệt giữa đối tượng OLE được nhúng và điều khiển Forms 2.0 là gì?

Một đối tượng OLE được nhúng (truy cập qua OleFormat trực tiếp) thường là một tài liệu khác (bảng tính, bản trình bày); một điều khiển Forms 2.0 (OleFormat.OleControl → Forms2OleControl) là một phần tử giao diện người dùng tương tác như hộp kiểm hoặc ô văn bản.

Làm sao tôi biết một đối tượng OLE được liên kết thay vì được nhúng?

Kiểm tra OleFormat.IsLink — khi true, SourceFullName và SourceItem mô tả nguồn bên ngoài thay vì đối tượng chứa dữ liệu của riêng nó.

Tôi có thể đọc chú thích hoặc giá trị của điều khiển hộp kiểm không?

Có — chuyển OleControl sang Forms2OleControl (sau khi xác nhận IsForms2OleControl) và đọc Caption và Value.


API Reference Tóm tắt

Lớp / Phương thứcMô tả
OleFormatĐiểm vào cho dữ liệu và siêu dữ liệu của đối tượng OLE được nhúng
OleFormat.GetRawData()Lấy các byte thô của đối tượng nhúng
OleFormat.Save()Lưu dữ liệu gốc của đối tượng nhúng vào tệp hoặc luồng
OlePackageTên tệp/tên hiển thị cho đối tượng OLE Package
OleControlBiểu diễn cơ bản của một điều khiển ActiveX được nhúng
Forms2OleControlĐiều khiển Microsoft Forms 2.0 (hộp kiểm, ô văn bản, hộp combo, v.v.)
Forms2OleControlCollectionTập hợp các nút Forms2OleControl con (ví dụ: bên trong một khung)
Forms2OleControlTypeLiệt kê các loại điều khiển Forms 2.0

Xem thêm

 Tiếng Việt