כיצד לעבוד עם OOXML אריזה ב .NET

כיצד לעבוד עם OOXML אריזה ב .NET

קובץ XLSX הוא ארכיון ZIP של Open Packaging Convention (OPC). Aspose.Cells FOSS for .NET מציג את מבנה החבילה הבסיסית באמצעות PackageModel, PackagePartDescriptor, IPackageReader, ו IPackageWriter.אלה הם APIs ברמת תשתית שימושיים בעיקר עבור אבחון ויישומים אחסון מותאמים אישית. dotnet add package Aspose.Cells_FOSS.

הדרכה שלב אחר צעד

שלב 1: התקנת החבילה

dotnet add package Aspose.Cells_FOSS

שלב 2: ייצוא Namespace

using Aspose.Cells_FOSS;

שלב 3: ניהול חבילות מבנה

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 ו- IPacketWriter

IPackageReader הגדרה A Read() שיטת קריאה של חבילת OPC; IPackageWriter הגדרה A Write() הספרייה מספקת יישומים מבוססים ZIP בראשונה. יישום מותאם אישית ניתן לספק בעת הטעינה או אחסון לא-קובץ מערכת אחזקה (לדוגמה, ענן בלובים או בופרים זיכרון).

// 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 אלה מצביעים על חלקים שנפלו במהלך התיקון.

Custom IPackageReader לא מתקשר אליו. להבטיח כי המוצר העומס שהקבל את הקורא מותאם אישית הוא בשימוש. Workbook יצרן העומס מקבל קורא חבילה מותאם אישית.

שאלות נפוצות שואלים

מתי כדאי ליישם את IPackageReader או IPacageWriter?

רק כאשר אחסון האחסון שלך הוא לא מערכת הקבצים המקומית - למשל, להעלות ישירות מתוך זרם אחסן ענן ללא יצירת קובץ זמני.

האם חלקים שאינם נתמכים בחבילה נשמרים?

חלקים לא סטנדרטיים UnsupportedParts עבור סביב-טריפ של נאמנות של חלקים שאינם סטנדרטיים, לאחר תהליך שוחרר XLSX ברמה ZIP.

מה ההבדל בין PackageStructureException ו- WorkbookLoadExcept?

PackageStructureException • כישלון ברמת OPC/ZIP (יעדר סוג תוכן, יחסים שבורים). WorkbookLoadException זהו כישלון ברמה גבוהה יותר בהפרשנות תוכן XML XLSX.

ראה גם

 עברית