使用 xml 和 xsl 生成 xlsx 文件
Using xml and xsl to produce a xlsx file
我正在尝试从一堆数据中生成一份 xlsx 报告。我有手机号码、区号和朋友的名字,想用 xml 和 xsl 将它们插入到 xlsx 文件中。
我很难插入数据的 header,而且我似乎无法获取每一列的数据。现在,它们只是混合在一起,没有分隔符。
XML 文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
<friends>
<jx:forEach var="friendsDetail" items="${friendList}">
<friend
Name="${friendsDetail.getName()}/"
MobileNumber="${friendsDetail.getMobileNumber()}"
AreaCode="${friendsDetail.getAreaCode()}"
/>
</jx:forEach>
</friends>
</jx:template>
XSL 文件
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:strip-space elements="*" />
<xsl:template match="friend">
<xsl:value-of select="@Name" /><xsl:text/>
<xsl:value-of select="@MobileNumber" /><xsl:text/>
<xsl:value-of select="@AreaCode" /><xsl:text/>
</xsl:template>
</xsl:stylesheet>
所以基本上,我希望数据以 xlsx 文件的形式出现,如下所示:
Column 1. Column 2. Column 3.
Row 1. Name Mobilenumber Areacode
Row 2. Peter 48785635 4817
任何提示将不胜感激!
输出结果是这样的。
如果您希望将制表符分隔的文件导入 Excel,您可以首先定义一个参数来保存分隔符
的字符
<xsl:param name="separator" select="'	'" />
您可以使用 xsl:variable
,但参数可能会被调用应用程序覆盖,从而使您可以轻松切换为逗号。
然后您可以轻松地在模板中输出分隔符
<xsl:value-of select="@Name" />
<xsl:value-of select="$separator" />
试试这个 XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:param name="separator" select="'	'" />
<xsl:strip-space elements="*" />
<xsl:template match="friends">
<xsl:text>Name</xsl:text>
<xsl:value-of select="$separator" />
<xsl:text>Mobile Number</xsl:text>
<xsl:value-of select="$separator" />
<xsl:text>Area Code</xsl:text>
<xsl:text> </xsl:text>
<xsl:apply-templates select="friend" />
</xsl:template>
<xsl:template match="friend">
<xsl:value-of select="@Name" />
<xsl:value-of select="$separator" />
<xsl:value-of select="@MobileNumber" />
<xsl:value-of select="$separator" />
<xsl:value-of select="@AreaCode" />
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
我正在尝试从一堆数据中生成一份 xlsx 报告。我有手机号码、区号和朋友的名字,想用 xml 和 xsl 将它们插入到 xlsx 文件中。 我很难插入数据的 header,而且我似乎无法获取每一列的数据。现在,它们只是混合在一起,没有分隔符。
XML 文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
<friends>
<jx:forEach var="friendsDetail" items="${friendList}">
<friend
Name="${friendsDetail.getName()}/"
MobileNumber="${friendsDetail.getMobileNumber()}"
AreaCode="${friendsDetail.getAreaCode()}"
/>
</jx:forEach>
</friends>
</jx:template>
XSL 文件
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:strip-space elements="*" />
<xsl:template match="friend">
<xsl:value-of select="@Name" /><xsl:text/>
<xsl:value-of select="@MobileNumber" /><xsl:text/>
<xsl:value-of select="@AreaCode" /><xsl:text/>
</xsl:template>
</xsl:stylesheet>
所以基本上,我希望数据以 xlsx 文件的形式出现,如下所示:
Column 1. Column 2. Column 3.
Row 1. Name Mobilenumber Areacode
Row 2. Peter 48785635 4817
任何提示将不胜感激!
输出结果是这样的。
如果您希望将制表符分隔的文件导入 Excel,您可以首先定义一个参数来保存分隔符
的字符<xsl:param name="separator" select="'	'" />
您可以使用 xsl:variable
,但参数可能会被调用应用程序覆盖,从而使您可以轻松切换为逗号。
然后您可以轻松地在模板中输出分隔符
<xsl:value-of select="@Name" />
<xsl:value-of select="$separator" />
试试这个 XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:param name="separator" select="'	'" />
<xsl:strip-space elements="*" />
<xsl:template match="friends">
<xsl:text>Name</xsl:text>
<xsl:value-of select="$separator" />
<xsl:text>Mobile Number</xsl:text>
<xsl:value-of select="$separator" />
<xsl:text>Area Code</xsl:text>
<xsl:text> </xsl:text>
<xsl:apply-templates select="friend" />
</xsl:template>
<xsl:template match="friend">
<xsl:value-of select="@Name" />
<xsl:value-of select="$separator" />
<xsl:value-of select="@MobileNumber" />
<xsl:value-of select="$separator" />
<xsl:value-of select="@AreaCode" />
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>