【问题标题】:Generate EXCEL from XML using XSLT使用 XSLT 从 XML 生成 EXCEL
【发布时间】: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。在这种情况下,请检查以下问题:stackoverflow.com/questions/23898158/…stackoverflow.com/questions/24118320/…

标签: java xml excel xslt


【解决方案1】:

我现在正在做同样的研究,我遇到了xsl-excel-engine by Pavel Ptacek - 我还没有尝试过,但看起来很有希望。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-24
    • 2010-09-24
    • 1970-01-01
    • 2021-03-21
    • 2013-08-13
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多