使用 XSLT 从 XML 生成 EXCEL
Posted
技术标签:
【中文标题】使用 XSLT 从 XML 生成 EXCEL【英文标题】:Generate EXCEL from XML using XSLT 【发布时间】:2014-08-17 01:03:00 【问题描述】:我有下面的 XML。想要使用 XSLT 从中生成 EXCEL。但我是新手,不知道如何从 XML 生成 XLS 以及如何将它用于 XSLT。
XML --
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mig:menu-compare xmlns:mig="http://www.com/migration/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www..com/migration">
<mig:menu-info>
<mig:menu type="one" name="HCOTA"/>
<mig:menu type="two" name="RTACOF"/>
</mig:menu-info>
<mig:field-details>
<mig:fields existence="one">
<mig:field name="taChrgOffMsg.taChrgOffCrit.funcCode">
<mig:field-type type="one">
<mig:group-name>cota</mig:group-name>
<mig:page-name>cotacrit</mig:page-name>
<mig:control-type>Combo Box</mig:control-type>
<mig:ui-field>funcCode</mig:ui-field>
<mig:label>FLT000204</mig:label>
<mig:mandatory>Y</mig:mandatory>
</mig:field-type>
</mig:field>
<mig:field>
<mig:field-type type="one">
<mig:group-name>cota</mig:group-name>
<mig:page-name>cotares</mig:page-name>
<mig:control-type>Button</mig:control-type>
<mig:ui-field>endMenu</mig:ui-field>
<mig:label></mig:label>
<mig:mandatory></mig:mandatory>
</mig:field-type>
</mig:field>
</mig:fields>
<mig:fields existence="both">
<mig:field name="taChrgOffMsg.taChrgOffCrit.Acct.foracid">
<mig:field-type type="one">
<mig:group-name>cota</mig:group-name>
<mig:page-name>cotacrit</mig:page-name>
<mig:control-type>Text Field</mig:control-type>
<mig:ui-field>acctId</mig:ui-field>
<mig:label>FLT000265</mig:label>
<mig:mandatory>Y</mig:mandatory>
</mig:field-type>
<mig:field-type type="two">
<mig:group-name>Rtacof</mig:group-name>
<mig:page-name>Rtacof_criteria_form</mig:page-name>
<mig:control-type>FinAccountId</mig:control-type>
<mig:ui-field>acctId$accountId</mig:ui-field>
<mig:label>FLT001251</mig:label>
<mig:mandatory>true</mig:mandatory>
<mig:section-structure>group1.section1.subSection1.finRow1.finCell1</mig:section-structure>
</mig:field-type>
</mig:field>
<mig:field name="taChrgOffMsg.taChrgOffCrit.chargeOffType">
<mig:field-type type="one">
<mig:group-name>cota</mig:group-name>
<mig:page-name>cotacrit</mig:page-name>
<mig:control-type>Radio Button</mig:control-type>
<mig:ui-field>chargeOffMode</mig:ui-field>
<mig:label>FLT0045</mig:label>
<mig:mandatory>Y</mig:mandatory>
</mig:field-type>
<mig:field-type type="two">
<mig:group-name>Rtacof</mig:group-name>
<mig:page-name>Rtacof_criteria_form</mig:page-name>
<mig:control-type>FinRadioButtonGroup</mig:control-type>
<mig:ui-field>chargeMode</mig:ui-field>
<mig:label>FLT003817</mig:label>
<mig:mandatory>false</mig:mandatory>
<mig:section-structure>group1.section1.subSection12.finRow2.finCell4</mig:section-structure>
</mig:field-type>
</mig:field>
</mig:fields>
<mig:fields existence="ux">
<mig:field name="taChrgOffMsg.taChrgOffCrit.Acct.acctName">
<mig:field-type type="two">
<mig:group-name>Rtacof</mig:group-name>
<mig:page-name>Rtacof_criteria_form</mig:page-name>
<mig:control-type>FinAccountId</mig:control-type>
<mig:ui-field>acctId$accountNameDesc</mig:ui-field>
<mig:label>FLT001251</mig:label>
<mig:mandatory>true</mig:mandatory>
<mig:section-structure>group1.section1.subSection1.finRow1.finCell1</mig:section-structure>
</mig:field-type>
</mig:field>
<mig:field name="taChrgOffMsg.taChrgOffCrit.Acct.Acct_1.Acct_2.1.acctName_2.1">
<mig:field-type type="two">
<mig:group-name>Rtacof</mig:group-name>
<mig:page-name>Rtacof_criteria_form</mig:page-name>
<mig:control-type>FinAccountId</mig:control-type>
<mig:ui-field>acctId$accountNameDesc_2.1</mig:ui-field>
<mig:label>FLT001251</mig:label>
<mig:mandatory>true</mig:mandatory>
<mig:section-structure>group1.section1.subSection1.finRow1.finCell1</mig:section-structure>
</mig:field-type>
</mig:field>
</mig:fields>
</mig:field-details>
</mig:menu-compare>
我想要带有行的 EXCEL - 字段名称(唯一)、组名称、页面名称等(合并组名称、页面名称为 'ONE')和另一个组名称、页面名称等(合并此作为“二”)
【问题讨论】:
首先我建议生成一个CSV文件而不是XLS,因为它是纯文本并且更容易维护(并且可以通过Excel导入);其次,这是一个非常广泛的问题(根本不是一个真正的问题)。您是否尝试过任何可以向我们展示的方法? 另一种选择是生成html表格,也可以自动导入Excel。如果您需要包含样式、颜色、公式和特定的 Excel 数据,您将生成 XLS。在这种情况下,请检查以下问题:***.com/questions/23898158/… 和 ***.com/questions/24118320/… 【参考方案1】:我现在正在做同样的研究,我遇到了xsl-excel-engine by Pavel Ptacek - 我还没有尝试过,但看起来很有希望。
【讨论】:
以上是关于使用 XSLT 从 XML 生成 EXCEL的主要内容,如果未能解决你的问题,请参考以下文章
根据 XSD 兼容 XML 输入 -> XSD 兼容 XML 输出的 1:1 映射从 XSD 生成 XSLT 文件