Πώς να εργαστείτε με την συσκευασία XLSX στο C++

Πώς να εργαστείτε με την συσκευασία XLSX στο C++

Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx Εναλλακτικά, το XML είναι εντός του XlsxWorkbookSerializer Η τάξη ορχήστρας φορτίζει και αποθηκεύει όλα τα μέρη του βιβλίου εργασίας.Αυτό το εγχειρίδιο εξηγεί πώς να χρησιμοποιείτε την API φόρτωσης/αποθήκευσης και τι διαχειρίζεται αυτόματα η στρώση συσκευασίας.

Βήμα προς βήμα οδηγός

Βήμα 1: Εισάγετε το κτίριο

cmake_minimum_required(VERSION 3.15)
project(XlsxPackaging CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(XlsxPackaging main.cpp)
target_link_libraries(XlsxPackaging PRIVATE Aspose.Cells.Foss.Cpp)

Βήμα 2: Προσθέστε κεφαλές

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"

using namespace Aspose::Cells_FOSS;

Βήμα 3: Κατεβάστε ένα υπάρχον αρχείο XLSX

Η Workbook(filePath) Ο κατασκευαστής καλείται XlsxWorkbookSerializer::Load Εσωτερικά για να αποσυνδέσετε όλα τα Open XML μέρη:

int main() {
    Workbook workbook("input.xlsx");
    Worksheet& sheet = workbook.GetWorksheets()[0];
    std::string title = sheet.GetCells()["A1"].GetStringValue();
    return 0;
}

Βήμα 4: Αλλαγή του βιβλίου εργασίας

Κάντε τυχόν κελίες, στυλ ή διαρθρωτικές αλλαγές χρησιμοποιώντας το τυποποιημένο API:

sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");

Βήμα 5: Αποθηκεύστε το βιβλίο εργασίας

Κλήση Workbook::Save(fileName) Για να συσκευάσετε όλα τα ανοιχτά τμήματα XML πίσω σε ένα αρχείο XLSX:

workbook.Save("output.xlsx");
workbook.Dispose();

Η μορφή αυτή απορρέει από το .xlsx ΕΠΙΛΕΥΣΗ - Η XlsxWorkbookSerializer::Save Η μέθοδος χειρίζεται τη γραφή του xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml,και xl/sharedStrings.xml Τα κομμάτια αυτόματα.


Βήμα 6: Κατανοήστε τι διαχειρίζεται η στρώση συσκευασίας

Δεν χρειάζεται να αλληλεπιδράτε με τα εσωτερικά συσκευασίας απευθείας.Ο σειριαστής χειρίζεται:

ΜερικάΔιαχειρίζεται από
Σύνταξη ΕργαστηρίουXlsxWorkbookProperties
Δραστηριότητες δεδομένωνWorksheetXmlMapper
Στυλ και γραμματοσειράXlsxWorkbookStyles
Μοιρασμένες ΣκηνέςSharedStringTableXmlMapper
Ιδιότητες εγγράφωνXlsxDocumentProperties
Ορισμένα ονόματαXlsxWorkbookDefinedNames

Κοινά προβλήματα και τακτοποιήσεις

Το αρχείο αποθηκεύεται αλλά δεν ανοίγει στο Excel Βεβαιωθείτε ότι το αρχείο εξόδου χρησιμοποιεί τη διαδρομή .xlsx Αποθήκευση με μια διαφορετική επέκταση μπορεί να παράγει ένα μη αναγνωρισμένο αρχείο.

Οι χαμένες στυλ μετά το γύρο Εφαρμογή Cell::SetStyle(style) Πριν καλέσει Workbook::Save.Οι στυλ που τροποποιούνται μετά την αποθήκευση δεν είναι γραμμένοι.

Τα αρχεία φορτώνουν ως κενά Ελέγξτε ότι το αρχείο δεν προστατεύεται με κωδικό πρόσβασης και είναι έγκυρο XLSX (δεν υπάρχει) .xls ή .xlsmΗ βιβλιοθήκη υποστηρίζει .xlsx Μόνο το.

Ορισμένα ονόματα που λείπουν μετά την αποθήκευση Χρησιμοποιήστε Workbook::EnsureUniqueDefinedName() πριν από την εξοικονόμηση για να επιλύσει οποιαδήποτε διαμάχη πεδίου.

Μνήμη δεν κυκλοφορεί Κλήση workbook.Dispose() Μετά την εξοικονόμηση για να απελευθερώσει όλα τα εσωτερικά XLSX πόρους συσκευασίας.

Συχνές ερωτήσεις

Μπορώ να αποθηκεύσω σε μορφές διαφορετικές από το XLSX;?

Η τρέχουσα έκδοση v0.1 υποστηρίζει την αποθήκευση μόνο στο XLSX. Το φόρτιση CSV υποστηρίζεται, αλλά η αποθηκεύωση σε CSV δεν είναι διαθέσιμη.

Η βιβλιοθήκη διατηρεί υπάρχοντα μέρη που δεν έχω τροποποιήσει;?

Ναι. Ο σειριοποιητής περιβάλλει όλα τα μέρη που φορτώνει. Τα μη τροποποιημένα δεδομένα φύλλου εργασίας, οι στυλ και τα καθορισμένα ονόματα διατηρούνται σε αποθήκευση.

Μπορώ να ελέγξω το πρωτότυπο XML ενός τμήματος του βιβλίου εργασίας;?

Η XmlDocument::SaveToUtf8() Η μέθοδος σέρβιλε ένα έγγραφο XML σε μια γραμμή. Ωστόσο, η άμεση πρόσβαση στα αρχεία XLSX δεν εκτίθεται στο δημόσιο API. XmlDocument Για την επεξεργασία XML.

Υπάρχει API streaming για μεγάλα αρχεία;?

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

Τι γίνεται αν αποθηκεύσω πάνω από το ίδιο αρχείο που φορτώσα;?

Η βιβλιοθήκη γράφει σε ένα νέο εσωτερικό buffer πριν υπεργραφεί το αρχείο στο δίσκο, έτσι η αποθήκευση στην τοποθεσία δεν διαφθορά την πηγή.

Δείτε επίσης

 Ελληνικά