XSL - 修改XML导出到Excel以调整列的大小

时间:2017-08-18 03:34:04

标签: xml excel xslt

我使用XSL文件修改XML文件以生成Excel电子表格 - 这很好用,但我想增加列的宽度。我无法使用:

<xsl:attribute name="ss:AutoFitWidth">1</xsl:attribute>

选项,因为我的所有列都是以文本形式生成的,因为它们可能包含文本,数字和日期的混合,而XML Spreadsheet Reference的文档提到使用此列表示“&#39;”列应仅为数值和日期值自动调整大小。我们不会自动生成文本值。&#39;所以这不是一个选择。

有没有人知道如何调整列的大小或指定列宽度的值,这样我至少可以增加宽度以更接近地反映每列中的内容?

这是我当前的XML:

<?xml version="1.0" encoding="utf-8"?>
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
    <ERRORCODE>0</ERRORCODE>
    <PRODUCT BUILD="06-06-2017" NAME="FileMaker" VERSION="ProAdvanced 16.0.2"/>
    <METADATA>
        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnA" TYPE="TEXT"/>
        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnB" TYPE="TEXT"/>
        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnC" TYPE="TEXT"/>
        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnD" TYPE="TEXT"/>
        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ColumnE" TYPE="TEXT"/>
        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="FlagBold" TYPE="TEXT"/>
    </METADATA>
    <RESULTSET FOUND="6">
        <ROW MODID="0" RECORDID="900">
            <COL>
                <DATA>Created: 15-August-2017</DATA>
            </COL>
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA>1</DATA>
            </COL>
        </ROW>
        <ROW MODID="0" RECORDID="901">
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA/>
            </COL>
            <COL>
                <DATA/>
            </COL>
        </ROW>
        <ROW MODID="1" RECORDID="902">
            <COL>
                <DATA>Name</DATA>
            </COL>
            <COL>
                <DATA>ID</DATA>
            </COL>
            <COL>
                <DATA>Category</DATA>
            </COL>
            <COL>
                <DATA>Number</DATA>
            </COL>
            <COL>
                <DATA>Amount</DATA>
            </COL>
            <COL>
                <DATA>1</DATA>
            </COL>
        </ROW>
        <ROW MODID="1" RECORDID="904">
            <COL>
                <DATA>Acme Corp Pty Ltd</DATA>
            </COL>
            <COL>
                <DATA>123456</DATA>
            </COL>
            <COL>
                <DATA>Category 1</DATA>
            </COL>
            <COL>
                <DATA>1</DATA>
            </COL>
            <COL>
                <DATA>$456.78</DATA>
            </COL>
            <COL>
                <DATA/>
            </COL>
        </ROW>
        <ROW MODID="1" RECORDID="905">
            <COL>
                <DATA>Demo Company Pty Ltd</DATA>
            </COL>
            <COL>
                <DATA>987654</DATA>
            </COL>
            <COL>
                <DATA>Category 2</DATA>
            </COL>
            <COL>
                <DATA>1</DATA>
            </COL>
            <COL>
                <DATA>$789.32</DATA>
            </COL>
            <COL>
                <DATA/>
            </COL>
        </ROW>
    </RESULTSET>
</FMPXMLRESULT>

这是我创建电子表格行的XSL:

<Style ss:ID="MyTitleStyle">
    <Alignment ss:WrapText="0" />
    <Font  ss:Bold="1"/>
</Style>

<xsl:for-each select="fmp:FMPXMLRESULT/fmp:RESULTSET/fmp:ROW">
    <Row>
        <xsl:for-each select="fmp:COL">
            <Cell>
                <xsl:if test="../fmp:COL[6]/fmp:DATA = 1">
                    <xsl:attribute name="ss:StyleID">MyTitleStyle</xsl:attribute>
                </xsl:if>           
                <Data ss:Type="String">
                    <xsl:value-of select="." />
                </Data>
            </Cell>
        </xsl:for-each><!-- next column -->
    </Row>
</xsl:for-each><!-- next row -->

0 个答案:

没有答案