我需要将OpenOffice Excel数据转换为
XML.我的机器(不是MS-Office)中有Apache OpenOffice 4.1.1.
样本数据.
(第一行是标签)
CustData FirstName MiddleName LastName EMail PhoneNumber abe x Park abe@mail.com 2323232323 poppy y Kaith Poppy@mail.com 2323232323
需要结果如下:
<CustData> <FirstName>abe</FirstName> <MiddleName>x</MiddleName> <LastName>Park</LastName> <EMail>abe@mail.com</EMail> <PhoneNumber>2323232323</PhoneNumber> </CustData> <CustData> <FirstName>poppy</FirstName> <MiddleName>y</MiddleName> <LastName>Kaith</LastName> <EMail>Poppy@mail.com </EMail> <PhoneNumber>2323232323</PhoneNumber> </CustData>
解决方法
Openoffice和Libreoffice Calc能够通过XSLT和导出过滤器转换XML.要对示例数据执行此操作,请执行以下操作:
首先创建以下XSL文件并将其另存为SampleDataExportFilter.xsl:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" exclude-result-prefixes="office table text"> <xsl:template match="/"> <root> <xsl:apply-templates select="/*/office:body" /> </root> </xsl:template> <xsl:template match="office:body"> <xsl:apply-templates /> </xsl:template> <xsl:template match="office:spreadsheet"> <xsl:apply-templates /> </xsl:template> <xsl:template match="office:spreadsheet/table:table"> <xsl:for-each select="table:table-row[position() > 1]"> <CustData> <FirstName><xsl:value-of select="table:table-cell[2]/text:p" /></FirstName> <MiddleName><xsl:value-of select="table:table-cell[3]/text:p" /></MiddleName> <LastName><xsl:value-of select="table:table-cell[4]/text:p" /></LastName> <EMail><xsl:value-of select="table:table-cell[5]/text:p" /></EMail> <PhoneNumber><xsl:value-of select="table:table-cell[6]/text:p" /></PhoneNumber> </CustData> </xsl:for-each> </xsl:template> </xsl:stylesheet>
现在打开Calc并选择Tools – XML Filter Settings:
选择新建并填写对话框常规:
在注册Transformation中,选择SampleDataExportFilter.xsl作为XSLT进行导出:
单击确定确认,并使用关闭的XML过滤器设置.
现在创建以下Calc文件: