Πώς να φορτώσετε ένα φύλλο εργασίας σε .NET

Πώς να φορτώσετε ένα φύλλο εργασίας σε .NET

Το Aspose.Cells FOSS for .NET σάς επιτρέπει να ανοίγετε υπάρχοντα φύλλα εργασίας XLSX με μία μόνο κλήση κατασκευής και παρέχει μια ανθεκτική στη σφάλματα διαδρομή φόρτωσης για αρχεία που έχουν μικρή δομική διαφθορά. Εγκαταστήστε τη βιβλιοθήκη από το NuGet με dotnet add package Aspose.Cells_FOSS.

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

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

dotnet add package Aspose.Cells_FOSS

Επαληθεύστε ότι το πακέτο υπάρχει:

dotnet list package | grep Aspose.Cells_FOSS

Βήμα 2: Εισαγωγή του χώρου ονομάτων

Προσθέστε αυτήν την οδηγία στην κορυφή του αρχείου C# σας:

using Aspose.Cells_FOSS;

Βήμα 3: Φόρτωση αρχείου XLSX

Περάστε τη διαδρομή του αρχείου στον κατασκευαστή Workbook. Η βιβλιοθήκη διαβάζει το αρχείο XLSX και γεμίζει το αντικείμενο βιβλίου εργασίας στη μνήμη.

using Aspose.Cells_FOSS;

var wb = new Workbook("data.xlsx");
Console.WriteLine("Loaded " + wb.Worksheets.Count + " sheet(s)");
Console.WriteLine("First sheet: " + wb.Worksheets[0].Name);
Console.WriteLine("A1 value: " + wb.Worksheets[0].Cells["A1"].StringValue);

Βήμα 4: Φόρτωση με επιλογές επισκευής ανθεκτικές σε σφάλματα

Για αρχεία που ενδέχεται να έχουν ζημιά ZIP ή XML, παρέχετε ένα αντικείμενο LoadOptions με TryRepairPackage και TryRepairXml ορισμένα σε true. Τυλίξτε την κλήση σε ένα try/catch για WorkbookLoadException σε περίπτωση που το αρχείο είναι μη ανακτήσιμο.

using Aspose.Cells_FOSS;

var opts = new LoadOptions
{
    TryRepairPackage = true,
    TryRepairXml = true,
};

try
{
    var wb = new Workbook("possibly-corrupt.xlsx", opts);
    Console.WriteLine("Loaded successfully");
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Unrecoverable file: " + ex.Message);
}

Βήμα 5: Έλεγχος Διαγνωστικών Φόρτωσης

Μετά τη φόρτωση, ελέγξτε το Workbook.LoadDiagnostics για να δείτε εάν η βιβλιοθήκη εφάρμοσε κάποιες διορθώσεις. HasRepairs είναι true εάν εφαρμόστηκε κάποια διόρθωση· HasDataLossRisk είναι true εάν τα δεδομένα μπορεί να έχουν απορριφθεί. Επαναλάβετε το Issues για να αποκτήσετε πρόσβαση σε μεμονωμένες εγγραφές DiagnosticEntry.

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("Repairs were applied. Data loss risk: " + diag.HasDataLossRisk);
    foreach (var entry in diag.Issues)
        Console.WriteLine($"  [{entry.Severity}] {entry.Code}: {entry.Message}");
}
else
{
    Console.WriteLine("File loaded cleanly — no repairs.");
}

Βήμα 6: Πρόσβαση σε δεδομένα φύλλου εργασίας

Μετά τη φόρτωση, αποκτήστε πρόσβαση στα φύλλα εργασίας με βάση το ευρετήριο ή το όνομα και διαβάστε τις τιμές των κελιών χρησιμοποιώντας Cell.StringValue ή Cell.Value.

using Aspose.Cells_FOSS;

var wb = new Workbook("data.xlsx");

// By index
var sheet = wb.Worksheets[0];
Console.WriteLine("Sheet: " + sheet.Name);
Console.WriteLine("A1: " + sheet.Cells["A1"].StringValue);

// By name
var named = wb.Worksheets["Report"];
if (named != null)
    Console.WriteLine("Report!B2: " + named.Cells["B2"].StringValue);

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

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

Το φορτωμένο βιβλίο εργασίας έχει λιγότερα φύλλα από το αναμενόμενο.
Μια λειτουργία επισκευής ενδέχεται να έχει αφαιρέσει φύλλα εργασίας που ανέφεραν ελλείποντα μέρη. Ελέγξτε LoadDiagnostics.Issues για καταχωρήσεις με DataLossRisk = true και ενημερώστε τον χρήστη.

Οι τιμές των κελιών είναι κενές μετά τη φόρτωση.
Βεβαιωθείτε ότι έχετε πρόσβαση στο σωστό δείκτη ή όνομα φύλλου εργασίας. Χρησιμοποιήστε wb.Worksheets.Count για να επιβεβαιώσετε τον αναμενόμενο αριθμό φύλλων. Επίσης ελέγξτε ότι το αρχείο XLSX δεν είναι προστατευμένο με κωδικό (τα αρχεία που προστατεύονται με κωδικό δεν υποστηρίζονται αυτή τη στιγμή).

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

DiagnosticEntry.Severity δείχνει Error αλλά HasRepairs είναι false. HasRepairs αντικατοπτρίζει αν μια επισκευή εφαρμόστηκε επιτυχώς, όχι αν εντοπίστηκαν σφάλματα. Μια καταχώρηση σοβαρότητας Error με RepairApplied = false σημαίνει ότι το πρόβλημα εντοπίστηκε αλλά δεν μπόρεσε να επισκευαστεί — θεωρήστε το ως πιθανή προειδοποίηση ακεραιότητας δεδομένων.

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

Μπορώ να φορτώσω ένα αρχείο XLSX από ένα Stream αντί για διαδρομή αρχείου;

Ναι. Ο κατασκευαστής Workbook διαθέτει υπερφορτώσεις που δέχονται ένα αντικείμενο Stream. Περνάτε τη ροή σας μαζί με μια παρουσία LoadOptions εάν απαιτείται φόρτωση ανθεκτική σε σφάλματα.

Η βιβλιοθήκη υποστηρίζει τη φόρτωση αρχείων XLSX με κωδικό πρόσβασης;

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

Πώς μπορώ να ελέγξω ποιο φύλλο είναι ενεργό στο φορτωμένο βιβλίο εργασίας;

Διαβάστε Workbook.Worksheets.ActiveSheetName για να λάβετε το όνομα του φύλλου που ήταν ενεργό τελευταία όταν αποθηκεύτηκε το αρχείο.

Μπορώ να φορτώσω πολλαπλά αρχεία XLSX ταυτόχρονα;

Ναι. Κάθε Workbook παρουσία είναι ανεξάρτητη. Μπορείτε να δημιουργήσετε πολλαπλά Workbook αντικείμενα σε ξεχωριστά νήματα χωρίς κοινή κατάσταση.

Τι συμβαίνει εάν φορτωθεί ένα κελί τύπου και το αποθηκευμένο αποτέλεσμα λείπει;

Cell.StringValue επιστρέφει μια κενή συμβολοσειρά. Cell.Formula εξακολουθεί να επιστρέφει τη συμβολοσειρά τύπου. Η αποθηκευμένη τιμή γεμίζει μόνο όταν το Excel (ή μια συμβατή εφαρμογή) ανοίγει και αποθηκεύει το αρχείο.

Δείτε επίσης

 Ελληνικά