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 PackageStructureException Ngoài ra còn WorkbookLoadException Khi tải các tập tin từ nguồn không đáng tin cậy.
  • Các IPackageReader/IPackageWriter giao 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 qua Workbook.LoadDiagnostics) là đủ - ngã xuống lớp gói hiếm khi cần thiết.

Các vấn đề thường gặp

IssueCauseFix Đặt
PackageStructureException trên tảiMất mối quan hệ OPCSet Đặt TryRepairPackage = true trong LoadOptions;· Kiểm tra LoadDiagnostics.Issues sau khi tải
UnsupportedParts Không trốngFile chứa các phần mở rộng không chuẩnNhữ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ọiChuyể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 / InterfaceDescription
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)
PackageLoadContextliên kết a Workbook cho nó PackageModel
PackageLoadContext.PackageTrở lại The PackageModel
PackageModel.PartsTất cả các phần nội dung trong gói
PackageModel.RelationshipsOPC liên hệ nhập cảnh
PackageModel.UnsupportedPartsCác phần không được xử lý bởi thư viện
PackagePartDescriptor.PartUriOPC URI cho phần
PackagePartDescriptor.ContentTypeMIME nội dung loại phần
PackagePartDescriptor.CategoryThể loại logic (phần làm việc, phong cách, vv)
PackageStructureExceptionNhững vi phạm cấu trúc của OPC

See Also

 Tiếng Việt