Πώς να εργαστείτε με την επεξεργασία XML στο .NET
Τα αρχεία XLSX αποθηκεύουν τα δεδομένα τους σε τμήματα XML εντός ενός πακέτου ZIP OPC. Aspose.Cells FOSS για .NET επεξεργάζεται αυτά μέσα από τέσσερις κατηγορίες χαρτογράφου XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper,και StylesheetXmlMapper.Η κατανόηση αυτών των τάξεων σας βοηθά να διαγνώσετε αποτυχίες παρίν και να ρυθμίσετε σωστά την ανεκτικότητα του φορτίου. dotnet add package Aspose.Cells_FOSS.
Βήμα προς βήμα οδηγός
Βήμα 1: Εγκατάσταση του πακέτου
dotnet add package Aspose.Cells_FOSSΒήμα 2: Εισαγωγή του ονόματος
using Aspose.Cells_FOSS;Βήμα 3: Κατανοήστε τις ευθύνες του χάρτη XML
Κάθε φάκελος χειρίζεται ένα μέρος XML της δομής XLSX:
| Χάρτης | XML Μέρος | ΧΑΡΤΙΔΕΣ |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Μεταδεδομένα του βιβλίου εργασίας, λίστα φύλλων, ορισμένοι ονόματα |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Δεδομένα κυττάρων, φόρμουλα, υπερσυνδέσεις, επικύρωση, τυποποιημένες μορφές |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Δυοπλασιασμένες τιμές σιδήρου |
StylesheetXmlMapper | xl/styles.xml | Στυλ κυττάρων, γραμματοσειρά, γεμίσματα, σύνορα |
Αυτά τα αρχεία αναφέρονται αυτόματα κατά τη διάρκεια της Workbook Κατασκευή και Save().Δεν τα εγκαθιστάτε απευθείας στον κώδικα εφαρμογής.
Βήμα 4: Χρησιμοποιήστε το XmlParsingException
XmlParsingException ρίχνει όταν ένα φάκελο συναντά κακότυπο XML που δεν μπορεί να διορθωθεί. TryRepairXml = true Σε LoadOptions να ενεργοποιήσετε το μονοπάτι ανοχής σφάλματος του χαρτογράφου.
using Aspose.Cells_FOSS;
var opts = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
var wb = new Workbook("malformed.xlsx", opts);
Console.WriteLine("Loaded: " + wb.Worksheets.Count + " sheet(s)");
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
Console.WriteLine("XML repairs applied. Data loss risk: " + diag.HasDataLossRisk);
}
catch (XmlParsingException ex)
{
Console.WriteLine("Unrecoverable XML error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load failed: " + ex.Message);
}Βήμα 5: Χρησιμοποιήστε τη διάγνωση φορτίου για να εντοπίσετε τα προβλήματα XML
Μετά από μια επιτυχημένη φόρτιση, ελέγξτε LoadDiagnostics.Issues Για DiagnosticEntry καταχωρίσεις για να καταλάβουμε ποιες επισκευές XML εφαρμόστηκαν και αν οποιαδήποτε έχει ως αποτέλεσμα απώλεια δεδομένων.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
foreach (var entry in diag.Issues)
{
Console.WriteLine($"[{entry.Severity}] {entry.Code}");
Console.WriteLine($" Message: {entry.Message}");
Console.WriteLine($" RepairApplied: {entry.RepairApplied} DataLossRisk: {entry.DataLossRisk}");
}Κοινά προβλήματα και τακτοποιήσεις
XmlParsingException Ακόμα και με TryRepairXml = true. Το XML είναι τόσο κακότυπο που το ανοχή σφάλματος διαχωριστής δεν μπορεί να το ανακτήσει. Αυτό μπορεί ν’ συμβεί με αρχεία που δημιουργούνται από μη τυπικά εργαλεία που παράγουν συνταγματικά ανεπιθύμητο XML. Δεν υπάρχει δρόμος ανάκτησης για αυτά τα αρχείο.
Οι στυλς λείπουν μετά το φορτίο. Η StylesheetXmlMapper Μπορεί να έχει συναντήσει έναν διαφθορά. xl/styles.xml.Ελέγξτε LoadDiagnostics.Issues για τις εισαγωγές με κώδικα που σχετίζονται με τα στυλ, και DataLossRisk = true για τα επηρεασμένα κύτταρα.
Οι κοινές αλυσίδες εμφανίζονται ως άδειες κυττάρες. Ένας διαφθοράς xl/sharedStrings.xml μπορεί να προκαλέσει τα κύτταρα που αναφέρονται στο κοινό πίνακα γραμμής να καταλήξουν ως άδειο. TryRepairXml Προσπαθήστε να ανακάμψετε.
Συχνές ερωτήσεις
Μπορώ να εφαρμόσω ένα προσαρμοσμένο χαρτί XML;?
Οι κατηγορίες χαρτογράφων XML είναι σφραγισμένες εσωτερική υποδομή και δεν έχουν σχεδιαστεί για επέκταση.
Γιατί είναι η SharedStringTableXmlMapper χωριστά ?
Η προδιαγραφή OOXML χωρίζει επαναλαμβανόμενες τιμές γραμμής σε ένα κοινό πίνακα γραμμάτων για να μειώσει το μέγεθος του αρχείου. Το φάκελο χειρίζεται την ανάγνωση και τη συγγραφή αυτού του πίεσης ανεξάρτητα από τα δεδομένα κυττάρων.
Η ΚΕ TryRepairXml Εξέτασε όλα τα προβλήματα με το XML;?
TryRepairXml χειρίζεται τα ανακτήσιμα σφάλματα όπως ανοιχτά στοιχεία, λείπουν ονόματα και κρυμμένα χαρακτηριστικά. Διαρθρωτικά έγκυρα αλλά σεμάντικα ασυνέχεια XML (για παράδειγμα, τοξενικά φόρμουλα που αναφέρονται σε μη υπάρχοντα κύτταρα) θα εξακολουθήσει να διαδίδεται χωρίς λάθος.