Εισαγωγή
Aspose.Cells FOSS για C++ είναι δομημένο σε δύο στρώματα. Το στρώμα που αγγίζει ο περισσότερος κώδικας είναι η πρόσοψη: Workbook, Worksheet, Cell και Style, που είναι αυτό που καλύπτουν οι ανακοινώσεις και τα άρθρα χαρακτηριστικών για αυτήν την πλατφόρμα. Κάτω από αυτό βρίσκεται ένα δεύτερο στρώμα, στο χώρο ονομάτων Aspose::Cells_FOSS::Core, που αποτελείται από απλές εγγραφές δεδομένων — WorkbookModel, WorksheetModel, CellRecord, StyleValue και περίπου τέσσερις δεκάδες σχετικούς τύπους *Model και *Value. Αυτές οι εγγραφές κρατούν την πραγματική αναλυμένη κατάσταση του φύλλου εργασίας: τιμές κελιών με κλειδί CellAddress, χαρακτηριστικά στυλ ως StyleValue, ρυθμίσεις βιβλίου και φύλλου εργασίας, διαμόρφωση σελίδας, φίλτρα και διαγνωστικά φόρτωσης. Οι κλάσεις πρόσοψης διαβάζουν από αυτό το στρώμα και γράφουν σε αυτό αντί να αποθηκεύουν την κατάσταση μόνοι τους.
Η γέφυρα μεταξύ των δύο στρωμάτων είναι ρητή και δημόσια. Workbook::GetModel() επιστρέφει ένα Core::WorkbookModel, Worksheet::GetModel() επιστρέφει ένα Core::WorksheetModel, και Style::ToCore() / Style::FromCore() μετατρέπουν ένα μεταβλητό Style σε και από ένα Core::StyleValue. DocumentProperties::GetModel() και ExtendedDocumentProperties::GetModel() κάνουν το ίδιο για τα μεταδεδομένα του εγγράφου. Ένας καταναλωτής προσπελαύνει αυτό το στρώμα απευθείας σε πιο περιορισμένες περιπτώσεις από την καθημερινή επεξεργασία κελιών API: ελέγχοντας το DiagnosticBag που καταγράφηκε κατά τη φόρτωση ή αποθήκευση ενός βιβλίου, ομαλοποιώντας ένα στυλ μέσω του επιπέδου βιβλίου StyleRepository, ή δουλεύοντας απευθείας με τις απλές εγγραφές κελιών και γραμμών αντί για τα αντικείμενα περιτύλιξης Cell / Row.
Ό,τι περιγράφεται εδώ διανέμεται στην ίδια δομή πηγαίου κώδικα με άδεια MIT, χωρίς εξαρτήσεις, όπως το υπόλοιπο του Aspose.Cells FOSS για C++, χτισμένο με CMake και περιλαμβανόμενο ως κεφαλίδες και πηγαίο κώδικα αντί για προ-συγκροτημένο δυαδικό. Αν δεν έχετε ακόμη δουλέψει με την πρόσοψη API, ξεκινήστε πρώτα με το άρθρο για τις δυνατότητες Workbook/Worksheet/Cell — αυτό το άρθρο υποθέτει αυτή τη βάση και εστιάζει σε ό,τι βρίσκεται κάτω από αυτήν.
Τι Περιλαμβάνεται
Δέντρο Μοντέλου Workbook και Worksheet
Core::WorkbookModel είναι η ριζική εγγραφή. GetWorksheets() επιστρέφει ένα std::deque<WorksheetModel>, GetSettings() ένα WorkbookSettingsModel, GetProperties() ένα WorkbookPropertiesModel, GetDocumentProperties() ένα DocumentPropertiesModel, GetDiagnostics() ένα DiagnosticBag, GetStyles() ένα StyleRepository, GetSharedStrings() ένα SharedStringRepository, και GetDefaultStyle() / SetDefaultStyle() ένα StyleValue. Παρακολουθεί επίσης GetActiveSheetIndex() και ένα std::vector<DefinedNameModel> από το GetDefinedNames(). Workbook::GetModel() είναι το σημείο εισόδου σε αυτήν την εγγραφή.
Core::WorksheetModel, προσπελαζόμενο μέσω Worksheet::GetModel(), αποθηκεύει κελιά ως std::unordered_map<CellAddress, CellRecord> μέσω GetCells(), γραμμές ως std::unordered_map<int, RowModel> μέσω GetRows(), περιοχές στηλών ως std::vector<ColumnRangeModel> μέσω GetColumns(), και συγχωνευμένες περιοχές ως std::vector<MergeRegion> μέσω GetMergeRegions(). Περιέχει επίσης τα GetHyperlinks(), GetValidations(), GetConditionalFormattings(), GetPageSetup(), GetView(), GetProtection(), GetAutoFilter(), GetTabColor(), και GetVisibility() (μια τιμή SheetVisibility: Visible, Hidden, ή VeryHidden).
CellAddress είναι ο τύπος κλειδιού με δυνατότητα κατακερματισμού που χρησιμοποιείται για αυτόν τον χάρτη κελιών. Αναλύει κείμενο σε στυλ A1 σε δείκτες γραμμής/στήλης με μηδενική βάση και το αντίστροφο — αυτό είναι μία από τις λίγες κλάσεις σε αυτό το σύμπλεγμα με άμεση κάλυψη δοκιμών στο αποθετήριο FOSS:
#include "aspose/cells_foss/core/CellAddress.h"
using namespace Aspose::Cells_FOSS;
Core::CellAddress parsed = Core::CellAddress::Parse("AB3");
// parsed.GetRowIndex() == 2 (zero-based row index)
// parsed.GetColumnIndex() == 27 (zero-based column index)
// parsed.ToString() == "AB3"
CellRecord περιέχει το CellValue, το CellValueKind ενός κελιού, μια προαιρετική συμβολοσειρά τύπου, ένα StyleValue, και μια σημαία GetIsExplicitlyStored() που διακρίνει ένα κελί που γράφτηκε πραγματικά από ένα που υπάρχει μόνο επειδή ένα προεπιλεγμένο όριο γραμμής ή στήλης το αγγίζει. Το RowModel μεταφέρει προαιρετικό ύψος, μια κρυφή σημαία, και έναν προαιρετικό δείκτη στυλ· το ColumnRangeModel μεταφέρει τα ίδια τρία συν το ελάχιστο/μέγιστο εύρος στηλών στο οποίο εφαρμόζεται. Το MergeRegion είναι ένα απλό ορθογώνιο πρώτης-γραμμής/πρώτης-στήλης/συνολικών-γραμμών/συνολικών-στηλών.
Δεδομένα Στυλ ως Απλές Τιμές
StyleValue είναι το Core αντίστοιχο της μεταβλητής προσκηνής Style — το Style::ToCore() μετατρέπει ένα Style σε ένα, και το Style::FromCore() δημιουργεί ένα Style από ένα. Ομαδοποιεί τα GetFont() (FontValue), GetPattern() (FillPatternKind), GetForegroundColor() / GetBackgroundColor() (ColorValue), GetBorders() (BordersValue), GetAlignment() (AlignmentValue), GetProtection() (ProtectionValue), και GetNumberFormat() (NumberFormatValue), συν ένα στατικό StyleValue::Default() και ένα Clone(). Το FontValue αντικατοπτρίζει το πεδίο Font πεδίου προς πεδίο: όνομα, μέγεθος, έντονο, πλάγιο, υπογράμμιση, διακριτή γραμμή, και ένα ColorValue. Το ColorValue από μόνο του είναι μια απλή πλειάδα ARGB (GetA(), GetR(), GetG(), GetB(), Equals(), GetHashCode()) — σε αντίθεση με την προσκήνιο Color κλάση, δεν διαθέτει εργοστάσιο τύπου FromArgb(), έτσι ένα ColorValue συνήθως λαμβάνεται από υπάρχον στυλ αντί να κατασκευάζεται απευθείας.
BordersValue περιέχει πέντε μέλη BorderSideValue — αριστερό, δεξί, πάνω, κάτω και διαγώνιο — το καθένα συνδυάζει μια τιμή enum BorderStyle με ένα ColorValue. Το AlignmentValue μοντελοποιεί την οριζόντια και κατακόρυφη στοίχιση, την αναδίπλωση κειμένου, το επίπεδο εσοχής, την περιστροφή κειμένου, τη σμίκρυνση-για-προσαρμογή, και τη σειρά ανάγνωσης. Τα ProtectionValue και NumberFormatValue υποστηρίζουν τις σημαίες προστασίας κελιού και το ζεύγος id/προσαρμοσμένης συμβολοσειράς μορφοποίησης αριθμού που εκθέτει το Style.
StyleRepository, προσπελαζόμενο μέσω WorkbookModel::GetStyles(), εκθέτει μία λειτουργία: Normalize(style) -> StyleValue. Το βιβλίο εργασίας το χρησιμοποιεί εσωτερικά κατά τη φόρτωση και αποθήκευση για να εσωτερικοποιήσει ισοδύναμα στυλ αντί να διπλασιάζει τις ταυτόσες εγγραφές StyleValue — δεν είναι μια γενικής χρήσης κρυφή μνήμη στυλ με αναζήτηση βάσει δείκτη στην τρέχουσα επιφάνεια API.
Ιδιότητες Εγγράφου και Ρυθμίσεις Σε Επίπεδο Βιβλίου Εργασίας
DocumentPropertiesModel ομαδοποιεί GetCore() (CoreDocumentPropertiesModel: τίτλο, θέμα, δημιουργό, λέξεις-κλειδιά, περιγραφή, τελευταίο-τροποποιημένο-από, αναθεώρηση, κατηγορία, κατάσταση περιεχομένου, και created/modified χρονικές σφραγίδες) και GetExtended() (ExtendedDocumentPropertiesModel: εφαρμογή, έκδοση εφαρμογής, εταιρεία, διαχειριστής, ασφάλεια εγγράφου, βάση υπερσυνδέσμων, και τις σημαίες scale-crop / links-up-to-date / shared-doc). DocumentProperties::GetModel() και ExtendedDocumentProperties::GetModel() γεφυρώνουν από τις κλάσεις προσκηνίου σε αυτά τα αρχεία.
WorkbookPropertiesModel αντικατοπτρίζει WorkbookProperties — κωδικό ονόματος, εμφάνιση αντικειμένων, ιδιωτικότητα φίλτρου, αρχείο αντιγράφου ασφαλείας και σχετικές σημαίες — και ενσωματώνει WorkbookProtectionModel (κλείδωμα δομής/παραθύρων/αναθεώρησης, κωδικός εργασιακού βιβλίου και κωδικοί αναθεωρήσεων), WorkbookViewModel (θέση και μέγεθος παραθύρου, πρώτο ορατό φύλλο, ορατότητα γραμμής κύλισης και καρτέλας φύλλου, λόγο καρτέλας, κατάσταση ελαχιστοποίησης, ομαδοποίηση ημερομηνιών αυτόματου φίλτρου), και CalculationPropertiesModel (λειτουργία υπολογισμού, ρυθμίσεις επανάληψης, πλήρη ακρίβεια, ταυτόχρονος υπολογισμός). WorkbookSettingsModel μεταφέρει μια τιμή DateSystem (Windows1900 ή Mac1904) και μια προβολή πολιτισμού — το αντίστοιχο σε επίπεδο μοντέλου του WorkbookSettings::GetDate1904() / GetCulture(). Οι περισσότερες τύποι *Model σε αυτή την ομάδα εκθέτουν CopyFrom(source) και HasStoredState(), τα οποία ο σειριοποιητής χρησιμοποιεί για να διακρίνει μια ρητά ορισμένη τιμή από μια προεπιλογή που δεν έχει οριστεί πριν την εγγραφή του XML.
Μοντέλα Χαρακτηριστικών Φύλλων Εργασίας
WorksheetProtectionModel αντικατοπτρίζει το πεδίο προς πεδίο του WorksheetProtection και προσθέτει τα αποθηκευμένα πεδία κωδικού πρόσβασης — GetPasswordHash(), GetAlgorithmName(), GetHashValue(), GetSaltValue(), GetSpinCount() — που το facade WorksheetProtection δεν εκθέτει άμεσα. WorksheetViewModel περιέχει γραμμή πλέγματος, κεφαλίδα και ορατότητα μηδέν, διάταξη από δεξιά προς αριστερά και κλίμακα ζουμ. PageSetupModel ενσωματώνει PageMarginsModel (αριστερά/δεξιά/πάνω/κάτω περιθώρια κεφαλίδας/υποσέλιδου ως δεκαδικοί), PrintOptionsModel (γραμμές πλέγματος, κεφαλίδες, οριζόντιο και κάθετο κεντράρισμα), και HeaderFooterModel (κείμενο κεφαλίδας/υποσέλιδου αριστερά/κέντρο/δεξιά), μαζί με μέγεθος χαρτιού, προσανατολισμό, κλίμακα, προσαρμογή σε πλάτος/ύψος, περιοχή εκτύπωσης, γραμμές/στήλες τίτλου εκτύπωσης, και διανύσματα διακοπής σελίδας.
AutoFilterModel περιέχει μια συμβολοσειρά περιοχής, ένα std::vector<FilterColumnModel> και ένα AutoFilterSortStateModel. FilterColumnModel με τη σειρά του ενσωματώνει AutoFilterColorFilterModel, AutoFilterDynamicFilterModel και AutoFilterTop10Model, συν μια απλή λίστα συμβολοσειρών τιμών φίλτρου και ένα std::vector<AutoFilterCustomFilterModel>. ConditionalFormattingModel συνδυάζει ένα std::vector<CellArea> με ένα std::vector<FormatConditionModel> — κάθε συνθήκη φέρει τον τύπο της, τον τελεστή, τους τύπους, πεδία κλίμακας χρώματος/μπάρας δεδομένων/συνόλου εικονιδίων, και ένα StyleValue για τη μορφή που προκύπτει. ValidationModel και HyperlinkModel αντικατοπτρίζουν τις προσκηνίες Validation και Hyperlink ως απλά αρχεία, και DefinedNameModel αντικατοπτρίζει το DefinedName. SheetVisibility είναι η απαρίθμηση επιπέδου μοντέλου πίσω από το Worksheet::GetVisibilityType().
Ορισμένα από τα χαρακτηριστικά προσκηνίου που υποστηρίζουν αυτά τα αρχεία — AutoFilter και ConditionalFormattingCollection συγκεκριμένα — αναφέρονται στην τεκμηρίωση του προϊόντος ως ακόμη υπό ενεργή ανάπτυξη σε αυτή την έκδοση. Θεωρήστε τις παραπάνω δομές ως τον δομικό στόχο γύρω από τον οποίο έχουν χτιστεί το μοντέλο και ο σειριοποιητής, και όχι ως εγγύηση ότι κάθε πεδίο θα κάνει round-trip μέσω ενός αποθηκευμένου εργασιακού βιβλίου σήμερα.
Διαγνωστικά και Κοινή Κατάσταση
DiagnosticBag, προσβάσιμο μέσω WorkbookModel::GetDiagnostics(), συλλέγει αρχεία DiagnosticEntry — καθένα με ένα GetCode(), ένα GetSeverity() (DiagnosticSeverity: Warning, Recoverable, ή LossyRecoverable), ένα GetMessage(), μια σημαία GetRepairApplied() και μια σημαία GetDataLossRisk() — που δημιουργούνται κατά την ανάλυση ή τη σειριοποίηση ενός εργασιακού βιβλίου. Αυτό εκτελείται παράλληλα με το Workbook::GetLoadDiagnostics(), των οποίων οι τύποι σε επίπεδο προσκηνίου LoadDiagnostics / LoadIssue μοιράζονται την ίδια απαρίθμηση DiagnosticSeverity; ο κώδικας που χρειάζεται το ακατέργαστο αρχείο μοντέλου αντί για το περιτύλιγμα LoadIssue το προσεγγίζει μέσω GetDiagnostics() στο μοντέλο του εργασιακού βιβλίου.
SharedStringRepository υποστηρίζει τον πίνακα shared-strings του xlsx: GetValues() επιστρέφει το interned string vector, TryGetValue(index, value) επιλύει έναν δείκτη πίσω σε κείμενο, και Intern(value) προσθέτει ή επαναχρησιμοποιεί μια καταχώρηση — χρησιμοποιείται εσωτερικά όταν SaveOptions::SetUseSharedStrings(true) είναι ορισμένο. DateSerialConverter μετατρέπει μεταξύ ενός DateTime και του OLE-style serial number που το Excel αποθηκεύει σε ένα κελί, λαμβάνοντας ένα DateSystem ώστε τα βιβλία εργασίας που βασίζονται στο 1900 και 1904 να αποκωδικοποιούνται στην ίδια ημερολογιακή ημερομηνία.
Γρήγορη έναρξη
Προσθέστε τη βιβλιοθήκη σε ένα έργο CMake ως υποκατάλογο και συνδέστε τον στόχο που ορίζει:
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
target_link_libraries(MyApp PRIVATE Aspose.Cells.Foss.Cpp)
Το παράδειγμα παρακάτω γράφει ένα κελί μέσω της facade, στη συνέχεια φτάνει στο υποκείμενο μοντέλο για ένα diagnostic bag και μια CellAddress parse — την ίδια λειτουργία που το WorksheetModel::GetCells() χρησιμοποιεί εσωτερικά για να κλειδώσει τον χάρτη κελιών του:
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
#include "aspose/cells_foss/core/CellAddress.h"
#include <iostream>
using namespace Aspose::Cells_FOSS;
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.SetName("Report");
sheet.GetCells()["A1"].PutValue("Total");
workbook.Save("report.xlsx");
Core::CellAddress address = Core::CellAddress::Parse("A1");
std::cout << "Row: " << address.GetRowIndex()
<< " Column: " << address.GetColumnIndex() << "\n";
for (const auto& entry : workbook.GetModel().GetDiagnostics().GetEntries()) {
std::cout << "Diagnostic: " << entry.GetMessage() << "\n";
}
return 0;
}
Υποστηριζόμενες μορφές
| Μορφή | Επέκταση | Ανάγνωση | Εγγραφή |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
Η στρώση μοντέλου που περιγράφεται εδώ είναι η αναπαράσταση στη μνήμη πάνω στην οποία λειτουργούν ο αναγνώστης και ο συγγραφέας xlsx· δεν συνδέεται με κάποιο επιπλέον αρχείο μορφής πέρα από την εισαγωγή/εξαγωγή Xlsx που υποστηρίζει το υπόλοιπο της βιβλιοθήκης.
Ανοιχτός Κώδικας & Άδειες
Aspose.Cells FOSS για C++ είναι αδειοδοτημένο υπό MIT. Ο πηγαίος κώδικας, συμπεριλαμβανομένων των Aspose::Cells_FOSS::Core model headers που αναφέρονται σε αυτήν τη δημοσίευση, βρίσκεται στο GitHub; η εμπορική χρήση, η τροποποίηση και η αναδιανομή επιτρέπονται.
Ξεκινώντας
- Ξεκινώντας
- Οδηγός Προγραμματιστή
- Εργασία με το μοντέλο Cells FOSS
- Άρθρα Βάσης Γνώσεων
- API Reference
- Σελίδα Προϊόντος