ExtJS5 下载 Excel 个文件

ExtJS5 Download Excel File

我定义了一个表单,用于提交到 PHP 脚本,该脚本将使用 PHPExcel 创建一个 Excel 电子表格。

Ext.define('Admin.view.main.LedgerParams',{
    extend: 'Ext.window.Window',
    xtype: 'ledgerparams',
    title: 'Generate Account Ledger',           
    defaultFocus: '[name=period]',  
    layout: 'fit',  
    closable: false,
    resizable: false,
    modal : true,
    standardSubmit: true,
    items: [{
        xtype: 'form',      
        layout: 'fit',
        fieldDefaults: {labelWidth: 80,labelAlign: 'right'},
        padding: 10,
        items: [{           
            xtype: 'fieldset',
            padding: 10,
            title: '<b>Account Ledger Parameters</b>',
            defaultType: 'numberfield',
            defaults: {enforceMaxLength: true},
            items:[{                
                name: 'period',
                flex : 1,
                fieldLabel: 'Fiscal Period',
                selectOnFocus: true,
                value: new Date().getFullYear(),
                minValue: 1980
            }]
        }]
    }],
    buttons:[{
        text: 'Generate',
        handler: 'onClick_btnLedgerPrint'
    },{
        text: 'Cancel',     
        handler: function(){this.up('window').destroy();}
    }]
});

主控制器中的onClick_BtnLedgerPrint方法调用表单提交:

onClick_btnLedgerPrint: function(btn){                
    btn.up('window').down('form').submit({
    url: 'app/data/Reports.php',
        params: {action:'print',reportname:'generate_ledger'} 
    });
}

然而,似乎 JSON 表单需要来自服务器的响应,而不是启动下载。标准提交在 ExtJS5 中被破坏了吗?如有任何帮助,我们将不胜感激!

JavaScript无法启动下载,同Ext JS。只有浏览器会这样做。

var formValues = btn.up('window').down('form').getForm().getValues();
var params = { action: 'print', reportname: 'generate_ledger' };
var requestParams = Ext.merge(formValues, params);
var url = 'app/data/Reports.php?' + Ext.Object.toQueryString(requestParams);
document.location = url;

或者您可以尝试使用 iframe 描述的方法 here