Πρόσβαση και διαχείριση φύλλων MS Excel με Delphi

Αυτός ο οδηγός βήμα προς βήμα περιγράφει τον τρόπο σύνδεσης με το Microsoft Excel, την ανάκτηση δεδομένων φύλλου και την ενεργοποίηση της επεξεργασίας των δεδομένων χρησιμοποιώντας το DBGrid. Θα βρείτε επίσης μια λίστα με τα πιο συνηθισμένα σφάλματα που ενδέχεται να εμφανιστούν στη διαδικασία, καθώς και τον τρόπο αντιμετώπισης τους.

Τι καλύπτεται παρακάτω:

  • Μέθοδοι για τη μεταφορά δεδομένων μεταξύ Excel και Δελφοί. Πώς να συνδεθείτε με το Excel με ΦΑΣΑΡΙΑ (ActiveX Data Objects) και τους Δελφούς.
  • Δημιουργία επεξεργαστή υπολογιστικών φύλλων Excel χρησιμοποιώντας Delphi και ADO
  • Ανάκτηση δεδομένων από το Excel. Τρόπος αναφοράς ενός πίνακα (ή εύρους) σε ένα βιβλίο εργασίας του Excel.
  • Μια συζήτηση σχετικά με τους τύπους πεδίων Excel (στήλη)
  • Τρόπος τροποποίησης των φύλλων του Excel: επεξεργασία, προσθήκη και διαγραφή σειρών.
  • Μεταφορά δεδομένων από μια εφαρμογή Delphi στο Excel. Πώς να δημιουργήσετε ένα φύλλο εργασίας και να το συμπληρώσετε με προσαρμοσμένα δεδομένα από μια βάση δεδομένων MS Access.

Πώς να συνδεθείτε στο Microsoft Excel

instagram viewer

Το Microsoft Excel είναι ένα ισχυρό υπολογιστικό φύλλο και εργαλείο ανάλυσης δεδομένων. Δεδομένου ότι οι γραμμές και οι στήλες ενός φύλλου εργασίας του Excel σχετίζονται στενά με τις σειρές και τις στήλες ενός πίνακα βάσης δεδομένων, πολλοί προγραμματιστές θεωρούν σκόπιμο να μεταφέρουν τα δεδομένα τους σε βιβλίο εργασίας του Excel για σκοπούς ανάλυσης. και στη συνέχεια να ανακτήσετε τα δεδομένα πίσω στην εφαρμογή.

Η πιο συνηθισμένη προσέγγιση για την ανταλλαγή δεδομένων μεταξύ της εφαρμογής σας και του Excel είναι Αυτοματοποίηση. Η αυτοματοποίηση παρέχει έναν τρόπο ανάγνωσης των δεδομένων του Excel χρησιμοποιώντας το μοντέλο αντικειμένων του Excel για να καταδυθείτε στο φύλλο εργασίας, να εξαγάγετε τα δεδομένα του και να το εμφανίσετε μέσα σε ένα στοιχείο που μοιάζει με πλέγμα, ήτοι το DBGrid ή το StringGrid.

Η αυτοματοποίηση σας δίνει τη μέγιστη ευελιξία για τον εντοπισμό των δεδομένων στο βιβλίο εργασίας καθώς και τη δυνατότητα μορφοποίησης του φύλλου εργασίας και πραγματοποίηση διαφόρων ρυθμίσεων κατά το χρόνο εκτέλεσης.

Για να μεταφέρετε τα δεδομένα σας από και προς το Excel χωρίς αυτοματοποίηση, μπορείτε να χρησιμοποιήσετε άλλες μεθόδους όπως:

  • Γράψτε τα δεδομένα σε ένα αρχείο κειμένου που έχει οριστεί με κόμμα και αφήστε το Excel να αναλύσει το αρχείο σε κελιά
  • Μεταφέρετε δεδομένα χρησιμοποιώντας DDE (Δυναμική Ανταλλαγή Δεδομένων)
  • Μεταφέρετε τα δεδομένα σας από και προς ένα φύλλο εργασίας χρησιμοποιώντας το ADO

Μεταφορά δεδομένων μέσω ADO

Δεδομένου ότι το Excel είναι συμβατό με το JET OLE DB, μπορείτε να το συνδέσετε με τους Delphi χρησιμοποιώντας το ADO (dbGO ή AdoExpress) και στη συνέχεια να ανακτήσετε του φύλλου εργασίας σε ένα σύνολο δεδομένων ADO, εκδίδοντας ένα ερώτημα SQL (ακριβώς όπως θα ανοίξετε ένα σύνολο δεδομένων σε οποιαδήποτε βάση δεδομένων τραπέζι).

Με αυτόν τον τρόπο, όλες οι μέθοδοι και οι δυνατότητες του αντικειμένου ADODataset είναι διαθέσιμες για να επεξεργαστούν τα δεδομένα του Excel. Με άλλα λόγια, χρησιμοποιώντας τα στοιχεία ADO, μπορείτε να δημιουργήσετε μια εφαρμογή που μπορεί να χρησιμοποιήσει ένα βιβλίο εργασίας του Excel ως βάση δεδομένων. Ένα άλλο σημαντικό γεγονός είναι ότι το Excel είναι μια διαδικασία εκτός διαδικασίας Διακομιστή ActiveX. Το ADO εκτελείται εν λειτουργία και εξοικονομεί το κόστος των δαπανηρών εξερχόμενων κλήσεων.

Όταν συνδέεστε στο Excel χρησιμοποιώντας ADO, μπορείτε να ανταλλάσσετε ανεπεξέργαστα δεδομένα από και προς ένα βιβλίο εργασίας. Μια σύνδεση ADO δεν μπορεί να χρησιμοποιηθεί για τη μορφοποίηση φύλλων ή την εφαρμογή τύπων στα κελιά. Ωστόσο, εάν μεταφέρετε τα δεδομένα σας σε ένα φύλλο εργασίας που είναι προκαθορισμένο, διατηρείται η μορφή. Αφού εισαχθούν τα δεδομένα από την εφαρμογή σας στο Excel, μπορείτε να εκτελέσετε οποιαδήποτε μορφοποίηση υπό όρους χρησιμοποιώντας μια (προ-καταγραμμένη) μακροεντολή στο φύλλο εργασίας.

Μπορείτε να συνδεθείτε στο Excel χρησιμοποιώντας το ADO με τους δύο OLE DB Providers που είναι μέρος του MDAC: Microsoft Jet OLE DB Provider ή Microsoft OLE DB Provider για προγράμματα οδήγησης ODBC. Θα επικεντρωθούμε στην υπηρεσία Jet OLE DB Provider, η οποία μπορεί να χρησιμοποιηθεί για την πρόσβαση σε δεδομένα σε βιβλία εργασίας του Excel μέσω των οδηγών ISA (Installed Method Sequential Access).

Υπόδειξη: Δείτε το Μάθημα αρχαρίων για τους Δελφούς Προγραμματισμός βάσης δεδομένων ADO αν είστε νέος στο ADO.

Το Magic του ConnectionString

Η ιδιότητα ConnectionString λέει στον ADO πώς να συνδεθεί με την προέλευση δεδομένων. Η τιμή που χρησιμοποιείται για το ConnectionString αποτελείται από ένα ή περισσότερα επιχειρήματα που χρησιμοποιεί η ADO για τη δημιουργία της σύνδεσης.

Στους Δελφούς, το στοιχείο TADOConnection περικλείει το αντικείμενο σύνδεσης ADO. μπορεί να μοιραστεί μέσω πολλαπλών συνόλων δεδομένων ADO (TADOTable, TADOQuery, κ.λπ.) μέσω των ιδιοτήτων σύνδεσης τους.

Για να συνδεθείτε με το Excel, μια έγκυρη συμβολοσειρά σύνδεσης περιλαμβάνει μόνο δύο επιπλέον πληροφορίες - την πλήρη διαδρομή στο βιβλίο εργασίας και την έκδοση αρχείου Excel.

Μια νόμιμη συμβολοσειρά σύνδεσης μπορεί να φαίνεται ως εξής:

ConnectionString: = 'Παροχέας = Microsoft. Πίδακας. OLEDB.4.0, Πηγή δεδομένων = C: \ MyWorkBooks \ myDataBook.xls. Εκτεταμένες ιδιότητες = Excel 8.0; ';

Κατά τη σύνδεση σε μορφή εξωτερικής βάσης δεδομένων που υποστηρίζεται από το Jet, πρέπει να ορίσετε τις εκτεταμένες ιδιότητες της σύνδεσης. Στην περίπτωσή μας, όταν συνδέεται σε μια "βάση δεδομένων" του Excel, χρησιμοποιούνται εκτεταμένες ιδιότητες για να ορίσετε την έκδοση αρχείου Excel.

Για ένα βιβλίο εργασίας Excel95, αυτή η τιμή είναι "Excel 5.0" (χωρίς τα εισαγωγικά)? χρησιμοποιήστε το "Excel 8.0" για Excel 97, Excel 2000, Excel 2002 και ExcelXP.

Σπουδαίος: Πρέπει να χρησιμοποιήσετε τον παροχέα Jet 4.0 αφού το Jet 3.5 δεν υποστηρίζει τα προγράμματα οδήγησης ISAM. Εάν ορίσετε τον παροχέα Jet στην έκδοση 3.5, θα λάβετε το σφάλμα "Δεν βρέθηκε εγκατεστημένο ISAM".

Μια άλλη ιδιότητα έκτασης Jet είναι "HDR =". "HDR = Ναι" σημαίνει ότι υπάρχει μια σειρά κεφαλίδων στην περιοχή, έτσι ώστε το Jet δεν θα περιλαμβάνει την πρώτη σειρά της επιλογής στο σύνολο δεδομένων. Εάν έχει οριστεί "HDR = No", τότε ο πάροχος θα συμπεριλάβει την πρώτη σειρά του εύρους (ή το όνομα περιοχής) στο σύνολο δεδομένων.

Η πρώτη σειρά σε μια περιοχή θεωρείται από προεπιλογή ως η σειρά κεφαλίδας ("HDR = Ναι"). Επομένως, αν έχετε επικεφαλίδα στη στήλη, δεν χρειάζεται να καθορίσετε αυτήν την τιμή. Εάν δεν έχετε επικεφαλίδες στηλών, πρέπει να ορίσετε "HDR = No".

Τώρα που είστε έτοιμοι, αυτό είναι το μέρος όπου τα πράγματα γίνονται ενδιαφέροντα, αφού είμαστε έτοιμοι για κάποιο κώδικα. Ας δούμε πώς να δημιουργήσετε ένα απλό επεξεργαστή υπολογιστικών φύλλων Excel χρησιμοποιώντας Delphi και ADO.

Σημείωση: Θα πρέπει να προχωρήσετε ακόμα και αν δεν γνωρίζετε τον προγραμματισμό ADO και Jet. Όπως θα δείτε, η επεξεργασία ενός βιβλίου εργασίας του Excel είναι τόσο απλή όσο η επεξεργασία δεδομένων από οποιαδήποτε τυποποιημένη βάση δεδομένων.