Bekerja dengan OOXML Packaging

Bekerja dengan OOXML Packaging

Bekerja dengan OOXML Packaging

File XLSX adalah Open Packaging Convention (OPC) ZIP archive. Aspose.Cells FOSS untuk .NET mengekspos lapisan paket yang mendasari melalui IPackageReader, IPackageWriter, dan PackageModel ini adalah API tingkat rendah yang dimaksudkan untuk diagnostik dan tooling sebagian besar aplikasi hanya menggunakan level tinggi Workbook kelas.


Model Paket

PackageModel mewakili isi logis dari arsip XLSX. Ini mengekspos tiga koleksi: Parts (semua bagian konten), Relationships (Penyingkapan hubungan OPC), dan UnsupportedParts (bagian yang ada dalam file dan tidak diproses perpustakaan). Setiap bagian dijelaskan oleh sebuah PackagePartDescriptor dengan: PartUri, ContentType, dan Category.

using Aspose.Cells_FOSS;

// PackageModel is accessed via PackageLoadContext during custom load flows
// The following illustrates the object structure
// var context = new PackageLoadContext(workbook, packageModel);
// var model = context.Package;
// foreach (var part in model.Parts)
// {
//     Console.WriteLine($"URI={part.PartUri}, Type={part.ContentType}");
// }
// Console.WriteLine("Unsupported parts: " + model.UnsupportedParts.Count);

Catatan:: PackageModel adalah mengisi secara internal saat memuat file XLSX. Instansiasi langsung bukan bagian dari alur kerja tingkat tinggi standar.


IPaketMembaca danIPaketepublikasi

IPackageReader mendefinisikan satu Read() metode untuk membaca paket OPC. IPackageWriter mendefinisikan satu Write() Metode untuk menulis satu. Antarmuka ini diimplementasikan oleh pembaca / penulis berbasis ZIP internal perpustakaan dan dapat disediakan dengan implementasi khusus untuk skenario memori atau penyimpanan awan.

// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }

PackageStructureException

PackageStructureException Dilemparkan ketika struktur paket XLSX secara mendasar tidak valid misalnya, saat hubungan OPC yang diperlukan hilang. Ini memperluas hierarki pengecualian umum dan membawa pesan menggambarkan invarian struktural mana yang dilanggar.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true };

try
{
    var wb = new Workbook("bad.xlsx", opts);
}
catch (PackageStructureException ex)
{
    Console.WriteLine("OPC structure error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Load error: " + ex.Message);
}

Tips dan Praktik Terbaik

  • Penggunaan PackageModel.UnsupportedParts untuk menemukan bagian-bagian non-standar yang mungkin diam-diam jatuh di perjalanan pulang.
  • Tangkap PackageStructureException Selain itu, WorkbookLoadException saat memuat file dari sumber yang tidak dapat diandalkan.
  • Pengelolaan IPackageReader/IPackageWriter antarmuka adalah titik ekstensi; menerapkannya hanya ketika Anda membutuhkan penyimpanan khusus (misalnya loading dari cloud blob tanpa file lokal).
  • Untuk sebagian besar diagnostik, LoadDiagnostics (dapat diakses melalui: Workbook.LoadDiagnosticsJarang diperlukan untuk turun ke lapisan kemasan.

Masalah Umum

IsuPenyebabnyaPerbaiki
PackageStructureException pada bebanHubungan OPC yang diperlukan hilangSet (set) TryRepairPackage = true di dalam LoadOptions; cek LoadDiagnostics.Issues setelah beban
UnsupportedParts tidak kosongFile berisi ekstensi non-standarBagian-bagian ini disimpan secara harfiah kecuali jika mereka hadir saat beban.
Pakaian adat IPackageReader tidak disebutDibawa ke overload konstruktor yang salahMemastikan bahwa LoadOptions atau overload konstruktor menerima pembaca khusus digunakan

FAQ

Apakah saya perlu menggunakan IPackageReader/IPackerWriter untuk pekerjaan spreadsheet normal?

Tidak. Interface ini adalah titik ekstensi untuk skenario lanjutan semua operasi membaca/menulis standar melalui Workbook langsung.

Apakah bagian yang tidak didukung disimpan di save?

Bagian yang tercantum dalam PackageModel.UnsupportedParts Jika keandalan perjalanan bolak-balik untuk bagian non-standar diperlukan, gunakan langkah pasca pemrosesan zip level.

Apa perbedaan antara PackageStructureException dan WorkbookLoadExcept?

PackageStructureException menunjukkan kegagalan tingkat OPC/ZIP (tipe konten yang hilang, hubungan rusak). WorkbookLoadException menunjukkan kegagalan analisis atau semantik tingkat lebih tinggi dalam konten XLSX.


Ringkasan Referensi API

Kelas / AntarmukaDeskripsi
IPackageReaderAntarmuka untuk membaca paket OPC (Read metode)
IPackageWriterAntarmuka untuk menulis paket OPC (Write metode)
PackageLoadContextMengikat a Workbook untuk PackageModel
PackageLoadContext.PackageMengembalikan PackageModel
PackageModel.PartsSemua bagian isi dalam paket
PackageModel.RelationshipsCatatan hubungan OPC
PackageModel.UnsupportedPartsBagian yang tidak diproses oleh perpustakaan
PackagePartDescriptor.PartUriURI OPC untuk bagian tersebut
PackagePartDescriptor.ContentTypeJenis konten MIME bagian
PackagePartDescriptor.CategoryKategori logis (layang kerja, gaya, dll)
PackageStructureExceptionDilemparkan pada pelanggaran struktural OPC
 Bahasa Indonesia