`
qimo601
  • 浏览: 3416322 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Extjs 从grid中导出Excel表格。后台为C#(绝对好用)(按照自己的需求修改版本)

阅读更多

最近生成Excel表格,稍微得到一点新的体会,特此更新自己开发时候的版本。

开发工具:VS2005

数据库:oracle10.1

浏览器:firefox3.5.9

 

第一步,web层aspx文件 需要载入附件中的ExportGridToExcel.js(注释的地方可以改变表Excel表格最后的展示样式)。

载入方法:在<head></head>之间写入代码:

 <!--导出excel表格脚本-->		
    <script type="text/javascript" src="../../../Js/Common/ExportGridToExcel.js"></script>

 

第二步,基本参数初始化,准备调用导出Excel表格函数ExportExcel(componentsGridPanel, config,"GetComponentsBillList");(这个方法大家可以自己定义参数)

 //==导出Excel配置==//
    var config = {
        store: null,//因为后续可能需要处理分页,因此此处一般不直接传递GridPanel的数据源
     title: '',//标题
     checkId: '',
        storageName: '',
        beginTime: '',
        endTime: '',
        checker: ''
    };
    
    //盘点单基本信息设置
    config.title = title;
    config.checkId = checkId;
    config.storageName = storageName;
    config.beginTime = beginTime;
    config.endTime = endTime;
    config.checker = checker;
    
    //导出Excel表格,生成盘点计划中的部件盘点单  公共函数 CheckWarehouseView.js文件中
    //属性解释:gridPanel名,基本配置信息,store后台方法
    ExportExcel(componentsGridPanel, config,"GetComponentsBillList");

 第三步,函数ExportExcel(gridPanel, config,operate)//原先有部分浏览器的判断,导致导出的文件中文名无法传递。去掉后,到目前没出现安全问题。

//==导出Execl表格==//
//gridPanel:当前grid,config:生成单配置,operate:后台url调用的方法
function ExportExcel(gridPanel, config,operate){
    if (gridPanel) {
        var tmpStore = gridPanel.getStore();
        var tmpExportContent = '';        
        var tmpAllStore = new Ext.data.GroupingStore({//重新定义一个数据源
            proxy: tmpStore.proxy,
            reader: tmpStore.reader
        });
        
        tmpAllStore.load({//获取所有数据
            params: {
                secondLevelStorageId: secondLevelStorageId,
                thirdLevelStorageId: thirdLevelStorageId,
                operate: operate
            }
        });
        tmpAllStore.on('load', function(store){
            config.store = store;
            tmpExportContent = gridPanel.getExcelXml(false, config);//此方法用到了一中的扩展
                if (!Ext.fly('frmDummy')) {
                    var frm = document.createElement('form');
                    frm.id = 'frmDummy';
                    frm.name = id;
                    frm.className = 'x-hidden';
                    document.body.appendChild(frm);
                }
                
                Ext.Ajax.request({
                    url: '../../../Url/Common/ExportServicePage.aspx',//将生成的xml发送到服务器端
                    method: 'POST',
                    form: Ext.fly('frmDummy'),
                    callback: function(o, s, r){
                        //alert(r.responseText);                    
                    },
                    isUpload: true,
                    params: {
                        ExportContent: tmpExportContent,
                        ExportFile: config.storageName+"-"+config.title+ '.xls'
                    }
                });
        });
    }
};

 

第四步,后台页面ExportServicePage.aspx代码(去掉编码处理,这样可以避免传到客户端的文件为乱码)

 

 

//===============================================================================
// Copyright (C) 2010 XXXX有限公司。版权所有。 
//===============================================================================
// 
// 文件名:ExportServicePage.aspx.cs
//
// 文件描述:导出Excel表格
//
//
// 创建人:truman
// 创建时间:2010年3月24日
//
// 修改人:
// 修改时间:
// 修改描述:
//===============================================================================

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace AfcMaintenanceSystem.Url.Common
{
    public partial class ExportServicePage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request["ExportContent"] != "")
                {

                    string tmpFileName = "export.xls";
                    string tmpContent = Request["ExportContent"];//获取传递上来的文件内容
                    if (Request["ExportFile"] != "")
                    {
                        tmpFileName = Request["ExportFile"];//获取传递上来的文件名
                        //tmpFileName = System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(tmpFileName));//处理中文文件名的情况 
                    }

                    Response.Write("&amp;lt;script&amp;gt;document.close();&amp;lt;/script&amp;gt;");
                    Response.Clear();
                    Response.Buffer = true;
                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AddHeader("Content-Disposition", "attachment;filename=\"" + tmpFileName + "\"");
                    Response.Charset = "";

                    this.EnableViewState = false;
                    System.IO.StringWriter tmpSW = new System.IO.StringWriter();
                    System.Web.UI.HtmlTextWriter tmpHTW = new System.Web.UI.HtmlTextWriter(tmpSW);
                    tmpHTW.WriteLine(tmpContent);
                    Response.Write(tmpSW.ToString());
                    Response.End();

                }
            }
        }
    }
}

 

 在界面成gridPanel中设计好布局的格式,经过如上几步代码,即可下载到自己想要格式的Excel文件。

web界面展示:

 

Excel表格展示:

 

 

4
2
分享到:
评论
4 楼 qimo601 2012-04-28  
qingzhishuishou 写道
params: {  
14.                secondLevelStorageId: secondLevelStorageId,  
15.                thirdLevelStorageId: thirdLevelStorageId,  
16.                operate: operate  
17.            } 
里面的参数代表什么啊?老是报内存不够


这几个参应该只是两个Id值,和一个操作方法字符串

应该不是它占得内存
3 楼 qingzhishuishou 2012-04-20  
params: {  
14.                secondLevelStorageId: secondLevelStorageId,  
15.                thirdLevelStorageId: thirdLevelStorageId,  
16.                operate: operate  
17.            } 
里面的参数代表什么啊?老是报内存不够
2 楼 qimo601 2012-04-18  
xiefeng 写道
很好,
可是数据量大,就出问题
100条数据就出问题,怎么回事呢



额不好意思。。。已经两年多没用过Extjs了,完全忘记了。
当时我用的时候,是没有问题的。

欢迎您提供您的解决方法!
1 楼 xiefeng 2011-10-18  
很好,
可是数据量大,就出问题
100条数据就出问题,怎么回事呢

相关推荐

    Extjs4 grid 导出为Excel

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

    EXTJS Grid导出Excel

    ExtJs Grid导出Excel实例源码,后台C#。有分页功能,却仍可实现导出后台所有记录的功能

    Extjs4前台前台grid导出excel

    Extjs4前台前台grid导出excel

    extjs grid数据导出excel文件

    EXTJS中grid控件数据导出excel示例。很好理解。

    EXTJS grid导出EXCEL文件

    EXTJS grid导出EXCEL文件,源码可以直接导入MYECLIPSE使用,EXTJS版本3.2.0

    ExtJs grid导出Excel

    本人亲测在 ExtJs4.2 上可用,有两种实现导出Excel的 方法,资源内附简单的使用说明。因本人没多少资源分了,所以万不得已设置 资源分为 2 分。

    ExtJS导出Excel

    页面级的ExtJS的grid数据导出Excel,速度超快。

    Ext Grid 导出Excel

    NULL 博文链接:https://damen.iteye.com/blog/946039

    extjs动态生成表格,前台+后台

    extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台

    extjs4导出excel

    extjs4 导出 excel export ,经过我的一些修正,可以使用,并导出excel,有问题可以联系我,我的博客里有篇博文可以参考

    前台用extjs后台用java.如何导出excel报表

    }})后台: filename是导出的文件名,heads是excel表头,datalist是数据public void createExcelStream(HttpServletResponse response,String filename,String[] heads,List[]&gt; datalist){ try{ OutputStream os = ...

    Extjs4.2 Grid filter Demo 表格过滤实验

    这是利用sencha cmd 生成的GridFilterDemo工程中的app和build文件夹,其余文件过大并且与主题无关,因此未包含。具体方法,请参看我的博客: 《Extjs4.2 Grid Filter Feature 表格过滤特性》

    EXTJS4导出excel示例

    extjs4.0导出excel示例!赶快下载吧!

    ExtJs6.5Grid列表导出(包含样式)

    使用ExtJs相关的控件类自己实现的一个ExtJs的Grid列表的导出功能,可以导出列表的相关样式等

    extjs模拟excel表格

    extjs模拟excel表格,所有excel的功能在页面上都能体现出来

    ExtJS实现Excel导出

    ExtJS实现Excel导出,最常用的可以解决大部分问题

    extjs实现excel导出

    xtJS是一种基于客户端开发的AJAX应用,是一个与...由于项目需求,我们需要实现Excel的导出功能,前台界面是用ExtJS实现。如何实现呢? 使用POI组件实现excel导出功能 //获取问题列表 List&lt;Suggestion&gt; targetStock

    ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)

    NULL 博文链接:https://northc.iteye.com/blog/1450965

    extjs gridToExcel

    这是一个简单的在extjs下的grid转化到Excel,里面代码简单易懂,在包里面还集成了复杂的js转化函数,不过本人没有用它来进行转化! 注:在用EXTJS的导出Excel技术中,一定要注意分页的问题

Global site tag (gtag.js) - Google Analytics