ऑटोफ़िट साथ तार कोशिश कोशिकाओं पर काम नहीं करता है निम्न कोड के आधार पर आपके उदाहरण में कॉलम लाइन को बदलने के लिए:।।
<xsl:for-each select="/*/*[1]/*">
<Column>
<xsl:variable name="columnNum" select="position()"/>
<xsl:for-each select="/*/*/*[position()=$columnNum]">
<xsl:sort select="concat(string-length(string-length(.)),string-length(.))" order="descending"/>
<xsl:if test="position()=1">
<xsl:if test="string-length(.) < 201">
<xsl:attribute name="ss:Width">
<xsl:value-of select="5.25 * (string-length(.)+2)"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="string-length(.) > 200">
<xsl:attribute name="ss:Width">
<xsl:value-of select="1000"/>
</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test = "local-name() = 'Sorteer'">
<xsl:attribute name="ss:Width">
<xsl:value-of select="0"/>
</xsl:attribute>
</xsl:if>
</xsl:for-each>
</Column>
</xsl:for-each>
स्पष्टीकरण: यह स्ट्रिंग-लम्बाई (सबसे लंबी स्ट्रिंग पहले) पर टाइप करता है, क्रमबद्ध तारों की पहली पंक्ति लेता है, उस स्ट्रिंग की लंबाई लेता है * 5.25 और आपके पास एक उचित ऑटोफिट होगा।
छंटाई लाइन:
<xsl:sort select="concat(string-length(string-length(.)),string-length(.))" order="descending"/>
विवरण: अगर आप सिर्फ प्रकार पर लंबाई, जैसे
<xsl:sort select="string-length(.)" order="descending"/>
क्योंकि लंबाई स्ट्रिंग के रूप में नियंत्रित किया जाता है, 2, 10 के बाद आता है कि कौन सा आप नहीं चाहते । तो आपको सही क्रमबद्ध करने के लिए लंबाई को बाएं-पैड करना चाहिए (क्योंकि 002 010 से पहले आता है)। हालांकि, जैसा कि मुझे वह पैडिंग फ़ंक्शन नहीं मिला, मैंने लंबाई के साथ लंबाई की लंबाई को जोड़कर हल किया। 100 की लंबाई वाली एक स्ट्रिंग का अनुवाद 3100 में किया जाएगा (पहला अंक लंबाई की लंबाई है), आप देखेंगे कि समाधान हमेशा स्ट्रिंग-सॉर्ट सही होगा। उदाहरण के लिए: 2 "12" और 10 "210" होगा, इसलिए यह सही ढंग से स्ट्रिंग-सॉर्ट किया जाएगा। केवल जब लंबाई की लंबाई> 9 समस्याएं पैदा करेगी, लेकिन लंबाई 100000000 की तारों को एक्सेल द्वारा नियंत्रित नहीं किया जा सकता है।
<xsl:if test="string-length(.) < 201">
<xsl:attribute name="ss:Width">
<xsl:value-of select="5.25 * (string-length(.)+2)"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="string-length(.) > 200">
<xsl:attribute name="ss:Width">
<xsl:value-of select="1000"/>
</xsl:attribute>
</xsl:if>
की Explantion मैं लगभग 200 के लिए स्ट्रिंग की लंबाई को अधिकतम करना चाहता था, लेकिन मैं काम करने के लिए न्यूनतम समारोह, जैसे
<xsl:value-of select="5.25 * Min((string-length(.)+2),200)"/>
नहीं मिल सका तो मैं यह करना ही था गंदा तरीका।
मुझे आशा है कि अब आप ऑटोफिट कर सकते हैं!