Πώς να εργαστείτε με το OOXML Packaging στο .NET

Πώς να εργαστείτε με το OOXML Packaging στο .NET

Ένα αρχείο XLSX είναι ένα αρχεία Open Packaging Convention (OPC) ZIP. Aspose.Cells FOSS για .NET εκθέτει τη δομή του υποκείμενου πακέτου μέσω της PackageModel, PackagePartDescriptor, IPackageReader,και IPackageWriter.Αυτά είναι API-s σε επίπεδο υποδομής που είναι κυρίως χρήσιμα για τη διάγνωση και την προσαρμοσμένη υλοποίηση αποθήκευσης. dotnet add package Aspose.Cells_FOSS.

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

Βήμα 1: Εγκατάσταση του πακέτου

dotnet add package Aspose.Cells_FOSS

Βήμα 2: Εισαγωγή του ονόματος

using Aspose.Cells_FOSS;

Βήμα 3: Διαχείριση PackageStructureΕξαίρεση

PackageStructureException ρίχνει όταν το πακέτο XLSX έχει μη λειτουργική δομή OPC (π.χ. λείπει η απαιτούμενη σχέση). WorkbookLoadException Όταν φορτώνετε αρχεία από μη αξιόπιστες πηγές.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true };

try
{
    var wb = new Workbook("suspect.xlsx", opts);
    Console.WriteLine("Loaded: " + wb.Worksheets.Count + " sheet(s)");
}
catch (PackageStructureException ex)
{
    Console.WriteLine("OPC structure invalid: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Load error: " + ex.Message);
}

Βήμα 4: Κατανοήστε το IPackageReader και το IpakageWriter

IPackageReader Ορισμός A Read() μέθοδος ανάγνωσης ενός πακέτου OPC·; IPackageWriter Ορισμός A Write() Η βιβλιοθήκη παρέχει προεπιλεγμένες εφαρμογές που υποστηρίζονται από ZIP. Προσαρμοσμένες υλοποιήσεις μπορούν να παραδοθούν όταν φορτώνετε ή αποθηκεύετε σε μη-υποποιητικό σύστημα (π.χ. cloud blobs ή in-memory buffers).

// Signature reference
// public interface IPackageReader { void Read(/* ... */); }
// public interface IPackageWriter { void Write(/* ... */); }
//
// Standard usage: pass a Stream to the Workbook constructor
using Aspose.Cells_FOSS;
using System.IO;

byte[] fileBytes = File.ReadAllBytes("data.xlsx");
using var ms = new MemoryStream(fileBytes);
var wb = new Workbook(ms);
Console.WriteLine("Loaded from stream: " + wb.Worksheets.Count + " sheet(s)");

Βήμα 5: Ελέγξτε τα μη υποστηριζόμενα μέρη

Όταν φορτώνετε ένα αρχείο XLSX, PackageModel.UnsupportedParts λίστα με τμήματα που η βιβλιοθήκη δεν επεξεργάζεται.Αυτά διατηρούνται αλλά δεν ερμηνεύονται.Περισσότερα PackageLoadContext κατά τη διάρκεια μιας προσαρμοσμένης ροής φορτίου για να ελέγξετε το μοντέλο.

// PackageModel is populated internally during Workbook construction.
// Use LoadDiagnostics to detect load-time structural warnings without
// dropping to the PackageModel level directly.
using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
    Console.WriteLine("Package had " + diag.Issues.Count() + " repair entries.");

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

PackageStructureException Ακόμα και με το να ρίχνεται TryRepairPackage = true. Ορισμένες διαρθρωτικές αποτυχίες του OPC είναι πέρα από αυτόματη επισκευή (π.χ. εντελώς λείπει χάρτης τύπου περιεχομένου). unzip -t file.xlsx.Εάν ισχύει, μπορεί να κρυπτογραφηθεί - τα αρχεία που προστατεύονται από κωδικό πρόσβασης δεν υποστηρίζονται.

Workbook Εξαιρετικά, αλλά κάποιο περιεχόμενο λείπει. Ελέγξτε LoadDiagnostics.Issues Για DataLossRisk = true Οι ενδείξεις αυτές δείχνουν τα μέρη που έχουν χαθεί κατά τη διάρκεια της επισκευής.

Καθορισμός IPackageReader Δεν καλείται. Βεβαιωθείτε ότι το υπερφόρτωμα κατασκευαστή που δέχεται τον προσαρμοσμένο αναγνώστη χρησιμοποιείται. Workbook Ο κατασκευαστής υπερφόρτωσης δέχεται ένα προσαρμοσμένο αναγνώστη πακέτου.

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

Πότε πρέπει να εφαρμόσω το IPackageReader ή το iPadWriter;?

Μόνο όταν το backend αποθήκευσης σας δεν είναι το τοπικό σύστημα αρχείων - για παράδειγμα, φορτώντας απευθείας από ένα σύννεφο αποθηκεύσεων χωρίς να δημιουργείτε προσωρινό αρχείο.

Τα μη υποστηριζόμενα μέρη του PackageModel διατηρούνται σε αποθήκευση;?

μη τυποποιημένα τμήματα σε UnsupportedParts Για την πίστη των μη τυποποιημένων τμημάτων, μετά τη διαδικασία αποθηκεύεται το XLSX στο επίπεδο ZIP.

Ποια είναι η διαφορά μεταξύ PackageStructureException και WorkbookLoadExcept;?

PackageStructureException είναι μια αποτυχία σε επίπεδο OPC/ZIP (απόσπαση τύπου περιεχομένου, σπάσιμο σχέσης). WorkbookLoadException Είναι μια αποτυχία υψηλού επιπέδου στην αναπαραγωγή του περιεχομένου XML XLSX.

Δείτε επίσης

 Ελληνικά