.NET में OOXML पैकेजिंग के साथ कैसे काम करें
एक XLSX फ़ाइल एक Open Packaging Convention (OPC) ZIP आर्काइव है। Aspose.Cells FOSS for .NET अंतर्निहित पैकेज संरचना को 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 को संभालें
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 और IPackageWriter को समझें
IPackageReader एक Read() विधि को परिभाषित करता है OPC पैकेज को पढ़ने के लिए; IPackageWriter एक 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 संरचनात्मक विफलताएँ स्वचालित मरम्मत से परे हैं (जैसे पूरी तरह से गायब content-type मैप)। फ़ाइल को unzip -t file.xlsx के साथ एक वैध ZIP है या नहीं, सत्यापित करें। यदि वैध है, तो यह एन्क्रिप्टेड हो सकती है — पासवर्ड‑संरक्षित फ़ाइलें समर्थित नहीं हैं।
Workbook लोड होते हैं लेकिन कुछ सामग्री गायब है।
Check LoadDiagnostics.Issues को DataLossRisk = true प्रविष्टियों के लिए जांचें। ये संकेत देते हैं कि मरम्मत के दौरान कौन से भाग हटाए गए थे।
Custom IPackageReader कॉल नहीं हो रहा है।
सुनिश्चित करें कि कस्टम रीडर को स्वीकार करने वाला कंस्ट्रक्टर ओवरलोड उपयोग किया गया है। सभी Workbook कंस्ट्रक्टर ओवरलोड कस्टम पैकेज रीडर को स्वीकार नहीं करते।
अक्सर पूछे जाने वाले प्रश्न
मुझे IPackageReader या IPackageWriter कब लागू करना चाहिए?
केवल तब जब आपका स्टोरेज बैकएंड स्थानीय फ़ाइल सिस्टम नहीं है — उदाहरण के लिए, अस्थायी फ़ाइल बनाए बिना क्लाउड स्टोरेज स्ट्रीम से सीधे लोड करना।
क्या PackageModel में असमर्थित भाग सहेजने पर संरक्षित रहते हैं?
UnsupportedParts में गैर‑मानक भागों को वापस लिखे जाने की गारंटी नहीं है। गैर‑मानक भागों की राउंड‑ट्रिप फ़िडेलिटी के लिए, सहेजे गए XLSX को ZIP स्तर पर पोस्ट‑प्रोसेस करें।
PackageStructureException और WorkbookLoadException के बीच क्या अंतर है?
PackageStructureException एक OPC/ZIP स्तर की विफलता है (गुम कंटेंट टाइप, टूटा हुआ रिलेशनशिप)। WorkbookLoadException XLSX XML सामग्री को पार्स करने में उच्च-स्तरीय विफलता है।