Αντικείμενα OLE και Έλεγχοι ActiveX
Αντικείμενα OLE και ActiveX Controls
Aspose.Words FOSS για .NET παρέχει πρόσβαση μόνο για ανάγνωση σε ενσωματωμένα αντικείμενα OLE και Forms 2.0 ActiveX controls μέσω του OleFormat entry point και των σχετικών κλάσεων του σε Aspose.Words.Drawing και Aspose.Words.Drawing.Ole.
Πρόσβαση σε δεδομένα ενσωματωμένου αντικειμένου OLE
OleFormat εκτίθεται από ένα ενσωματωμένο Shape και παρέχει πρόσβαση στα ακατέργαστα δεδομένα και τα μεταδεδομένα του ενσωματωμένου αντικειμένου. SuggestedFileName και SuggestedExtension περιγράφουν πώς θα αποθηκευτεί το ενσωματωμένο αντικείμενο, ProgId εντοπίζει την εφαρμογή διακομιστή OLE που το δημιούργησε, και IsLink διακρίνει ένα συνδεδεμένο αντικείμενο (SourceFullName/SourceItem δείχνουν στην εξωτερική πηγή) από ένα πλήρως ενσωματωμένο. GetOleEntry(oleEntryName) διαβάζει ένα συγκεκριμένο ονομαστικό ρεύμα από τη δομή σύνθετου αρχείου OLE, GetRawData() επιστρέφει τα πλήρη ακατέργαστα δεδομένα του αντικειμένου, και Save(fileName) / Save(stream) γράφουν τα εγγενή δεδομένα του ενσωματωμένου αντικειμένου σε δίσκο ή ρεύμα — χρήσιμο για εξαγωγή του αρχικού ενσωματωμένου αρχείου (π.χ. ένα ενσωματωμένο υπολογιστικό φύλλο ή παρουσίαση) χωρίς άνοιγμα στην εγγενή εφαρμογή του. OlePackage, που προέρχεται μέσω OleFormat.OlePackage, εκθέτει FileName και DisplayName για αντικείμενα ενσωματωμένα ως OLE Package.
Εργασία με Forms 2.0 ActiveX Controls
Όταν το ενσωματωμένο αντικείμενο είναι ένας έλεγχος Microsoft Forms 2.0 ActiveX (πλαίσια ελέγχου, πεδία κειμένου, συνδυαστικά πλαίσια και παρόμοιοι διαδραστικοί έλεγχοι αντί για ενσωματωμένα έγγραφα), OleFormat.OleControl επιστρέφει ένα OleControl. Ελέγξτε την ιδιότητα IsForms2OleControl του, και εάν true, μετατρέψτε το σε Forms2OleControl (η αφηρημένη βασική κλάση για όλους τους ελέγχους Forms 2.0) για να αποκτήσετε πρόσβαση σε ιδιότητες ειδικές για τον έλεγχο: Caption, Value, Enabled, Type (μια τιμή Forms2OleControlType — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton και άλλα), καθώς και οπτικές ιδιότητες ForeColor, BackColor, Width και Height. Έλεγχοι container όπως τα πλαίσια εκθέτουν τα ένθετα στοιχεία τους μέσω ChildNodes, ένα Forms2OleControlCollection.
Συμβουλές και βέλτιστες πρακτικές
- Ελέγξτε το
OleFormat.IsLinkπριν υποθέσετε ότι τα δεδομένα ενσωματωμένου αντικειμένου υπάρχουν τοπικά — τα συνδεδεμένα αντικείμενα παραπέμπουν σε εξωτερικό αρχείο μέσω τουSourceFullNameαντί να ενσωματώνουν το περιεχόμενό τους. - Χρησιμοποιήστε το
SuggestedExtensionμαζί με τοSave()για να δημιουργήσετε ένα λογικό όνομα αρχείου εξόδου όταν εξάγετε ενσωματωμένα αντικείμενα μαζικά. - Πάντα ελέγξτε το
OleControl.IsForms2OleControlπριν κάνετε cast σεForms2OleControl— δεν είναι κάθεOleControlέλεγχος Forms 2.0. - Το
Forms2OleControlCollection.Countκαι η απαρίθμηση μέσω τουGetEnumerator()σάς επιτρέπουν να περιηγηθείτε σε ένθετα στοιχεία ελέγχου μέσα σε ένα πλαίσιο ή σε ένα έλεγχο δοχείου πολλαπλών σελίδων.
Κοινά προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
GetRawData() επιστρέφει μη αναμενόμενα/κενά δεδομένα | Το αντικείμενο είναι ένας σύνδεσμος (IsLink == true), όχι ενσωματωμένο | Ελέγξτε πρώτα το IsLink; επιλύστε το SourceFullName για συνδεδεμένα αντικείμενα |
InvalidCastException μετατρέπει το OleControl σε Forms2OleControl | Ο έλεγχος δεν είναι έλεγχος Forms 2.0 | Ελέγξτε το IsForms2OleControl πριν τη μετατροπή |
GetOleEntry() επιστρέφει null για ένα ονομασμένο stream | Το όνομα του stream δεν υπάρχει στη σύνθετη δομή αρχείου αυτού του αντικειμένου | Απαριθμήστε τα πραγματικά ονόματα καταχωρήσεων αντί να υποθέτετε ένα σταθερό όνομα |
| Δεν βρέθηκαν ενσωματωμένοι έλεγχοι μέσα σε ένα frame | Ελέγχθηκε μόνο το ανώτατο επίπεδο OleControl, όχι το ChildNodes | Αναδρομή στο Forms2OleControl.ChildNodes για τα container controls |
FAQ
Πώς μπορώ να εξάγω ένα ενσωματωμένο αντικείμενο Excel ή PowerPoint από ένα έγγραφο Word;
Προσπελάστε το OleFormat του σχήματος, μετά καλέστε το Save(fileName) ή το GetRawData() για να ανακτήσετε τα εγγενή bytes του ενσωματωμένου αντικειμένου· χρησιμοποιήστε το SuggestedExtension για να ονομάσετε το αρχείο εξόδου κατάλληλα.
Ποια είναι η διαφορά μεταξύ ενός ενσωματωμένου αντικειμένου OLE και ενός ελέγχου Forms 2.0;
Ένα ενσωματωμένο αντικείμενο OLE (πρόσβαση μέσω OleFormat απευθείας) είναι συνήθως ένα άλλο έγγραφο (υπολογιστικό φύλλο, παρουσίαση); ένας έλεγχος Forms 2.0 (OleFormat.OleControl → Forms2OleControl) είναι ένα διαδραστικό στοιχείο UI όπως ένα πλαίσιο ελέγχου ή πεδίο κειμένου.
Πώς μπορώ να καταλάβω αν ένα αντικείμενο OLE είναι συνδεδεμένο αντί για ενσωματωμένο;
Ελέγξτε το OleFormat.IsLink — όταν τα true, SourceFullName και SourceItem περιγράφουν την εξωτερική πηγή αντί για το αντικείμενο που φέρει τα δικά του δεδομένα.
Μπορώ να διαβάσω τη λεζάντα ή την τιμή ενός ελέγχου checkbox;
Ναι — μετατρέψτε το OleControl σε Forms2OleControl (αφού επιβεβαιώσετε το IsForms2OleControl) και διαβάστε τα Caption και Value.
API Reference Περίληψη
| Κλάση / Μέθοδος | Περιγραφή |
|---|---|
OleFormat | Σημείο εισόδου για τα δεδομένα και τα μεταδεδομένα ενός ενσωματωμένου αντικειμένου OLE |
OleFormat.GetRawData() | Ανάκτηση των ακατέργαστων bytes του ενσωματωμένου αντικειμένου |
OleFormat.Save() | Αποθήκευση των εγγενών δεδομένων του ενσωματωμένου αντικειμένου σε αρχείο ή ροή |
OlePackage | Όνομα αρχείου/όνομα εμφάνισης για ένα αντικείμενο OLE Package |
OleControl | Βασική αναπαράσταση ενός ενσωματωμένου ελέγχου ActiveX |
Forms2OleControl | Microsoft Forms 2.0 control (πλαίσιο ελέγχου, πεδίο κειμένου, συνδυαστικό πλαίσιο, κλπ.) |
Forms2OleControlCollection | Συλλογή παιδικών κόμβων Forms2OleControl (π.χ. μέσα σε ένα πλαίσιο) |
Forms2OleControlType | Απαρίθμηση τύπων ελέγχων Forms 2.0 |