通过官方extjs导出excel在IE下速度很慢,如何点击按钮友好提示,完成后关闭友好提示?因为不是通过load的方法,extjs里的方法都不行,页面会无响应很长时间.代码:
function exporttoexcel(grid){
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);           
  }
}
}

解决方案 »

  1.   

    //数据导出到Excel
    var GridToExcel= function(grid){
     /**
     * @ grid gridPanel 要导出的grid
     * @ 客户端必须使用IE浏览器,并且安装了Excel2003
     * @ Author : 逍遥君武
     * @ CreatData : 2010-1-20
     */
     //提取grid的列
     var columns = grid.getColumnModel().config.columns ? 
         grid.getColumnModel().config.columns :
         grid.getColumnModel().config; //提取store以及相关参数
     var store = grid.getStore();
     var colCount = columns.length;//字段数量
     var Cols = new Array(colCount);//为导出字段参数做准备
     var storeCount = store.getCount();//记录数量 //初始化一个可用ID
     var gridID = grid.getId()+'ExcelObj'; //OWC的HTML脚本
     var sheetHtml = '<OBJECT id="' + gridID + '" height="100%" width="100%" classid="clsid:0002E559-0000-0000-C000-000000000046"><PARAM NAME="EnableAutoCalculate" VALUE="-1"><PARAM NAME="DisplayTitleBar" VALUE="0"><PARAM NAME="DisplayToolbar" VALUE="-1"><PARAM NAME="ViewableRange" VALUE="1:65536"></OBJECT>'; var win = new Ext.Window({
        title: '数据分析',
        closable:true,
        width:600,
        height:350,
        plain:true,
        html:sheetHtml
       }); win.show(this); //从OWC的HTML脚本获得OWC对象
     var xlBook = document.getElementById(gridID);
     var xlsheet = xlBook.ActiveSheet; //用grid的数据生成HTML的table
     var tableHtml = "<table><tr>"
     for(var i = 0; i < colCount; i++){//生成表头,并读取列参数
      tableHtml += "<td width=\"" + columns[i].width + "\">" + columns[i].header + "</td>"  var col = new Object();
      col.dateIndex = columns[i].dataIndex;
      col.renderer = columns[i].renderer;
      Cols[i] = col;
     } tableHtml += "</tr>" //生成表格数据体
     for(var i = 0; i < storeCount; i++){
      var tmpTR = "";
      tmpTR += "<tr>";
      for(var j = 0; j < colCount; j++){
       var date = store.getAt(i);
       var tmpTD = "";
       if(columns[j].renderer){
        tmpTD = "<td>"+ (columns[j].renderer(date.get(columns[j].dataIndex))) +"</td>";
       }else{
        tmpTD = "<td>"+ (date.get(columns[j].dataIndex)) +"</td>";
       }
       tmpTR += tmpTD;
      }
      tmpTR += "</tr>";
      tableHtml += tmpTR;
     } tableHtml += "</table>"; //将HTML数据绑定给OWC
     xlBook.HTMLData = tableHtml;
     //设置OWC的外观参数
     var xlsheet = xlBook.ActiveSheet;
     xlsheet.Columns.Font.Size = 9; //销毁对象
     xlBook=null;
     xlsheet=null;
    }
      

  2.   

    额,主要麻烦就是要装excel,如果服务器端弄好就好了