核心思想:
创建一个隐藏form,其target设置为_blank,然后在其内部创建一个隐藏域存放xml数据,然后通过POST方式提交这个form即可
主要代码如下:
var linkButton = new Ext.Button({ text: '导出到Excel', handler: function() { var vExportContent = grid.getExcelXml(); if (Ext.isIE6 || Ext.isIE7 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) { var fd=Ext.get('frmDummy'); if (!fd) { fd=Ext.DomHelper.append(Ext.getBody(),{tag:'form',method:'post',id:'frmDummy',action:'exportexcel.jsp', target:'_blank',name:'frmDummy',cls:'x-hidden',cn:[ {tag:'input',name:'exportContent',id:'exportContent',type:'hidden'} ]},true); } fd.child('#exportContent').set({value:vExportContent}); fd.dom.submit(); } else { document.location = 'data:application/vnd.ms-excel;base64,'+Base64.encode(vExportContent); }} }); var grid = new Ext.grid.GridPanel({ ... bbar: new Ext.Toolbar({ buttons: [linkButton] }) });
其实,可以发现,不光excel,其他的格式也可以。
附件内是代码。