欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ext GridPanel 导出 Excel

程序员文章站 2022-03-01 20:36:09
...
首先定义如下JS文件:
/*
 *功能:直接由Ext的grid生成Excel 
 *注意: 只支持IE 
 *参数:param1: gridId
 *      param2: sheetName  
 */
Ext.downExcel= function(config){
   //Ext.Excel.superclass.constructor.call(this, config);
   Ext.apply(this,config);
};
Ext.apply(Ext.downExcel.prototype,{
         extGridToExcel : function(){  
         try{  
                    if(Ext.getCmp(this.gridId)){  
                        /********************************************* grid 生成 Excel ***************************************/  
                        var oXL = new ActiveXObject("Excel.Application");   
                        var oWB = oXL.Workbooks.Add();   
                        var oSheet = oWB.ActiveSheet;   
                               
                        var grid = Ext.getCmp(this.gridId);  
                        var store = grid.getStore();  
                        var recordCount = store.getCount();  
                        var view = grid.getView();  
                        var cm = grid.getColumnModel();  
                        var colCount = cm.getColumnCount();  
                        var temp_obj = [];  
                        for(var i = 0; i < colCount;i++){  
                            if(cm.isHidden(i)){  
                            }else{  
                                temp_obj.push(i);  
                            }  
                        }  
                        for(var i = 1; i <= temp_obj.length;i++){  
                               oSheet.Cells(1,i).value = cm.getColumnHeader(temp_obj[i - 1]);  
                        }  
                          
                        for(var i = 1 ; i <= recordCount; i++){  
                              for(var j = 1; j<= temp_obj.length; j++){  
                                     oSheet.Cells(i+1,j).value = view.getCell(i-1,temp_obj[j-1]).innerText;   
                             }  
                        }  
                        if(this.sheetName){  
                              oSheet.Name = this.sheetName;  
                        }  
                        oXL.UserControl = true;  
                        oXL.Visible = true;  
                    }else{  
                        Ext.Msg.alert('Error','明细数据grid没有创建成功!');  
                        return;  
                    }         
          }catch(e){  
                    if(Ext){  
                        Ext.Msg.show({  
                            title:'提示',  
                            msg:'请设置IE的菜单\'工具\'->Internet选项->安全->自定义级别->\'对未标记为可安全执行脚本ActiveX控件初始化并执行脚本\'->选择[启用]&nbsp;&nbsp;就可以生成Excel',  
                            buttons:Ext.Msg.OK,  
                            icon:Ext.Msg.INFO  
                        });  
                    }else{  
                        alert('不支持ExtJs框架');  
                        return;  
                    }  
                }  
    }  
});

调用:
buttons:[{   text:'导出Excel',
              handler:function() { 
                   var excel = new Ext.Excel({gridId:'datagrid',sheetName:'中期生产计划--逆排'});
                   excel.extGridToExcel();
              }
         }] 


没上传 调用代码
那几行 自己打上吧
用起来 真爽啊~~~~