Cara Bekerja dengan OOXML Packaging di .NET

Cara Bekerja dengan OOXML Packaging di .NET

File XLSX adalah Open Packaging Convention (OPC) ZIP archive. Aspose.Cells FOSS untuk .NET mengekspos struktur paket yang mendasari melalui PackageModel, PackagePartDescriptor, IPackageReader, dan IPackageWriter.Ini adalah API tingkat infrastruktur yang terutama berguna untuk diagnostik dan implementasi penyimpanan khusus. Instal dengan dotnet add package Aspose.Cells_FOSS.

Panduan Langkah-Langkah

Langkah 1: Instalasi paket

dotnet add package Aspose.Cells_FOSS

Langkah 2: Impor ruang nama

using Aspose.Cells_FOSS;

Langkah 3: Mengatasi PaketStructureException

PackageStructureException di-toss saat paket XLSX memiliki struktur OPC yang tidak valid (misalnya, hubungan yang diperlukan hilang). Tangkaplah disampingnya. WorkbookLoadException saat memuat file dari sumber yang tidak dapat diandalkan.

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);
}

Langkah 4: Memahami IPackageReader dan IP ackageguritan

IPackageReader mendefinisikan a Read() metode untuk membaca paket OPC; IPackageWriter mendefinisikan a Write() Metode untuk menulis satu. Perpustakaan menyediakan implementasi yang didukung ZIP default. Implementasi kustom dapat disediakan saat memuat dari atau menyimpan ke penyimpanan non-filesystem (misalnya cloud blobs atau buffer in-memori).

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

Langkah 5: Periksa untuk Bagian yang Tidak Didukung

Saat memuat file XLSX, PackageModel.UnsupportedParts daftar bagian yang tidak diproses perpustakaan. ini disimpan tetapi tidak ditafsirkan. Akses PackageLoadContext selama aliran beban khusus untuk memeriksa model.

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

Masalah dan Fixes Umum

PackageStructureException dilemparkan bahkan dengan TryRepairPackage = true. Beberapa kegagalan struktural OPC tidak dapat diperbaiki secara otomatis (misalnya, peta jenis konten yang hilang sepenuhnya). Verifikasi file adalah ZIP yang valid dengan unzip -t file.xlsx.Jika valid, mungkin terenkripsi File yang dilindungi kata sandi tidak didukung.

Workbook tapi beberapa konten hilang. Check LoadDiagnostics.Issues untuk DataLossRisk = true Ini menunjukkan bagian yang jatuh selama perbaikan.

Custom IPackageReader tidak dipanggil. Pastikan konstruksi overload yang menerima pembaca kustom digunakan. Tidak semua Workbook Konstruktor overloads menerima paket pembaca khusus.

Pertanyaan yang sering ditanya

Kapan saya harus menerapkan IPackageReader atau IP ackagewriter?

Hanya ketika backend penyimpanan Anda bukan sistem file lokal misalnya, loading langsung dari aliran penyimpanan cloud tanpa membuat file sementara.

Apakah bagian yang tidak didukung di PackageModel disimpan pada save?

Bagian-bagian non standar dalam UnsupportedParts Untuk keandalan perjalanan pulang-pergi bagian non-standar, post-process XLSX yang disimpan di tingkat ZIP.

Apa perbedaan antara PackageStructureException dan WorkbookLoadExcept?

PackageStructureException adalah kegagalan tingkat OPC/ZIP (tipe konten yang hilang, hubungan rusak). WorkbookLoadException adalah kegagalan tingkat yang lebih tinggi dalam menganalisis konten XML XLSX.

See Also

 Bahasa Indonesia