OOXML पैकेजिंग के साथ काम करना

OOXML पैकेजिंग के साथ काम करना

OOXML पैकेजिंग के साथ काम करना

एक XLSX फ़ाइल एक Open Packaging Convention (OPC) ZIP आर्काइव है। Aspose.Cells FOSS for .NET अंतर्निहित पैकेज लेयर को IPackageReader, IPackageWriter, और PackageModel ऑब्जेक्ट ग्राफ़ के माध्यम से उजागर करता है। ये लो-लेवल APIs हैं जो निदान और टूलिंग के लिए अभिप्रेत हैं — अधिकांश अनुप्रयोग केवल हाई-लेवल Workbook क्लास का उपयोग करते हैं।


पैकेज मॉडल

PackageModel एक XLSX आर्काइव की तार्किक सामग्री का प्रतिनिधित्व करता है। यह तीन संग्रह उजागर करता है: Parts (सभी सामग्री भाग), Relationships (OPC रिलेशनशिप एंट्रीज़), और UnsupportedParts (फ़ाइल में मौजूद भाग जो लाइब्रेरी प्रोसेस नहीं करती)। प्रत्येक भाग को PackagePartDescriptor द्वारा PartUri, ContentType, और 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 XLSX फ़ाइल लोड करने पर यह आंतरिक रूप से भरा जाता है। प्रत्यक्ष इंस्टेंशिएशन मानक उच्च-स्तरीय वर्कफ़्लो का हिस्सा नहीं है।


IPackageReader और IPackageWriter

IPackageReader OPC पैकेज को पढ़ने के लिए एकल Read() मेथड को परिभाषित करता है। IPackageWriter एक लिखने के लिए एकल Write() मेथड को परिभाषित करता है। ये इंटरफ़ेस लाइब्रेरी के आंतरिक ZIP-आधारित रीडर/राइटर द्वारा लागू किए गए हैं और इन्हें इन-मेमोरी या क्लाउड-स्टोरेज परिदृश्यों के लिए कस्टम इम्प्लीमेंटेशन द्वारा सप्लाई किया जा सकता है।

// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }

PackageStructureException

PackageStructureException तब फेंका जाता है जब XLSX पैकेज संरचना मूल रूप से अमान्य होती है — उदाहरण के लिए, जब आवश्यक OPC रिलेशनशिप्स गायब होते हैं। यह सामान्य अपवाद पदानुक्रम को विस्तारित करता है और एक संदेश ले जाता है जो बताता है कि कौन सा संरचनात्मक अपरिवर्तनीय नियम उल्लंघन किया गया।

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);
}

सलाह और सर्वोत्तम प्रथाएँ

  • राउंड-ट्रिप पर चुपचाप हटाए जा सकने वाले गैर-मानक भागों की खोज के लिए PackageModel.UnsupportedParts का उपयोग करें।
  • अविश्वसनीय स्रोतों से फ़ाइलें लोड करते समय WorkbookLoadException के साथ-साथ PackageStructureException को भी पकड़ें।
  • IPackageReader/IPackageWriter इंटरफ़ेस विस्तार बिंदु हैं; इन्हें केवल तभी लागू करें जब आपको कस्टम स्टोरेज की आवश्यकता हो (जैसे, स्थानीय फ़ाइल के बिना क्लाउड ब्लॉब से लोड करना)।
  • अधिकांश निदान के लिए, LoadDiagnostics (Workbook.LoadDiagnostics के माध्यम से सुलभ) पर्याप्त है — पैकेज लेयर तक नीचे उतरना बहुत कम आवश्यक होता है।

सामान्य समस्याएँ

समस्याकारणसमाधान
PackageStructureException लोड परआवश्यक OPC रिलेशनशिप गायब हैLoadOptions में TryRepairPackage = true सेट करें; लोड के बाद LoadDiagnostics.Issues जाँचें
UnsupportedParts खाली नहींफ़ाइल में गैर-मानक एक्सटेंशन हैंयदि ये भाग लोड पर मौजूद थे, तो इन्हें सहेजते समय शब्दशः संरक्षित रखा जाता है
कस्टम IPackageReader नहीं बुलाया गयागलत कंस्ट्रक्टर ओवरलोड को पास किया गयासुनिश्चित करें कि LoadOptions या वह कंस्ट्रक्टर ओवरलोड जो कस्टम रीडर को स्वीकार करता है, उपयोग किया गया है

FAQ

क्या सामान्य स्प्रेडशीट कार्य के लिए मुझे IPackageReader/IPackageWriter का उपयोग करना आवश्यक है?

नहीं। ये इंटरफ़ेस उन्नत परिदृश्यों के लिए विस्तार बिंदु हैं। सभी मानक पढ़ने/लिखने के कार्य सीधे Workbook के माध्यम से होते हैं।

क्या असमर्थित भागों को सहेजते समय संरक्षित रखा जाता है?

PackageModel.UnsupportedParts में सूचीबद्ध भागों को प्रोसेस नहीं किया जाता और संभवतः वापस नहीं लिखा जा सकता। यदि गैर-मानक भागों के लिए राउंड-ट्रिप सटीकता आवश्यक है, तो एक zip-स्तर की पोस्ट-प्रोसेसिंग चरण का उपयोग करें।

PackageStructureException और WorkbookLoadException में क्या अंतर है?

PackageStructureException एक OPC/ZIP-स्तर की विफलता दर्शाता है (गैर-मौजूद कंटेंट टाइप, टूटे हुए रिलेशनशिप)। WorkbookLoadException XLSX सामग्री में उच्च-स्तर की पार्स या अर्थपूर्ण विफलता को दर्शाता है।


API Reference सारांश

क्लास / इंटरफ़ेसविवरण
IPackageReaderOPC पैकेज को पढ़ने के लिए इंटरफ़ेस (Read मेथड)
IPackageWriterOPC पैकेज लिखने के लिए इंटरफ़ेस (Write मेथड)
PackageLoadContextएक Workbook को उसके PackageModel से बाँधता है
PackageLoadContext.PackagePackageModel को लौटाता है
PackageModel.Partsपैकेज में सभी सामग्री भाग
PackageModel.RelationshipsOPC संबंध प्रविष्टियाँ
PackageModel.UnsupportedPartsलाइब्रेरी द्वारा प्रोसेस नहीं किए गए भाग
PackagePartDescriptor.PartUriभाग के लिए OPC URI
PackagePartDescriptor.ContentTypeभाग का MIME कंटेंट टाइप
PackagePartDescriptor.Categoryतार्किक श्रेणी (वर्कशीट, स्टाइल्स, आदि)
PackageStructureExceptionOPC संरचनात्मक उल्लंघनों पर फेंका जाता है

यह भी देखें

 हिन्दी