我需要将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>
答案 0 :(得分:5)
Openoffice和Libreoffice Calc能够通过XSLT
通过Export Filters
转换其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
:
选择New
并填写对话框General
:
在注册Transformation
中,选择SampleDataExportFilter.xsl
为XSLT for export
:
使用OK
确认,使用Close
确认XML过滤器设置。
现在创建以下Calc文件:
使用File
- Export
,您现在可以使用File type
CustData (.xml)
作为XML导出电子表格数据。
答案 1 :(得分:1)
您可以下载OpenXmlSDK Open XML SDK 它包含生产力工具,可以帮助您发现Excel文档的结构,例如:
然后使用任何可用的XSLT教程来了解将一个XML结构转换为另一个XML结构的方法
这也可以帮到你:
答案 2 :(得分:0)
很棒的提示!在Calc 6.0.7.3中发现一个错误,如果两个连续的单元格具有相同的值,它将跳过第二个单元格的值并使用下一个单元格的值!该行的所有后续值也会移动一列,并且在行内是累积的。如果我重新组织各列,以便并排的列中没有相同的字段值,并更改.xsl中的单元格ref#以使其匹配,则可以正常工作。