`
easonfans
  • 浏览: 253016 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ext的Grid导出为Excel 方法

阅读更多

转载的一个extjs的grid数据生成excel的好方法,这里面没有选择框,是将grid所有的数据转为excel。可以选择要输出的列,若你想自己选择某些行输出,只要做稍微的改动就可以了。这里面使用了js来调用ActiveX控件来生成Excel。

老外的方法:
GridPanel to real Excel file(Only By IE5+,Windows,Office)

What ?
There is only one static function in the object Ext.ux.Grid2Excel ,
You can use it anywhere to convert the data from a gridpanel to a local real excel file.

Where ?
It use a object(ActiveXObject("Excel.application") to create a real excel file,so it works at only windows platform with the office software installed.And then modifying the settings of the IE security to activate the activex may be necessary too.

How ?
Like this:
Ext.ux.Grid2Excel.Save2Excel(grid);

Core Code List and Demo

grid2excel.js:

/**//**  
 * @author qinjinwei  
 *   
 * time: 2008-7-24 20:28:02  
 */  
var  idTmr  =  "";    
Ext.ux.Grid2Excel = {   
    
Save2Excel : function(grid)   
 {  
  var cm = grid.getColumnModel();  //返回Grid的列模型(ColumnModel)。
  var store = grid.getStore();   
  
  var it = store.data.items;   //数据数组
  var rows = it.length;   //数组的长度
  //初始化excel相关的  ActiveX
  var   oXL   =   new   ActiveXObject("Excel.application");        
  var   oWB   =   oXL.Workbooks.Add();        
  var   oSheet   =   oWB.ActiveSheet;    
  for (var i = 0; i < cm.getColumnCount(); i++) {   
      
   if (!cm.isHidden(i)) { //首先在第一行设置列的名字(那些没有被隐藏的显示)  
    oSheet.Cells(1, i + 1).value = cm.getColumnHeader(i);   
   }   
      
   for (var j = 0; j < rows; j++) {   //写入excel数据,for循环写入
    r = it[j].data;   
    var v = r[cm.getDataIndex(i)];   
    var fld = store.recordType.prototype.fields.get(cm.getDataIndex(i));  //得到对应的数据 
    
    if(fld.type == 'date')   //如果是日期类型的话,那么明确格式
    {   
         v = v.format('Y-m-d');       
       }   
      
    oSheet.Cells(2 + j, i + 1).value = v;   //写入
   }   
  }   
        oXL.DisplayAlerts = false;   
  oXL.Save();   
  oXL.DisplayAlerts = true;                       
  oXL.Quit();   
  oXL = null;   
    idTmr = window.setInterval("Cleanup();",1);   
  }   
};   
function Cleanup() {   
    window.clearInterval(idTmr);   
    CollectGarbage();   
};  

 Demo : 一个小的实例。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">   
<html>   
    <head>   
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">   
        <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css">   
        <link rel="stylesheet" type="text/css" href="./ext/resources/css/ext-all.css">   
        <script type="text/javascript" src="./ext/adapter/ext/ext-base.js">   
        </script>   
        <script type="text/javascript" src="./ext/ext-all-debug.js">   
        </script>   
        <script type="text/javascript" src="grid2excel.js">   
        </script>   
    </head>   
    <body>   
        <script type="text/javascript">   
            Ext.onReady(function(){   
               
                var myData = [['3m Co', 71.72, 0.02, 0.03, '9/1 12:00am'], ['Alcoa Inc', 29.01, 0.42, 1.47, '9/1 12:00am'], ['Altria Group Inc', 83.81, 0.28, 0.34, '9/1 12:00am'], ['American Express Company', 52.55, 0.01, 0.02, '9/1 12:00am']];   
                   
                var store = new Ext.data.SimpleStore({   
                    fields: [{   
                        name: 'company'  
                    }, {   
                        name: 'price',   
                        type: 'float'  
                    }, {   
                        name: 'change',   
                        type: 'float'  
                    }, {   
                        name: 'pctChange',   
                        type: 'float'  
                    }, {   
                        name: 'lastChange',   
                        type: 'date',   
                        dateFormat: 'n/j h:ia'  
                    }]   
                });   
                store.loadData(myData);   
                   
                // create the Grid   
                var grid = new Ext.grid.GridPanel({   
                    id: 'static-grid',   
                    store: store,   
                    renderTo: 'grid-example',   
                    columns: [{   
                        id: 'company',   
                        header: "Company",   
                        width: 160,   
                        sortable: true,   
                        dataIndex: 'company'  
                    }, {   
                        header: "Price",   
                        width: 75,   
                        sortable: true,   
                        //renderer: 'usMoney',   
                        dataIndex: 'price'  
                    }, {   
                        header: "Change",   
                        width: 75,   
                        sortable: true,   
                        dataIndex: 'change'  
                    }, {   
                        header: "% Change",   
                        width: 75,   
                        sortable: true,   
                        dataIndex: 'pctChange'  
                    }, {   
                        header: "Last Updated",   
                        width: 85,   
                        sortable: true,   
                        renderer: Ext.util.Format.dateRenderer('m/d/Y'),   
                        dataIndex: 'lastChange'  
                    }],   
                    //stripeRows: true,   
                    //autoExpandColumn: 'company',   
                    height: 350,   
                    width: 600,   
                    title: 'Array Grid',   
                    bbar: new Ext.Toolbar({   
                        buttons: [{   
                            text: 'µ¼³öExcel',   
                            tooltip: 'µ¼³öExcel',   
                            handler: onItemClick  
                        }]   
                    })   
                });   
                   
                function onItemClick(item){   
                   
                    Ext.ux.Grid2Excel.Save2Excel(grid);   
                }   
                   
                //grid.render('grid-example');   
                //grid.getSelectionModel().selectFirstRow();   
            });   
        </script>   
        <div id="grid-example">   
        </div>   
    </body>   
</html>  

 这个我试过了,可用,是个简单易行的好方法。

来源:http://www.cnblogs.com/crazybird/archive/2008/08/13/1267304.html

分享到:
评论
2 楼 wb_1807 2012-08-24  
                   

    [*]
  • [list]
  • [*]
引用
[img][/img][url][/url][flash=200,200][/flash]

[/list]

    [*]

    [*]

    [*]

    [*]

    [*]

    [*]

    [*]
1 楼 shuillo 2011-03-22  
如果我点击取消,不保存了,为什么会报错呢?有什么方法能解决一下吗?

相关推荐

    Ext Grid 导出Excel

    总结来说,"Ext Grid 导出Excel"这个话题涵盖了从JavaScript数据结构到Excel文件格式转换的过程,涉及到的主要技术有Ext JS的Grid和Store组件,以及第三方库SheetJS。这个过程对于那些需要提供数据导出功能的Web应用...

    Ext grid导出excel

    支持Ext3 Ext4导出excel,客户端导出表格,支持各种主流浏览器。

    ext grid 导出 excel

    综上所述,EXT Grid导出Excel涉及到的技术主要包括EXT Grid的数据操作、XLSX.js库的使用、自定义按钮和事件处理、文件下载触发机制以及可能的样式转换和性能优化。通过这些技术,我们可以实现EXT Grid数据的便捷导出...

    Ext grid 导出Excel

    "Ext grid 导出Excel"是一个常见需求,它涉及到了JavaScript库Ext JS中的数据网格组件(Ext Grid)与Microsoft Excel文件格式的交互。下面我们将深入探讨这个主题。 首先,Ext JS是一个强大的JavaScript UI框架,它...

    EXT grid导出EXCEL

    EXT Grid导出Excel功能的核心是利用浏览器的Blob对象和FileSaver.js库。Blob对象可以用来存储二进制数据,而FileSaver.js则提供了在用户本地保存文件的能力。首先,我们需要确保EXT Grid的数据已经加载完成并且正确...

    Ext Grid导出Excel

    这篇博客“Ext Grid导出Excel”探讨的主题是如何将Ext Grid中的数据显示在Microsoft Excel文件中,这在数据分析、报告生成以及数据共享场景中非常常见。通过这个功能,用户可以方便地将网格数据导出为标准的Excel...

    extgrid导出excel

    总结来说,"extgrid导出excel"涉及到使用ExtJS的Grid组件,结合Exporter插件或其他工具,将Grid中的数据转换为Excel格式供用户下载。这是一项实用的功能,可以帮助用户方便地处理和分析在Web应用中展示的大量数据。...

    从Ext grid导出Excel的代码和方法

    在IT行业中,尤其是在Web...总之,从`Ext.grid`导出Excel涉及到数据获取、XML构建、样式处理和浏览器文件操作等多个环节。通过熟练掌握这些技术,你可以为用户提供更强大、更灵活的数据导出功能,提升他们的使用体验。

    ext grid 导出excel 代码实例

    在EXT Grid中,导出数据...以上就是EXT Grid导出Excel的基本流程和技术要点。在"engierManger"这个项目中,你可能需要结合具体的业务逻辑和代码实现这个功能。记住,始终要关注用户体验,确保导出过程快速且用户友好。

    EXTgrid导出excel

    总的来说,“EXTgrid导出excel”是一个实用的功能,通过JavaScript和相关的库,可以方便地实现EXTgrid数据与Excel之间的转换,为用户提供更灵活的数据操作方式。对于开发人员来说,理解这个过程可以帮助优化和扩展这...

    jsp 实现的 EXT Grid 导出excel 例子

    总的来说,这个JSP实现的EXT Grid导出Excel例子是一个实用且常见的Web开发需求,它涉及到EXT JS的使用、AJAX通信、服务器端处理以及文件下载等多个技术点。通过这个例子,开发者可以学习到如何将前端的动态数据有效...

    ext 4.2 grid导出excel 文件

    标题"ext 4.2 grid导出excel 文件"指的是使用Ext JS 4.2版本的grid组件功能,将其中的数据转换成Excel格式,这样用户就可以方便地下载和处理。这个过程通常涉及到JavaScript、服务器端支持以及可能的文件处理库。 ...

    ext实现导出excel的功能。

    在EXTJS这个强大的JavaScript框架中,实现导出Excel功能是一项常见的需求。EXTJS提供了一种高效的方法来将数据导出到Excel格式,使得用户能够方便地处理和分析数据。在这个场景下,我们可以从以下几个关键知识点入手...

    Extjs4 grid 导出为Excel

    Extjs4 grid 导出为Excel 下载后放在网站(不放在网站中导出按钮不能会点击无响应,因为这里调用了swf文件)里可直接运行index.html测试 &lt;link href='...

    EXTJS Grid导出Excel

    以上就是EXTJS Grid导出Excel的基本流程。在实际应用中,我们可能还需要考虑数据格式化、样式设置、错误处理等细节问题,以提供更好的用户体验。同时,由于EXTJS版本更新频繁,不同版本的EXTJS Grid导出功能可能会...

    Ext Grid数据导出到Excel

    Ext.ptx.SlideMsg.msg("信息提示", "导出Excel成功!"); }, failure: function(response, request) { Ext.getBody().unmask(); Ext.MessageBox.alert("出现异常", response.responseText); } }); } ``` ### 3...

    ExtJs grid导出Excel

    ExtJs 4.2版本提供了内置的`Ext.grid.feature.Exporter`插件,它允许你直接从Grid导出数据到CSV或Excel格式。以下是使用此方法的步骤: 1. 在Grid配置中,添加`Exporter`插件。你需要指定导出的类型(如'csv'或'...

    普通方式和Ext方式导出Excel代码

    本篇将详细讲解两种常见的导出Excel的方法:普通方式和Ext方式。 首先,让我们从普通方式导出Excel开始。普通方式通常指的是使用服务器端编程语言(如Java、Python、C#等)生成Excel文件,然后将其作为HTTP响应返回...

    EXT Grid 导出Excel的另类实现,可以只导出Grid中显示的列

    此Demo不包含jar包,请自行添加 博文链接:https://yourgame.iteye.com/blog/228826

    Extjs4前台前台grid导出excel

    总结一下,实现ExtJS4前台Grid导出Excel的功能主要涉及以下几个步骤: 1. 获取Grid的数据。 2. 使用SheetJS库将数据转换为Excel格式。 3. 设置工作簿的元数据,如表头和列宽。 4. 将工作簿写入Blob对象,然后通过`...

Global site tag (gtag.js) - Google Analytics