.NET에서 OOXML 포장 작업을 수행하는 방법
XLSX 파일은 Open Packaging Convention (OPC) ZIP 아카이브입니다. .NET을 위한 Aspose.Cells FOSS는 기본 패키지 구조를 보여줍니다. PackageModel, PackagePartDescriptor, IPackageReader,그리고, 그리고 IPackageWriter.이들은 인프라 수준의 API가 주로 진단 및 사용자 지정 저장 실행에 유용합니다. dotnet add package Aspose.Cells_FOSS.
단계별 가이드
단계 1 : 패키지를 설치합니다.
dotnet add package Aspose.Cells_FOSS단계 2 : 이름 공간을 가져오기
using Aspose.Cells_FOSS;단계 3: 패키지 구조를 처리하십시오.
PackageStructureException XLSX 패키지에 불법 OPC 구조가 있는 경우 던져집니다 (예를 들어, 필요한 관계가 없어집니까). WorkbookLoadException 신뢰할 수 없는 출처에서 파일을 업로드하는 경우.
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);
}단계 4: IPackageReader 및 IPacketWriter를 이해하십시오.
IPackageReader A 정의 Read() OPC 패키지를 읽는 방법; IPackageWriter A 정의 Write() 도서관은 기본적으로 ZIP 지원 구현을 제공합니다. 사용자 지정 구축은 로딩에서 또는 파일 시스템이 아닌 저장소 (예를 들어, 클라우드 블로브 또는 메모리 뷔퍼)에 저장을 할 때 제공 될 수 있습니다.
// 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)");5단계: 지원되지 않은 부품을 확인합니다.
XLSX 파일을 업로드할 때, PackageModel.UnsupportedParts 도서관이 처리하지 않는 부분 목록.이 부분은 보존되지만 해석되지 않습니다. PackageLoadContext 모델을 검사하기 위해 사용자 지정 로드 흐름 중.
// 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.");일반적인 문제와 해결책
PackageStructureException 던져진 것과 함께도 TryRepairPackage = true. 일부 OPC 구조적 오류는 자동 수리 (예 : 완전히 실종 된 콘텐츠 유형 지도)를 넘어서고 있습니다. unzip -t file.xlsx.유효한 경우 암호화 될 수 있습니다 - 암시 보호 파일은 지원되지 않습니다.
Workbook 녹음이지만 일부 콘텐츠가 부족합니다. 확인하기 LoadDiagnostics.Issues 를 위해서 DataLossRisk = true 이 문서는 수리 중에 떨어진 부분을 나타냅니다.
Custom에 대하여 IPackageReader 전화를 받지 못하고 있다. 사용자 지정 리더를 받아들이는 건축가의 과잉 부하가 사용되는지 확인합니다. Workbook 건축기 과로드는 사용자 지정 패키지 리더를 받아 들인다.
자주 묻는 질문들
IPackageReader 또는 IPACKAGEWriter를 언제 실행해야합니까?
저장소 백업이 지역 파일 시스템이 아닌 경우에만 - 예를 들어, 일시적인 파일을 만들지 않고 클라우드 스토리지 스트림에서 직접 로딩.
PackageModel의 지원되지 않은 부품은 저장된 상태에 보존되어 있습니까?
안정적인 부분에 대한 UnsupportedParts 안정적인 부품의 둥근 트리플 충성, 후 프로세스 저장 XLSX ZIP 수준에서.
PackageStructureException과 WorkbookLoadException의 차이점은 무엇입니까?
PackageStructureException OPC/ZIP 수준의 실패(소재 유형, 깨진 관계). WorkbookLoadException XLSX XML 콘텐츠를 파싱하는 데 높은 수준의 실패입니다.