最近因为项目问题,需要解决Extjs导出成Excel的问题。

下面简单描述这个问题解决的步骤如下:

1、先在js文件里写了一个button的handler事件,通过点击按钮,来实现调用ExportExcel(GridPanel,{store:null, title: ' '})

ExportExcel方法的源码如下:

/** Execl导出方法 **/
function ExportExcel(gridPanel, config) {
if (gridPanel) {
var tmpStore = gridPanel.getStore();
var tmpExportContent = ''; //以下处理分页grid数据导出的问题,从服务器中获取所有数据,需要考虑性能
var tmpParam = Ext.ux.clone(tmpStore.lastOptions); //此处克隆了原网格数据源的参数信息 if (tmpParam && tmpParam.params) {
delete (tmpParam.params[tmpStore.paramNames.start]); //删除分页参数
delete (tmpParam.params[tmpStore.paramNames.limit]);
}
var tmpAllStore = new Ext.data.GroupingStore({//重新定义一个数据源
proxy: tmpStore.proxy,
reader: tmpStore.reader
});
tmpAllStore.on('load', function (store) {
config.store = store;
tmpExportContent = gridPanel.getExcelXml(false, config); //此方法用到了一中的扩展
if (Ext.isIE || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) {//在这几种浏览器中才需要,IE8测试不能直接下载了
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({
//将生成的xml发送到服务器端,需特别注意这个页面的地址
url: 'GridToExcel.aspx',
method: 'POST',
form: Ext.fly('frmDummy'),
callback: function (o, s, r) {
//alert(r.responseText);
},
isUpload: true,
params: { ExportContent: tmpExportContent, ExportFile: gridPanel.id + '.xls' }
});
} else {
document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(tmpExportContent);
}
});
tmpAllStore.load(tmpParam); //获取所有数据
}
};

同时需要在引用了上面js文件的 html文件/aspx文件里 再引用一个GridToExecl.js文件,因为代码太多了,所以我把它上传了,就不贴代码了。

GridToExecl.js

2、GridToExcel.aspx页面的相关代码:

前台:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridToExecl.aspx.cs" Inherits="GridToExecl" ValidateRequest="false" %>

//ValidateRequest = "false"非常重要,缺少它,IE系列浏览器不能正常导出

后台:

public partial class GridToExcel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request["ExportContent"] != "")
{
string tmpFileName = "excel.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();
}
}
}
}

Extjs — Grid数据导出成Excel的更多相关文章

  1. Pl/sql 如何将oracle的表数据导出成excel文件?

    oracle将表数据导出成excel文件的方法 1)在SQL窗体上,查询需要导出的数据 --查询数据条件-- ; 结果视图 2)在查询结果的空白处,右键选择Copy to Excel 3) 查看导出e ...

  2. jquery.table2excel,将HTML的table标签数据导出成excel

    <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...

  3. 使用SSM框架实现Sql数据导出成Excel表

    SSM框架实现SQL数据导出Excel 思路 首先在前端页面中添加一个导出功能的button,然后与后端controller进行交互. 接着在相应的controller中编写导出功能方法. 方法体: ...

  4. ExtJS:Grid数据导出至excel实例

    导出函数ExportExcel() var config={ store: alldataStore, title: '测试标题' }; var tab=tabPanel.getActiveTab() ...

  5. 将数据导出成excel表

    /// <summary> /// 生成excel表 /// </summary> /// <param name="dt">数据表</p ...

  6. 有趣的Node爬虫,数据导出成Excel

    最近一直没更新了诶,因为学习Backbone好头痛,别问我为什么不继续AngularJs~因为2.0要出来了啊,妈蛋!好,言归正传,最近帮我的好基友扒数据,他说要一些股票债券的数据.我一听,那不就是要 ...

  7. Extjs中数据导出到Excel

    1.前端代码(URL+前端传入参数) window.location.href="studnetMaintainAction!exportExcel"               ...

  8. 将DataTable中的数据导出成Excel

    public bool ExportFile(System.Data.DataTable dt){    SaveFileDialog sfd = new SaveFileDialog();    s ...

  9. mysql中数据导出成excel文件语句

    代码如下 复制代码 mysql>select * from xi_table into outfile ’d:test.xls’; 导出为txt文件:  代码如下 复制代码 select * f ...

随机推荐

  1. UIView和UIImageView 旋转消除锯齿方法

    方法一: calendarImageView_ =[[UIImageView alloc] initWithFrame:CGRectMake(3,3,60,72)];     calendarImag ...

  2. dedecms让channelartlist标签支持currentstyle属性方

    把dedecms中用channelartlist当导航的站很普遍,但是有的站需要用到当前页中导航样,就是随着不同的页面,导航样式也随着变化. 首先打开include\taglib\channelart ...

  3. 15、Spring Boot使用Druid和监控配置【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52001740目录(?)[-] 1添加Maven依赖 或jar包 2配置数据源相关信息 3 ...

  4. 未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 &#39;***&#39; 附近)中指定了非布尔类型的表达式。

    机房收费系统中,有些人在联合查询这个模块用的是存储过程.我先尝试着在数据库中建立了一个视图.然后在UI层做个推断并生成查询条件strCondition. 在机房收费系统的"联合查询" ...

  5. DFRobot万物互联大赛第一轮

    前言 原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正. DF搞的这个比赛还挺有趣:micro:bit × OBLOQ DF创客社区玩转物联网挑战赛,一边在写文章一边在爱奇艺上看着印度电影 ...

  6. iOS开发之解析XML格式数据

    XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用 ...

  7. Oracle 字段类型

    Oracle 字段类型 http://www.cnblogs.com/lihan/archive/2010/01/06/1640547.html 字段类型 描述 字段长度及其缺省值 CHAR (siz ...

  8. Android - 单例模式(singleton)的使用

    单例模式(singleton)的使用 本文地址:http://blog.csdn.net/caroline_wendy 单例(singleton)是特殊的Java类,在创建实例时.一个类仅同意创建一个 ...

  9. 命令行高效操作Git,看这篇就够了

    原文地址:http://blog.jboost.cn/2019/06/16/use-git.html 对于软件开发人员来说,git几乎是每天都需要接触的工具.但对于相处如此亲密的工作伙伴,你对它的了解 ...

  10. java中 ExecutorService,Executor,ThreadPoolExecutor的用法

    package com; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import ...