OOXML Paketleme ile Nasıl Çalışılır .NET
XLSX dosyası, Open Packaging Convention (OPC) ZIP arşividir. Aspose.Cells FOSS for .NET temel paket yapısını ortaya çıkarır. PackageModel, PackagePartDescriptor, IPackageReader,ve IPackageWriter.Bu, özellikle teşhis ve özelleştirilmiş depolama uygulamaları için yararlı olan altyapı düzeyindeki API’lerdir. dotnet add package Aspose.Cells_FOSS.
Adım adım rehberlik
Adım 1: Paket yükleme
dotnet add package Aspose.Cells_FOSSAdım 2: Namespace İndir
using Aspose.Cells_FOSS;Adım 3: Paket Yapısı İşleme
PackageStructureException XLSX paketinin geçersiz bir OPC yapısı olduğunda atılır (örneğin gerekli ilişkiler eksikliği). WorkbookLoadException Güvenilmez kaynaklardan dosyaları yüklemek.
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);
}Adım 4: IPackageReader ve IPacketWriter’ı Anlamak
IPackageReader A tanımlaması Read() OPC paketini okumak için yöntem; IPackageWriter A tanımlaması Write() Kütüphane varsayılan ZIP destekli uygulamaları sağlar. özelleştirilmiş uygulamalar yükleme veya dosya sistem olmayan depolama (örneğin bulut blobs veya in-memory buffers) zaman sağlayabilir.
// 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. Destek Edilmemiş Parçaları Kontrol Etme
Bir XLSX dosyasını yüklediğinizde, PackageModel.UnsupportedParts Kütüphane tarafından işlenmemiş parçaları listeler. bunlar korunur ama yorumlanmaz. PackageLoadContext Model kontrolü için özel bir yük akışı sırasında.
// 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.");Toplam Sorunlar ve Çözümler
PackageStructureException Hatta ile atılıyor TryRepairPackage = true. Bazı OPC yapısal eksiklikler otomatik onarımın ötesinde (örneğin, tamamen kaybolan içerik tipi haritası). dosyayı doğrulayın geçerli bir ZIP ile unzip -t file.xlsx.Eğer geçerli ise şifrelenebilir - şifre korumalı dosyalar desteklenmez.
Workbook Yükleme ama bazı içerik eksik. Check LoadDiagnostics.Issues için DataLossRisk = true Bu, onarım sırasında kaybolan parçaları gösterir.
Custom IPackageReader Çağırılmıyor artık. Özelleştirilmiş okuyucu kabul eden yapımcı aşırı yükleme kullanılır. tüm değil Workbook Konstrüksiyon süper yükleme bir paket okuyucu özelleştirilmiş kabul.
Sıkça Sorulan Sorular
IPackageReader veya IPacketingWriter ne zaman kullanmalıyım?
Sadece depolama yedekleme yerel dosya sistemi değilse - örneğin, geçici bir dosyayı oluşturmadan doğrudan bir bulut depoları akışından yüklemek.
Paket Modeli’deki desteklenmemiş parçalar kaydediliyor mu?
Standart olmayan bölümler UnsupportedParts standart olmayan parçaların yuvarlak-trip sadakat için, post-process ZIP seviyesinde kaydedilen XLSX.
PackageStructureException ve WorkbookLoadException arasındaki fark nedir?
PackageStructureException OPC/ZIP düzeyinde bir eksiklik (konteyner türü kaybı, kırık ilişki). WorkbookLoadException XLSX XML içeriğini parselleştirmek için yüksek düzeyde bir başarısızlık.