2015-09-28 181 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

相關問題