כיצד לטעון גיליון אלקטרוני ב‑.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 מזרם במקום נתיב קובץ?

כן. הבונה Workbook כולל עומסים שמקבלים אובייקט Stream. העבר את הזרם שלך יחד עם מופע LoadOptions אם נדרש טעינה עמידה לתקלות.

האם הספרייה תומכת בטעינת קבצי XLSX המוגנים בסיסמה?

קבצים המוגנים בסיסמה אינם חלק מממשק ה‑API הנוכחי. ניסיון לטעון אחד יגרום לשגיאה WorkbookLoadException.

איך לבדוק איזו גיליון הוא הפעיל בחוברת העבודה שהוטענה?

קרא Workbook.Worksheets.ActiveSheetName כדי לקבל את שם הגיליון שהיה פעיל לאחרונה כאשר הקובץ נשמר.

האם אני יכול לטעון קבצי XLSX מרובים במקביל?

כן. כל מופע Workbook הוא עצמאי. אתה יכול ליצור מופעים מרובים של Workbook על חוטים נפרדים ללא מצב משותף.

מה קורה אם תא פורמולה נטען והתוצאה המוטמעת חסרה?

Cell.StringValue מחזיר מחרוזת ריקה. Cell.Formula עדיין מחזיר את מחרוזת הנוסחה. הערך המוטמן מתמלא רק כאשר Excel (או יישום תואם) פותח ושומר את הקובץ.

ראה גם

 עברית