OOXML Paketleme ile .NET'te Nasıl Çalışılır

OOXML Paketleme ile .NET'te Nasıl Çalışılır

Bir XLSX dosyası, Open Packaging Convention (OPC) ZIP arşividir. Aspose.Cells FOSS for .NET, temel paket yapısını PackageModel, PackagePartDescriptor, IPackageReader ve IPackageWriter aracılığıyla ortaya çıkarır. Bunlar, öncelikle tanı ve özel depolama uygulamaları için yararlı olan altyapı düzeyinde API’lerdir. dotnet add package Aspose.Cells_FOSS ile kurun.

Adım Adım Kılavuz

Adım 1: Paketi Yükleyin

dotnet add package Aspose.Cells_FOSS

Adım 2: Ad alanını içe aktar

using Aspose.Cells_FOSS;

Adım 3: PackageStructureException’ı ele al

PackageStructureException, XLSX paketinin geçersiz bir OPC yapısına (ör. gerekli ilişkilerin eksik olması) sahip olması durumunda fırlatılır. Güvenilmeyen kaynaklardan dosya yüklerken WorkbookLoadException ile birlikte yakalayın.

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 IPackageWriter’ı Anlayın

IPackageReader bir OPC paketini okumak için bir Read() yöntemi tanımlar; IPackageWriter bir paket yazmak için bir Write() yöntemi tanımlar. Kütüphane varsayılan ZIP destekli uygulamaları sağlar. Özel uygulamalar, dosya sistemi dışı depolamadan (ör. bulut blobları veya bellek içi tamponlar) yükleme veya kaydetme sırasında sağlanabilir.

// 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)");

Adım 5: Desteklenmeyen Parçaları Kontrol Et

Bir XLSX dosyası yüklenirken, PackageModel.UnsupportedParts kütüphanenin işlemediği bölümleri listeler. Bunlar korunur ancak yorumlanmaz. Modeli incelemek için özel bir yükleme akışı sırasında PackageLoadContext‘e erişin.

// 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.");

Yaygın Sorunlar ve Çözümler

PackageStructureException, TryRepairPackage = true ile bile atılır.
Bazı OPC yapısal hatalar otomatik onarımın ötesindedir (ör. tamamen eksik content-type haritası). Dosyanın unzip -t file.xlsx ile geçerli bir ZIP olup olmadığını doğrulayın. Geçerliyse, şifrelenmiş olabilir — şifre korumalı dosyalar desteklenmez.

Workbook yükleniyor ancak bazı içerikler eksik.
LoadDiagnostics.Issues içinde DataLossRisk = true girişlerini kontrol edin. Bunlar, onarım sırasında atılan bölümleri gösterir.

Özel IPackageReader çağrılmıyor. Özel okuyucuyu kabul eden yapıcı aşırı yüklemesinin kullanıldığından emin olun. Tüm Workbook yapıcı aşırı yüklemeleri özel paket okuyucusunu kabul etmez.

Sıkça Sorulan Sorular

IPackageReader veya IPackageWriter’ı ne zaman uygulamalıyım?

Yalnızca depolama arka ucunuz yerel dosya sistemi olmadığında — örneğin, geçici bir dosya oluşturmadan doğrudan bir bulut depolama akışından yükleme yaparken.

PackageModel’deki desteklenmeyen parçalar kaydetme sırasında korunur mu?

UnsupportedParts içindeki standart dışı bölümler geri yazılacağı garanti edilmez. Standart dışı bölümlerin tur/geri dönüşüm doğruluğu için, kaydedilen XLSX dosyasını ZIP seviyesinde son işlemden geçirin.

PackageStructureException ile WorkbookLoadException arasındaki fark nedir?

PackageStructureException bir OPC/ZIP düzeyinde hatadır (eksik içerik türü, bozuk ilişki). WorkbookLoadException XLSX XML içeriğini ayrıştırırken daha yüksek düzeyde bir hatadır.

Ayrıca Bakınız

 Türkçe