2015-09-28 182 views
3

我有要求将OpenOffice Excel数据转换为XML。我在我的机器上安装了Apache OpenOffice 4.1.1(不是MS Office)。在OpenOffice中以XML格式转换Calc(Excel)数据

示例数据。 (第一行代码的)

CustData FirstName MiddleName LastName EMail    PhoneNumber 
      abe  x   Park  [email protected]  2323232323 
      poppy  y   Kaith  [email protected]  2323232323 

需要的结果:

<CustData> 
     <FirstName>abe</FirstName> 
     <MiddleName>x</MiddleName> 
     <LastName>Park</LastName> 
     <EMail>[email protected]</EMail>    
     <PhoneNumber>2323232323</PhoneNumber> 
</CustData> 
<CustData> 
     <FirstName>poppy</FirstName> 
     <MiddleName>y</MiddleName> 
     <LastName>Kaith</LastName> 
     <EMail>[email protected] </EMail>    
     <PhoneNumber>2323232323</PhoneNumber> 
</CustData> 
+0

OpenOffice和Microsoft Office格式已经以XML格式(或压缩的XML格式)存在。您应该将Calc保存的实际XML文档作为输入,并使用XSLT对其进行转换。 –

+0

@MathiasMüller从哪里可以得到Calc保存的实际XML文档,XSLT是如何转换的以及我们如何使用它?如果openoffice给出了一个例子,那对我来说真的很有帮助。 – Rohit

+0

Calc将文档保存为文件系统中的_file_。如果您在纯文本编辑器中打开这样的文件,您将立即看到它是一个XML文档。看看这个纯文件,找出有趣的数据所在的位置。使用XSLT模板定位这些元素。请注意:我只能指出你的方向是正确的,你的问题对于Stackoverflow来说过于模糊和广泛。 –

回答

2

OpenOffice和LibreOffice Calc是能够通过XSLTExport 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() &gt; 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> 

现在打开计算器,选择Tools - XML Filter Settings

enter image description here

选择New并填写对话框General

Close

enter image description here

确认与OK和XML过滤器设置:

enter image description here

在寄存器Transformation选择SampleDataExportFilter.xsl作为XSLT for export

现在创建以下文件计算器:

enter image description here

随着File - Export你现在应和能够使用File typeCustData (.xml)作为XML导出的电子表格数据。

+0

使用OpenOffice 3.4并验证时,我看到一个非常好的XML文件在我面前。但是当我按下'Validate'时,它给了我两个错误:'Document is invalid:Not grammar found.' and'Document root element roor',must be match DOCTYPE root“null”.'如果我试图用它来导出它失败。任何想法可能是错误的? – Madmenyo

+0

OpenOffice 3.4?真?当前版本是4.x.从oO XML验证器中提到的错误是不相关的。 “语法”是文档类型声明('DTD')。导出的XML当然没有。为什么它应该有?下一个错误是这个的继任者。例如,尝试使用oO自己的XML-Filter,例如“MS Excel 2003 XML”。相同的“错误”。这些错误不能导致导出失败。 –

+0

是的,我讨厌它,当他们改变或删除X时,我习惯了。或者当事情停止时,对我来说无数次更新软件。无论如何,我使用这个方法解决了这个问题:https://forum.openoffice.org/en/forum/viewtopic.php?t = 3490它和你的例子有点不同,但我的工作方式与我一起尝试例。 – Madmenyo

相关问题