0

クエリの結果 (xml 形式) を Excel ファイルに変換する必要があります。

クエリ結果の例:

<?xml version="1.0" encoding="UTF-8"?>
<dbqueries>
<dbquery id="main">
    <rows>
        <row user="Me" user-id="1"/>
        <row user="Myself" user-id="2"/>
        <row user="I" user-id="3"/>
    </rows>
</dbquery>
</dbqueries>

次の XSLT を使用します。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet 
version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />   
<xsl:template match="/dbqueries">
    <xsl:processing-instruction name="mso-application">
        <xsl:text>progid="Excel.Sheet"</xsl:text>
    </xsl:processing-instruction>

    <Workbook>  
        <Styles>
            <Style ss:ID="Default" ss:Name="Normal">
                <Alignment ss:Vertical="Bottom" />
                <Borders />
                <Font />
                <Interior />
                <NumberFormat />
                <Protection />
            </Style>
            <Style ss:ID="s21">
                <Font ss:Size="22" ss:Bold="1" />
            </Style>
            <Style ss:ID="s22">
                <Font ss:Size="14" ss:Bold="1" />
            </Style>
            <Style ss:ID="s23">
                <Font ss:Size="12" ss:Bold="1" />
            </Style>
            <Style ss:ID="s24">
                <Font ss:Size="10" ss:Bold="1" />
            </Style>
        </Styles>
        <!-- Write each query -->
        <xsl:for-each select="dbquery">
            <Worksheet ss:Name="{@id}">
                <Table>
                    <xsl:apply-templates select="//rows" mode="rows" />
                </Table>
            </Worksheet>
        </xsl:for-each>
    </Workbook>
</xsl:template>
<xsl:template match="//rows/row" mode="rows">
    <xsl:variable name="x" select="position()" />
    <Row ss:Index="{$x}">
        <Cell ss:Index="1">
            <Data ss:Type="String">
                <xsl:value-of select="@id" />
            </Data>
        </Cell>
        <Cell ss:Index="2">
            <Data ss:Type="String">
                <xsl:value-of select="@user" />
            </Data>
        </Cell>
    </Row>
</xsl:template>

変換中に最初の文字が失われることを除いて、変換は機能します。

下記参照 :

Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">

何が問題になっている可能性がありますか?

4

2 に答える 2

1

質問は締め切らせていただく場合がございます。この問題の解決策は、使用されているフレームワークでは、結果のタイプ「application/vnd.ms-excel」を要求する必要があり、代わりに「text/xml」を要求したという事実でした。

于 2016-06-06T11:56:36.587 に答える
0

html への変換を使用し、Datatables ( https://datatables.net/ ) を使用して html5 の「Excel への出力」ボタンを作成することをお勧めします。必要な結果を得るのはおそらくはるかに簡単です。

于 2016-06-05T06:46:33.900 に答える