2012-08-14 317 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

相关问题