将数据从一个Excel模板转换到另一个Excel模板?
我想从一个Excel模板(由客户端提供)获取数据,然后将其转换为我自己的内部Excel模板。
我基本上希望能够写出从客户端的Excel模板中调用字段名称的转换(XSLT),然后通过某种映射过程将值导入到我自己的模板中的相应字段中。
有没有办法做到这一点? 例如,客户端可能有以下列:名字姓氏地址电话号码
不过,我的模板可能只有姓氏的电话号码
我想要转换只是自动从客户端的Excel模板中的三个相应的领域拉动值。
这可能吗? 如果是这样,我在看什么样的stream程?
注意:通过Excel模板,我只是指格式良好的Excel文件,其中包含字段和单元格值。
是的,这是我看到的过程:
1)从Excel电子表格创buildXML数据和模式文件。 看到这个参考。
2)将XML模式导入客户端Excel电子表格。 看到这个参考。
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是非破坏性的(不会修改input源文档,而只会输出新的结果文档。
另外,它使用XSLT扩展functionexsl:node-set()。 根据您使用的工具,即IE,您可能需要将其切换到MSXSL扩展版本。
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
和
msxsl:node-set()
分别。