一、在程序中增加附件中js文件的引用:
二、定义一个导出Excel文件的函数:
function ExportExcel(gridPanel,config) {
if (gridPanel) {
var tmpStore = gridPanel.getStore();
var tmpExportContent = '';
//以下处理分页grid数据导出的问题,从服务器中获取所有数据,需要考虑性能
var tmpParam = Ext.ux.constructor(tmpStore.lastOptions);//此处克隆了原网格数据源的参数信息
//此处作者原先为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.load(tmpParam);//获取所有数据
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({
url: 'service/ExportServicePage.aspx',//将生成的xml发送到服务器端
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);
}
});
}
};
ExportServicePage.aspx后台代码:
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("<script>document.close();</script>");
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();
}
}
}
其中前台用到的clone函数代码:(我用的时候没用着)
Ext.ux.clone = function(obj) {
if (obj == null || typeof (obj) != 'object')
return obj;
if (Ext.isDate(obj))
return obj.clone();
var cloneArray = function(arr) {
var len = arr.length;
var out = [];
if (len > 0) {
for (var i = 0; i < len; ++i)
out[i] = Ext.ux.clone(arr[i]);
}
return out;
};
var c = new obj.constructor();
for (var prop in obj) {
var p = obj[prop];
if (Ext.isArray(p))
c[prop] = cloneArray(p);
else if (typeof p == 'object')
c[prop] = Ext.ux.clone(p);
else
c[prop] = p;
}
return c;
};
三、需要导出时就可以这么使用了:
var config={
store: null,//因为后续可能需要处理分页,因此此处一般不直接传递GridPanel的数据源
title: ‘’//需要显示标题
};
ExportExcel(MyGrid,config);
已知的不足:在FF下导出时,总是以文件名为XXXXX.xls.part的方式,不知道为什么,呵呵。
还有需要注意的一点,因为从客户端往服务器端传递xml字符串时,可能会因为安全性问题导致内容传递不上去,如果出现这种情况,可以在web.config的system.web节中增加<pages validaterequest="false"></pages>,如果不想针对所有页面都用此配置,也可以在指定页面设置就可以了,详细请参考MSDN。
来源:一起Ext
原文地址:http://www.17ext.com/showtopic-3008.aspx
分享到:
相关推荐
标题中的“Extjs 从grid中导出Excel表格”指的是使用ExtJS框架,一个流行的JavaScript库,来将数据从Grid组件导出到Microsoft Excel格式的文件。在ExtJS中,Grid是一个用于展示数据的组件,它支持各种操作,如排序、...
本文将深入讲解EXTJS Grid如何实现数据导出到Excel文件的功能。 首先,我们要明白EXTJS Grid的数据导出到Excel的过程通常涉及到以下几个步骤: 1. **获取Grid数据**:在EXTJS中,Grid的数据存储在Store对象中。要...
Extjs4 grid 导出为Excel 下载后放在网站(不放在网站中导出按钮不能会点击无响应,因为这里调用了swf文件)里可直接运行index.html测试 <link href='...
当需要将Grid中的数据导出到Excel时,可以采用两种方法,这些方法在ExtJs 4.2版本中已经得到很好的支持。 **方法一:使用XLSX.js库** XLSX.js是一个JavaScript库,能够方便地读取和写入Excel文件。在ExtJs中,你...
2. **数据导出**:在EXTJS中,数据导出功能通常涉及到将Grid中的数据显示在其他格式,如CSV、PDF或Excel中。这通常是通过编写自定义插件或者扩展Grid的功能来实现的。 3. **EXTJS 3.2.0**:这是EXTJS的一个特定版本...
在ExtJS4中,我们可能有以下场景:用户在Grid中查看数据,然后希望将这些数据导出到Excel以便进一步分析或处理。 要实现这个功能,我们可以利用JavaScript库如`SheetJS`(又名`js-xlsx`),这是一个强大的开源库,...
在EXTJS Grid中导出数据到Excel是一种常见的需求,它允许用户方便地处理和分析大量数据。EXTJS是一个强大的JavaScript库,专门用于构建富客户端Web应用程序,而Grid组件是其核心部分,用于展示和管理表格数据。在...
在标题中提到的"ExtJS4.0 分享Grid导出Excel插件"是一个扩展功能,允许用户将ExtJS Grid中的数据导出为Microsoft Excel格式的文件。这对于数据分析、报表生成以及数据共享非常有用。 这个插件是针对ExtJS 4.0版本...
当我们需要将Ext Grid中的数据导出为Excel格式时,这通常涉及到数据的处理和转换,以便用户能够方便地在离线环境中分析或共享。这篇博客"Ext Grid 导出Excel"可能详细介绍了如何实现这一功能。 首先,让我们理解Ext...
"extjs4导出excel"的功能就是实现了这个需求,让用户能够在ExtJS 4应用中方便地导出表格数据到Excel文件。 在ExtJS 4中实现数据导出至Excel通常涉及以下几个关键步骤: 1. **数据收集**:首先,你需要收集要导出的...
在本文中,我们将深入探讨如何使用ExtJS来模拟Excel表格,以及实现Excel的各种功能。 首先,ExtJS中的GridPanel组件是实现模拟Excel表格的核心。GridPanel允许我们展示大量数据,并提供了诸如排序、过滤、分页等...
在ExtJs 6.5版本中,开发人员经常需要实现数据导出功能,特别是对于Grid组件,这是一项常见的需求。Grid列表通常用于展示大量结构化的数据,而导出功能可以帮助用户将这些数据保存到本地,方便进一步分析或共享。...
在EXTJS4中,导出表格数据到Excel通常涉及以下几个关键步骤: 1. **准备数据**:首先,你需要确保表格中的数据已经加载完毕。EXTJS4的GridPanel可以通过Store来管理数据,你需要确保Store已经填充了要导出的数据。 ...
在IT行业中,前端和后端的协作是实现各种功能的关键,比如在本例中,我们需要在前端使用ExtJS,后端使用Java来实现一个导出Excel报表的功能。这个功能允许用户点击按钮后,系统生成一个Excel文件,包含了指定的数据...
在IT行业中,前端开发经常会遇到需要将数据导出到Excel的需求,这有助于用户进行数据分析、存储或分享。本文主要探讨的是使用Extjs4.2框架实现纯前台导出Excel功能,并针对多次导出失败的问题进行了修复。 Extjs是...
"ExtJS导出Excel"的功能则是允许用户将`grid`中的数据方便地导出为Excel格式,这样可以方便数据的保存、分析和共享。 在实现页面级的ExtJS `grid`数据导出到Excel时,通常会涉及到以下几个关键知识点: 1. **ExtJS...
在标题和描述中提到的“导出Excel”功能,就是指将数据网格中的数据导出为Microsoft Excel格式,以便用户可以进一步分析或存储数据。 在ExtJS6中,数据网格可以配置分组、分组合计行以及二重表头,这些都是增强数据...
标题 "extjs把数据导出至excel" 涉及的是使用ExtJS 3这个JavaScript框架将数据导出到Excel文件的技术。ExtJS是一个用于构建Web应用的前端库,提供了丰富的组件和API,使得在浏览器端处理数据变得更加方便。在这个...
这是利用sencha cmd 生成的GridFilterDemo工程中的app和build文件夹,其余文件过大并且与主题无关,因此未包含。具体方法,请参看我的博客: 《Extjs4.2 Grid Filter Feature 表格过滤特性》