Ajuste automático no funciona en las células con cuerdas tratar de sustituir la línea de la columna en su ejemplo mediante el siguiente código:..
<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>
Explicación: Se ordena en longitud de cadena (la cadena más larga primero), toma la primera línea de cadenas ordenadas, toma la longitud de esa cadena * 5.25 y obtendrás una configuración automática razonable.
línea de clasificación:
<xsl:sort select="concat(string-length(string-length(.)),string-length(.))" order="descending"/>
explicación: si sólo una especie de longitud, como
<xsl:sort select="string-length(.)" order="descending"/>
porque las longitudes se manejan como cadenas, 2 se produce después de 10, que no desea . Por lo tanto, debe dejar el margen izquierdo para que quede bien ordenado (porque 002 viene antes del 010). Sin embargo, como no pude encontrar esa función de relleno, la resolví concatenando la longitud de la longitud con la longitud. Una cadena con una longitud de 100 se traducirá a 3100 (el primer dígito es la longitud de la longitud), verá que la solución siempre será ordenada por cadenas. por ejemplo: 2 será "12" y 10 será "210", por lo que se ordenará correctamente. Sólo cuando la longitud de la longitud> 9 causará problemas, pero Excel no puede manejar cadenas de longitud de 100000000.
Explantion de
<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>
quería maximizar la longitud de la cuerda hasta alrededor de 200, pero no pude conseguir la función Min para trabajar, como
<xsl:value-of select="5.25 * Min((string-length(.)+2),200)"/>
Así que tuve que hacerlo de la camino sucio.
¡Espero que pueda autoajustar ahora!