टेबल्स के साथ काम करना
टेबल्स के साथ काम करना
टेबल्स में Aspose.Words FOSS के लिए .NET द्वारा प्रदर्शित किया जाता है Aspose.Words.Tables namespace: Table, Row, और Cell तीन-स्तरीय सम्मिलित नोड पदानुक्रम बनाते हैं जो दस्तावेज़ वृक्ष में पैराग्राफ़ के साथ स्थित होता है। यह पृष्ठ तालिकाएँ बनाते समय , पंक्तियों और कोशिकाओं को स्वरूपित करने, तालिका-व्यापी लेआउट को नियंत्रित करने, और कोशिकाओं को मिलाने के बारे में कवर करता है। DocumentBuilder,समस्या.
टेबल ऑब्जेक्ट मॉडल
एक Table एक CompositeNode है जिसमें Row नोड्स होते हैं, और प्रत्येक Row एक CompositeNode है जिसमें Cell नोड्स होते हैं; एक Cell बदले में पैराग्राफ़ और संभावित रूप से नेस्टेड टेबल्स रखता है। Table.Rows एक RowCollection लौटाता है, Row.Cells एक CellCollection लौटाता है, और एक Body या अन्य Story अपने Tables प्रॉपर्टी, एक TableCollection के माध्यम से उसमें मौजूद हर शीर्ष-स्तरीय टेबल को उजागर करता है। सभी तीन संग्रह Add(), Insert(), Remove(), RemoveAt(), Contains(), और IndexOf() को समर्थन देते हैं। Table.EnsureMinimum(), Row.EnsureMinimum(), और Cell.EnsureMinimum() क्रमशः उस प्रकार के नोड को आवश्यक सबसे छोटा वैध सामग्री (एक खाली पंक्ति, एक खाली कोशिका, या एक खाली पैराग्राफ) भरते हैं, जब प्रोग्रामेटिक संपादन के बाद वह अनुपलब्ध रह जाता है।
DocumentBuilder के साथ टेबल बनाना
DocumentBuilder.StartTable() कर्सर पर एक नई टेबल शुरू करता है, InsertCell() वर्तमान पंक्ति में एक कोशिका जोड़ता है, EndRow() वर्तमान पंक्ति को बंद करता है, और EndTable() टेबल को बंद करता है। InsertCell() या EndRow() को कॉल करने से पहले DocumentBuilder.CellFormat और DocumentBuilder.RowFormat सेट करें ताकि कोशिकाओं और पंक्तियों पर बनते समय डिफ़ॉल्ट स्वरूप लागू हो सके — ये प्रॉपर्टी अगले सम्मिलित सामग्री के लिए एक टेम्पलेट के रूप में कार्य करती हैं, न कि दस्तावेज़ में पहले से मौजूद कोशिकाओं में retroactive बदलाव।
कोशिका और पंक्ति स्वरूपण
Cell.CellFormat एक CellFormat उदाहरण है (Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth, LeftPadding, RightPadding, TopPadding, BottomPadding, HideMark, Orientation) जिसमें ClearFormatting() इसे रीसेट करने के लिए और SetPaddings() सभी चार सेल पैडिंग्स को एक साथ सेट करने के लिए है। Row.RowFormat एक RowFormat उदाहरण है (Borders, Height, HeightRule, AllowBreakAcrossPages, HeadingFormat) जिसके पास अपना ClearFormatting() है।
टेबल-व्यापी फ़ॉर्मैटिंग और AutoFit
Table स्वयं लेआउट गुणों को उजागर करता है – Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions), TextWrapping, और पहुँच योग्य मेटाडेटा Title और Description के माध्यम से। Table.AutoFit(AutoFitBehavior) दिए गए व्यवहार के अनुसार तालिका और उसकी कोशिकाओं का आकार बदलता है। SetBorder() एक बॉर्डर साइड सेट करता है और SetBorders() पूरे टेबल में सभी बॉर्डर को समान लाइन शैली, चौड़ाई, और रंग में सेट करता है; ClearBorders() और ClearShading() उन्हें रीसेट करते हैं। ConvertToHorizontallyMergedCells() उन कोशिकाओं को बदलता है जो समान चौड़ाई से मर्ज की गई थीं, उन्हें स्पष्ट रूप से HorizontalMerge के साथ चिन्हित कोशिकाओं में बदल देता है।
पसंदीदा और सेल चौड़ाइयाँ
PreferredWidth एक चौड़ाई और उसकी इकाई का प्रतिनिधित्व करता है, जिसे स्थिर फ़ैक्टरी मेथड्स PreferredWidth.FromPercent() या PreferredWidth.FromPoints() से बनाया जाता है; PreferredWidthType पहचानता है कि किसी दिए गए PreferredWidth में कौन सा प्रकार का मान (Auto, Percent, या Points) है। Table.PreferredWidth और CellFormat.PreferredWidth दोनों इन मानों को स्वीकार करते हैं।
मर्ज्ड सेल्स
CellFormat.HorizontalMerge और CellFormat.VerticalMerge (CellMerge) दर्शाते हैं कि कोई सेल अपने पड़ोसियों के साथ क्षैतिज या लंबवत मर्ज में कैसे भाग लेता है। CellVerticalAlignment कंटेंट को सेल के भीतर लंबवत रूप से कैसे संरेखित किया जाए, इसे नियंत्रित करता है, चाहे कोई भी मर्ज स्थिति हो।
टिप्स और सर्वोत्तम प्रथाएँ
- प्रत्येक
StartTable()को प्रत्येक पंक्ति के लिए मिलते-जुलतेEndRow()और एक अंतिमEndTable()से बंद करें – अनबंद पंक्ति या तालिका बिल्डर की आंतरिक स्थिति (और परिणामी दस्तावेज़ वृक्ष) को विकृत छोड़ देती है। - यदि एक ही तालिका में विभिन्न पंक्तियों या कोशिकाओं को अलग फॉर्मेटिंग चाहिए तो प्रत्येक
InsertCell()याEndRow()कॉल से पहलेDocumentBuilder.CellFormatऔरDocumentBuilder.RowFormatसेट करें; बिल्डर वह लागू करता है जो सम्मिलन के क्षण में वर्तमान में सेट है। - सामग्री को प्रोग्रामेटिकली हटाने के बाद
Table.EnsureMinimum(),Row.EnsureMinimum()याCell.EnsureMinimum()को कॉल करें ताकि नोड Word द्वारा अपेक्षित न्यूनतम वैध संरचना को बनाए रखे। - उन तालिकाओं के लिए
PreferredWidth.FromPercent()का उपयोग करें जिन्हें उपलब्ध पृष्ठ चौड़ाई के अनुसार अनुकूल होना चाहिए, और निश्चित लेआउट चौड़ाई के लिएPreferredWidth.FromPoints()का उपयोग करें। AutoFitBehaviorतब लागू होता है जब आपTable.AutoFit()को कॉल करते हैं – यह आपके द्वारा सामग्री जोड़ने या हटाने के साथ निरंतर पुनः नहीं चलता, इसलिए यदि आपको तालिका को पुनः फिट करने की आवश्यकता है तो महत्वपूर्ण संपादनों के बाद इसे फिर से कॉल करें।
सामान्य समस्याएँ
| Issue | कारण | समाधान |
|---|---|---|
| टेबल विकृत दिखता है या सहेजते समय त्रुटि देता है | एक पंक्ति या टेबल को कभी EndRow() / EndTable() से बंद नहीं किया गया था | हमेशा StartTable() को अंतिम EndTable() के साथ जोड़ेँ, और प्रत्येक पंक्ति को EndRow() से बंद करें |
| नई कोशिकाएँ वह फ़ॉर्मेटिंग नहीं लेतीं जो मैंने सेट की है | CellFormat / RowFormat को निर्माणकर्ता में तब बदल दिया गया जब कोशिकाएँ पहले ही सम्मिलित हो चुकी थीं | उस सामग्री के लिए InsertCell() / EndRow() को कॉल करने से पहले DocumentBuilder.CellFormat / RowFormat सेट करें |
| टेबल वह आकार नहीं बदलता जैसा मैं उम्मीद करता हूँ | AutoFit() कॉल किए जाने के क्षण में टेबल की स्थिति को दर्शाता है, निरंतर नहीं | संरचनात्मक संपादनों के बाद Table.AutoFit(AutoFitBehavior) को फिर से कॉल करें |
| सन्निहित सेल जो मिलती हुई दिखती हैं, अलग-अलग सेल की तरह व्यवहार करती हैं | सेल केवल चौड़ाई के आधार पर मिलाए गए थे, CellMerge के साथ चिह्नित नहीं किए गए | Table.ConvertToHorizontallyMergedCells() को कॉल करें, या CellFormat.HorizontalMerge / VerticalMerge को स्पष्ट रूप से सेट करें |
FAQ
मैं DocumentBuilder के साथ शुरू से एक तालिका कैसे बनाऊँ?
कॉल StartTable(), फिर प्रत्येक पंक्ति में प्रत्येक सेल के लिए InsertCell(), पंक्ति को बंद करने के लिए EndRow(), अतिरिक्त पंक्तियों के लिए दोहराएँ, और अंत में तालिका को बंद करने के लिए EndTable()।
मैं निश्चित चौड़ाई के बजाय प्रतिशत-आधारित तालिका चौड़ाई कैसे सेट करूँ?
Table.PreferredWidth = PreferredWidth.FromPercent(value) को PreferredWidth.FromPoints(value) के बजाय असाइन करें।
मैं सेल या पंक्ति पर सभी फ़ॉर्मेटिंग कैसे रीसेट करूँ?
सेल के CellFormat पर CellFormat.ClearFormatting() कॉल करें, या पंक्ति के RowFormat पर RowFormat.ClearFormatting()।
मैं पूरी तालिका के लिए एक साथ बॉर्डर और शेडिंग कैसे सेट करूँ?
हर पक्ष पर समान बॉर्डर के लिए Table.SetBorders() का उपयोग करें, एक बार में एक पक्ष के लिए Table.SetBorder(), और समान शेडिंग के लिए Table.SetShading(); ClearBorders() और ClearShading() उन्हें रीसेट करते हैं।
API Reference सारांश
| क्लास / एनम | विवरण |
|---|---|
Table | टेबल नोड; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth |
Row | टेबल पंक्ति नोड; Cells, RowFormat, EnsureMinimum() |
Cell | टेबल सेल नोड; CellFormat, EnsureMinimum() |
TableCollection / RowCollection / CellCollection | टाइप्ड संग्रह Table / Row / Cell नोड्स |
CellFormat | प्रति-सेल फ़ॉर्मेटिंग: बॉर्डर, शेडिंग, पैडिंग, मर्ज स्टेट, वर्टिकल अलाइमेंट |
RowFormat | प्रति-रो फ़ॉर्मेटिंग: बॉर्डर, ऊँचाई, पेज-ब्रेक व्यवहार |
PreferredWidth / PreferredWidthType | टेबल या सेल की चौड़ाई का मान और उसकी इकाई (auto, percent, points) |
AutoFitBehavior | कैसे Table.AutoFit() टेबल और उसकी कोशिकाओं के आकार को बदलता है |
CellMerge / CellVerticalAlignment | क्षैतिज/ऊर्ध्वाधर सेल-मर्ज स्थिति और ऊर्ध्वाधर सामग्री संरेखण |
TableAlignment / TableStyleOptions / TextWrapping | टेबल-व्यापी संरेखण, शैली लागू करना, और टेक्स्ट-रैप व्यवहार |
DocumentBuilder.StartTable / InsertCell / EndRow / EndTable | कर्सर-आधारित तालिका निर्माण |