`
mmmzzc
  • 浏览: 109734 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类
最新评论

Ext GridPanel 导出 Excel

    博客分类:
  • Ext
阅读更多
首先定义如下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();
              }
         }] 


没上传 调用代码
那几行 自己打上吧
用起来 真爽啊~~~~
分享到:
评论
2 楼 xtvke123 2012-06-11  
这个只能导出GridPanel的当前页中的数据,多页时如何导出呢
1 楼 dengli19881102 2011-05-10  
我想要的,不仅仅是只支持IE,还有火狐

相关推荐

Global site tag (gtag.js) - Google Analytics