Công việc với OOXML Packaging
Công việc với OOXML Packaging
Một tệp XLSX là một Open Packaging Convention (OPC) ZIP lưu trữ. Aspose.Cells FOSS for .NET tiết lộ lớp gói dưới đây thông qua IPackageReader, IPackageWriter,Và The PackageModel Đây là các APIs cấp thấp được thiết kế cho chẩn đoán và công cụ - hầu hết các ứng dụng chỉ sử dụng mức cao. Workbook lớp .
Mô hình gói
PackageModel đại diện cho nội dung logic của một tập tin XLSX. Nó trình bày ba bộ sưu tập: Parts (Tất cả các phần nội dung), Relationships (Các liên kết OPC) và UnsupportedParts (một phần trong tệp mà thư viện không xử lý). mỗi phần được mô tả bởi một PackagePartDescriptor Với PartUri, ContentType, và 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);Note:
PackageModelđược dân số hóa nội bộ khi tải một tệp XLSX. Instantiation trực tiếp không phải là một phần của dòng công việc tiêu chuẩn cấp cao.
IPackageReader và IPacketWriter
IPackageReader Định nghĩa một đơn Read() Cách đọc gói OPC. IPackageWriter Định nghĩa một đơn Write() Các giao diện này được thực hiện bởi người đọc/tác giả dựa trên ZIP nội bộ của thư viện và có thể được cung cấp bằng các ứng dụng tùy chỉnh cho kịch bản lưu trữ trong bộ nhớ hoặc đám mây.
// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }PackageStructureException
PackageStructureException được ném khi cấu trúc gói XLSX là cơ bản không có hiệu lực - ví dụ, khi các mối quan hệ OPC cần thiết bị thiếu. nó mở rộng hiến pháp ngoại lệ chung và mang lại một thông điệp mô tả bất kỳ biến thể cấu hình nào đã bị vi phạm.
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);
}Mẹo và Thực hành Tốt nhất
- Sử dụng
PackageModel.UnsupportedPartsđể khám phá các bộ phận không chuẩn mà có thể bị rơi im lặng trên đường vòng. - Catch
PackageStructureExceptionNgoài ra cònWorkbookLoadExceptionKhi tải các tập tin từ nguồn không đáng tin cậy. - Các
IPackageReader/IPackageWritergiao diện là các điểm mở rộng; chỉ thực hiện chúng khi bạn cần lưu trữ tùy chỉnh (ví dụ: tải từ một đám mây mà không có tệp địa phương). - Đối với hầu hết các chẩn đoán,
LoadDiagnostics(được truy cập quaWorkbook.LoadDiagnostics) là đủ - ngã xuống lớp gói hiếm khi cần thiết.
Các vấn đề thường gặp
| Issue | Cause | Fix Đặt |
|---|---|---|
PackageStructureException trên tải | Mất mối quan hệ OPC | Set Đặt TryRepairPackage = true trong LoadOptions;· Kiểm tra LoadDiagnostics.Issues sau khi tải |
UnsupportedParts Không trống | File chứa các phần mở rộng không chuẩn | Những bộ phận này được giữ verbatim trên lưu trữ nếu chúng có mặt tại tải |
Custom IPackageReader Không được kêu gọi | Chuyển sang lỗi nhà xây dựng quá tải | đảm bảo rằng LoadOptions hoặc quá tải xây dựng chấp nhận người đọc tùy chỉnh được sử dụng |
FAQ
Tôi có cần sử dụng IPackageReader/IPackagesWriter để làm việc bình thường?
Không. Các giao diện này là điểm mở rộng cho các kịch bản tiên tiến. Tất cả các hoạt động đọc/tự viết tiêu chuẩn đều được thực hiện qua Workbook trực tiếp .
Các bộ phận không được hỗ trợ có được bảo tồn?
Các phần được liệt kê trong PackageModel.UnsupportedParts không được xử lý và có thể không viết lại. Nếu sự trung thành vòng tròn cho các bộ phận không tiêu chuẩn là cần thiết, sử dụng một bước post-processing cấp zip.
Sự khác biệt giữa PackageStructureException và WorkbookLoadExcept là gì?
PackageStructureException - chỉ ra một thất bại ở mức OPC/ZIP (trong dạng nội dung, mối quan hệ bị hỏng). WorkbookLoadException - chỉ ra một sự thất bại hoặc nhầm lẫn ở cấp độ cao hơn trong nội dung XLSX.
Tóm tắt Tham chiếu API
| lớp / Interface | Description |
|---|---|
IPackageReader | - Đọc một gói OPC (Read Phương pháp) |
IPackageWriter | - Tính năng của các gói OPC (Write Phương pháp) |
PackageLoadContext | liên kết a Workbook cho nó PackageModel |
PackageLoadContext.Package | Trở lại The PackageModel |
PackageModel.Parts | Tất cả các phần nội dung trong gói |
PackageModel.Relationships | OPC liên hệ nhập cảnh |
PackageModel.UnsupportedParts | Các phần không được xử lý bởi thư viện |
PackagePartDescriptor.PartUri | OPC URI cho phần |
PackagePartDescriptor.ContentType | MIME nội dung loại phần |
PackagePartDescriptor.Category | Thể loại logic (phần làm việc, phong cách, vv) |
PackageStructureException | Những vi phạm cấu trúc của OPC |