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::
PackageModeladalah 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.UnsupportedPartsuntuk menemukan bagian-bagian non-standar yang mungkin diam-diam jatuh di perjalanan pulang. - Tangkap
PackageStructureExceptionSelain itu,WorkbookLoadExceptionsaat memuat file dari sumber yang tidak dapat diandalkan. - Pengelolaan
IPackageReader/IPackageWriterantarmuka 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
| Isu | Penyebabnya | Perbaiki |
|---|---|---|
PackageStructureException pada beban | Hubungan OPC yang diperlukan hilang | Set (set) TryRepairPackage = true di dalam LoadOptions; cek LoadDiagnostics.Issues setelah beban |
UnsupportedParts tidak kosong | File berisi ekstensi non-standar | Bagian-bagian ini disimpan secara harfiah kecuali jika mereka hadir saat beban. |
Pakaian adat IPackageReader tidak disebut | Dibawa ke overload konstruktor yang salah | Memastikan 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 / Antarmuka | Deskripsi |
|---|---|
IPackageReader | Antarmuka untuk membaca paket OPC (Read metode) |
IPackageWriter | Antarmuka untuk menulis paket OPC (Write metode) |
PackageLoadContext | Mengikat a Workbook untuk PackageModel |
PackageLoadContext.Package | Mengembalikan PackageModel |
PackageModel.Parts | Semua bagian isi dalam paket |
PackageModel.Relationships | Catatan hubungan OPC |
PackageModel.UnsupportedParts | Bagian yang tidak diproses oleh perpustakaan |
PackagePartDescriptor.PartUri | URI OPC untuk bagian tersebut |
PackagePartDescriptor.ContentType | Jenis konten MIME bagian |
PackagePartDescriptor.Category | Kategori logis (layang kerja, gaya, dll) |
PackageStructureException | Dilemparkan pada pelanggaran struktural OPC |