利用Extjs导出excel文件(转)

本文介绍如何在Extjs应用中利用GridPanel的功能导出数据到Excel文件。通过将GridPanel中的数据转化为XML,然后发送到后台,后台接收到请求后将数据以Excel格式响应。在Struts2框架下,后台代码实现相对简单,从而实现纯前端的Excel导出功能。
摘要由CSDN通过智能技术生成

最近在做一个项目,需要在原先的表格的基础上导出excel文件,原先是想用java后台来实现这个功能,但是,后来发现,原来extjs也附带有导出excel表的功能,就在GridPanel的基础上导出,http://www.blogjava.net/rockblue1988/archive/2012/02/29/370977.html,这是我做的时候,参考的一篇网上的文章。具体的做法是,将extjsGridPanel里面的数据拿出来,转换成xml,然后发送给后台,后台响应之后,将数据输出为Excel的格式,具体代码如下。

0
31
32
33
34
35
36
37
38
//利用extjs导出excel文件---begin
    function exportExcel(gridpanel) { //传入的GridPanel的实例
                                var vExportContent = gridpanel.getExcelXml(); //获取数据
                            if (Ext.isIE8||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 : exportExcelGrid,
                                                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);
                            }
                        }
     
     
//利用extjs导出excel文件---end

  除此之外,还要引入一个文件

/**
 * allows for downloading of grid data (store) directly into excel
 * Method: extracts data of gridPanel store, uses columnModel to construct XML excel document,
 * converts to Base64, then loads everything into a data URL link.
 *
 * @author      Animal      <extjs support team>
 *
 */
 
/**
 * base64 encode / decode
 *
 * @location    http://www.webtoolkit.info/
 *
 */
 
var Base64 = (function() {
    // Private property
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
    // Private method for UTF-8 encoding
    function utf8Encode(string) {
        string = string.replace(/\\r\\n/g,"\\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.from
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值