मैं EPPlus nuget पैकेज का उपयोग करके एक्सेल में एक कॉलम छिपाना चाहता हूं और यह काम नहीं कर रहा है (इसने कॉलम को छिपाया नहीं है)

यह वही है जो मैंने पाया है कि चाल करना चाहिए। शायद कोई बग है?

worksheet.Column(1).Hidden = true;

मैं संस्करण 4.5.2.1 का उपयोग कर रहा हूं

प्रोजेक्ट यूआरएल https://github.com/JanKallman/EPPlus

5
Micah Armantrout 20 जुलाई 2018, 00:52
1
यह बहुत अच्छा होगा यदि आप एक न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य उदाहरण प्रदान कर सकते हैं (प्रश्न के अंदर, लोग आमतौर पर बाहरी क्लिक नहीं करेंगे लिंक)।
 – 
mjwills
20 जुलाई 2018, 00:55
मेरी स्क्रीन बैंगनी हो गई! वास्तव में नहीं। यह कॉलम को छुपाता नहीं है।
 – 
Micah Armantrout
20 जुलाई 2018, 00:59

2 जवाब

सबसे बढ़िया उत्तर

मैं बुला रहा था

worksheet.Cells.AutoFitColumns();

उपरांत

worksheet.Column(1).Hidden = true;
7
Buddy 20 जुलाई 2018, 01:14
तो यह छुपा हटा देता है?
 – 
Captain Prinny
3 जिंदा 2020, 20:45
1
मैंने यही पाया
 – 
Micah Armantrout
4 जिंदा 2020, 02:53

मुझे पूरा यकीन है कि यह एक बग है।

इस लेखन (2019-10-24) के अनुसार, AutoFitColumns में कोड है जो छिपे हुए कॉलम के लिए ऑटो-फिट करने से बचने की कोशिश करता है, लेकिन इसे एक सहायक विधि (SetMinWidth) के बाद निष्पादित किया जाता है जो जाता है न्यूनतम चौड़ाई निर्धारित करने वाले सभी स्तंभों के माध्यम से, और Width सेटर में _hidden को false पर सेट करने का साइड इफेक्ट शामिल है यदि चौड़ाई गैर-शून्य है, जो कि शून्य का उपयोग करते समय होता है- AutoFitColumns का पैरामीटर अधिभार।

यदि आप शून्य की न्यूनतम चौड़ाई में पास करने के लिए AutoFitColumns के 1- या 2-पैरामीटर ओवरलोड का उपयोग करते हैं, तो कॉलम छिपे रहेंगे, लेकिन आपके खाली कॉलम शून्य-चौड़ाई वाले होंगे, इसलिए यह वास्तव में एक वैकल्पिक हल नहीं है।

यहाँ एक विस्तार विधि है जिसका उपयोग मैं अभी के लिए वर्कअराउंड के रूप में कर रहा हूँ:

static void AutoFitColumnsAndRehide(this ExcelRangeBase range)
{
    range.Reset();

    var hiddenColumns = range
        .Select(cell => cell.Start.Column)
        .Distinct()
        .Select(range.Worksheet.Column)
        .Where(column => column.Hidden)
        .ToList();

    range.AutoFitColumns();

    foreach (var column in hiddenColumns)
    {
        column.Hidden = true;
    }
}

यह स्पष्ट रूप से 1- और 2-पैरामीटर ओवरलोड के लिए भी समायोजित किया जा सकता है।

3
William 25 अक्टूबर 2019, 00:28
इसके लिए धन्यवाद। जैसा कि मुझे ईपीप्लस उपयोगी लगता है, इतनी सारी चीजों की साइड-इफेक्ट संचालित प्रकृति से यह पता लगाना लगभग असंभव हो जाता है कि चीजें काम क्यों नहीं करती हैं, और कुछ विशेषताओं को लागू करने के लिए चीजों को एक विशिष्ट पैटर्न में क्यों निष्पादित किया जाना चाहिए।
 – 
Captain Prinny
3 जिंदा 2020, 20:47