2012-08-14 69 views
1

我想從一個Excel模板(由客戶端提供)獲取數據,然後將其轉換爲我自己的內部Excel模板。將數據從一個Excel模板轉換爲另一個Excel模板?

我基本上希望能夠寫出從客戶端的Excel模板中調用字段名稱的轉換(XSLT),然後通過某種映射過程將值導入到我自己的模板中的相應字段中。

有沒有辦法做到這一點? 例如,客戶可能有以下欄目: 名字 姓氏 地址 電話號碼

然而,我的模板可能只有 名字 姓 電話號碼

我會希望轉換能夠自動從客戶端Excel模板中的三個相應字段中提取值。

這可能嗎?如果是這樣,我在看什麼樣的流程?

注意:通過Excel模板我只是指格式良好的Excel文件,其中包含字段和單元格值。

回答

1

是的,這裏的過程中,我看到它:

1)從您的Excel電子表格創建XML數據和架構文件。請參閱this reference.

2)將XML模式導入到客戶端Excel電子表格中。請參見this reference.

3)將客戶端Excel電子表格導出到XML數據文件。

4)在一舉運行在兩個文檔的轉換,基本上是:

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:exsl="http://exslt.org/common"> 

    <xsl:variable name="mine" select="document(/path/to/your.xml)"/> 
    <xsl:variable name="client" select="document(/path/to/client.xml)"/> 

    <xsl:variable name="both"> 
    <both> 
     <xsl:copy-of select="exsl:node-set($mine)/> 
     <xsl:copy-of select="exsl:node-set($client)/> 
    </both> 
    </xsl:variable> 

    <xsl:template match="exsl:node-set($both)/whatever> 
    <xsl:apply-templates/> 
    </xsl:template> 

    <!-- More templates here to do what you will with all the data, 
     whether it be copying, sorting first, or etc. --> 
</xsl:stylesheet> 

5)導入結果返回到您的Excel文檔。

這是相當裸露的,我還沒有這麼做,所以一些特定的步驟可能在Excel中的版本顛簸之後發生了變化。最後一步需要在轉換之外完成,因爲XSLT是非破壞性的(不修改輸入源文檔,但只輸出新的結果文檔)

此外,它使用XSLT擴展功能exsl:node-set )。根據你所使用的工具,即IE瀏覽器,你可能需要將其切換到MSXSL擴展版本。

xmlns:msxsl="urn:schemas-microsoft-com:xslt" 

msxsl:node-set() 
分別

+0

驚喜G。謝謝。我迫不及待地嘗試這個! – user1599325 2012-08-15 16:54:07

相關問題