使用java将XML转换为XLS
如何将元数据映射到数据。例如,我只希望LastName和Email从xml文件进入xls文件。如何从xml文件中选择LastName和email,并将其转换为两列XLS文件列,即LastName和email。多谢各位 XML文档使用java将XML转换为XLS,java,xml,xslt,Java,Xml,Xslt,如何将元数据映射到数据。例如,我只希望LastName和Email从xml文件进入xls文件。如何从xml文件中选择LastName和email,并将其转换为两列XLS文件列,即LastName和email。多谢各位 XML文档 <root> <metadata> <item name="Last Name" type="xs:string" length="182"/> <item name="First Nam
<root>
<metadata>
<item name="Last Name" type="xs:string" length="182"/>
<item name="First Name" type="xs:string" length="182"/>
<item name="Class Registration #" type="xs:decimal" precision="19"/>
<item name="Email" type="xs:string" length="422"/>
<item name="SacLink ID" type="xs:string" length="92"/>
<item name="Term Desc" type="xs:string" length="62"/>
<item name="Status Code" type="xs:string" length="6"/>
</metadata>
<data>
<row>
<value>XXX</value>
<value>xxxx</value>
<value>xxx</value>
<value>xxx</value>
<value>xxx</value>
<value>xx</value>
<value>xx</value>
</row>
<row>
<value>xxy</value>
<value>xx</value>
<value>xx</value>
<value>xx</value>
<value>xx</value>
<value>xx</value>
<value>xx</value>
</row>
</data>
</root>
您可以为此使用XSL转换,以可由Excel加载的CSV格式输出 如果您想使用C 4.0和Office 2008/10编写程序,那么利用互操作功能也比以往任何时候都容易—请查看Office示例中的。此样式表:
<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"
xmlns:x="urn:schemas-microsoft-com:office:excel">
<xsl:param name="pColumnNames" select="'Last Name,Email'"/>
<xsl:key name="kItemByPosition" match="item"
use="count(preceding-sibling::item)+1"/>
<xsl:template match="/">
<xsl:processing-instruction name="mso-application">
<xsl:text>progid="Excel.Sheet"</xsl:text>
</xsl:processing-instruction>
<Workbook>
<Worksheet ss:Name="Email Table">
<Table x:FullColumns="1" x:FullRows="1">
<xsl:apply-templates/>
</Table>
</Worksheet>
</Workbook>
</xsl:template>
<xsl:template match="metadata|row">
<Row>
<xsl:apply-templates/>
</Row>
</xsl:template>
<xsl:template match="item|value">
<xsl:if test="contains(concat(',',$pColumnNames,','),
concat(',',key('kItemByPosition',
position())/@name,','))">
<Cell>
<Data ss:Type="String">
<xsl:apply-templates select="@name|node()"/>
</Data>
</Cell>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
输出:
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:x="urn:schemas-microsoft-com:office:excel">
<Worksheet ss:Name="Email Table">
<Table x:FullColumns="1" x:FullRows="1">
<Row>
<Cell>
<Data ss:Type="String">Last Name</Data>
</Cell>
<Cell>
<Data ss:Type="String">Email</Data>
</Cell>
</Row>
<Row>
<Cell>
<Data ss:Type="String">XXX</Data>
</Cell>
<Cell>
<Data ss:Type="String">xxx</Data>
</Cell>
</Row>
<Row>
<Cell>
<Data ss:Type="String">xxy</Data>
</Cell>
<Cell>
<Data ss:Type="String">xx</Data>
</Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
这不是一个格式良好的XML文档。嗨,Alejandro,我是新手,你能告诉我如何使用上面的代码吗。我有100的XML文件的格式,我给,我的目标是开发一个程序,将所有的XML文件,并转换成XLS文件。谢谢您的时间。@sandeep:这将是一个关于如何使用XSLT处理器在java中运行转换的问题。我认为这在SO中是有答案的。