2010-06-30 3 views
17

NPOI जावा पीओआई प्रोजेक्ट का एक .NET पोर्ट है, जो किसी को माइक्रोसॉफ्ट एक्सेल दस्तावेज़ों के साथ-साथ अन्य कार्यालय प्रारूपों को पढ़ने और लिखने की अनुमति देता है। एनपीओआई 1.2.2 ने 'ऑटोोज़ाइजिंग' कॉलम के लिए समर्थन प्रस्तुत किया है, जिससे कॉलम कॉलम में सबसे व्यापक सेल एंट्री की चौड़ाई पर सेट है। हालांकि, कई रिपोर्टें हैं कि यह काम नहीं करती है। तो क्या यह संभव है?एनपीओआई के साथ बनाए गए एक्सेल दस्तावेज़ों में स्तंभों को 'ऑटोोज़ाइज' पर कैसे सेट किया जा सकता है?

+0

मेरे अनुभव में 'mySheet.AutoSizeColumn (कॉलम इंडेक्स);' प्रकार का उपयोग काम करता है लेकिन सभी मामलों में नहीं। यदि आपके पास फ़िल्टर के साथ तालिका के रूप में स्वरूपित कॉलम है, तो आप Excel के भीतर ऑटो-आकार को डबल-क्लिक करके चौड़ाई पर क्लिक करते हैं, जबकि पुल-डाउन आइकन पर फ़िल्टर की क्षतिपूर्ति करते हैं। कोड संस्करण फ़िल्टर आइकन को अनदेखा करता है। यह अंतिम कॉलम पर अच्छी तरह से काम नहीं करता है, जो डेटा या कॉलम के साथ एक निश्चित अधिकतम चौड़ाई से अधिक है जो ऑटोसाइज करता है। – cusman

उत्तर

30

मैंने इसे सिर्फ उत्तर देने के लिए पोस्ट किया है, ताकि एक रिकॉर्ड प्रदान किया जा सके। यह एनपीओआई का उपयोग करके कॉलम को स्वत: अनुकूलित करने के लिए संभव है, लेकिन आपको पंक्तियों की बजाय कॉलम में सभी डेटा जोड़ना होगा। एक बार सभी कक्षों को कॉलम @ कॉलम इंडेक्स में जोड़ा गया है, फिर आप

mySheet.AutoSizeColumn(columnIndex) 

पर कॉल करें और अगले कॉलम पर जाएं। मुझे इस कार्यक्षमता को काम करने का कोई और तरीका नहीं मिला है।

+1

मैंने सुझाव दिया है कि मैंने "कॉलम में" डेटा नहीं जोड़ा है, लेकिन विधि 'ऑटोसाइज कॉलम (कॉलम इंडेक्स)' ने मेरे लिए पूरी तरह से काम किया है। – JohnB

+0

विषम। वही संस्करण? – Yellowfog

+0

मुझे लगता है कि यह एक बग होना चाहिए जो बाद के संस्करण में तय किया गया था क्योंकि मैं अपने सभी डेटा पंक्तियों के रूप में जोड़ता हूं और उपर्युक्त विधि का उपयोग करता हूं। –

3

जैसा कि पहले ही Yellowfog ने संकेत दिया निम्नलिखित

mySheet.AutoSizeColumn(columnIndex) 

हालांकि कुछ abiguity पदों में प्रकट होता है काम करेंगे। यह एक विधि है कि केवल काम करता है के बाद आप डेटा डाल देने के बाद हो रहा है, शैली आदि तो है कि इस

ISheet mySheet = hssfworkbook.CreateSheet("sheet1"); 
IRow row = mySheet.CreateRow(0); 
ICell cell = row.CreateCell(0); 
cell.SetCellValue("foo"); 
mySheet.AutoSizeColumn(0); 

कार्य करेगी, लेकिन (इसके खिलाफ स्वत: आकार की कोई जानकारी नहीं है क्योंकि) निम्नलिखित कोई प्रभाव नहीं पड़ेगा

ISheet mySheet = hssfworkbook.CreateSheet("sheet1"); 
mySheet.AutoSizeColumn(0); 
IRow row = mySheet.CreateRow(0); 
ICell cell = row.CreateCell(0); 
cell.SetCellValue("foo"); 
संबंधित मुद्दे