登录  /  注册
首页 > web前端 > js教程 > 正文
ExtJs Excel导出并下载IIS服务器端遇到的问题_extjs
php中文网
发布: 2016-05-16 18:01:59
原创
1176人浏览过
项目是Extjs的主要针对于Extjs GridPanel数据导出这块先做一下说明。
我们可以通过Ext.getcmp()方法获取到GridPanel对象并通过重写的方法获取Excel字符串具体方法可以百度到。这个应该也不是什么大问题。
复制代码 代码如下:

//输出报表
function ExportReport(title) {
var vExportContent = Ext.getCmp("gridPanel").getExcelXml(null, title);
if (Ext.isIE6 || Ext.isIE7 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3 || Ext.isIE8) {
// var frm = document.createElement('form');
// frm.id = 'frmExtjs';
// frm.className = 'x-hidden';
// document.body.appendChild(frm);
var f = document.createElement("form");
f.id = "frmExtjs";
document.body.appendChild(f);
var i = document.createElement("input");
i.type = "hidden";
i.id = "exportContent";
i.name = "exportContent";
f.appendChild(i);
i.value = vExportContent;
Ext.Ajax.request({
url: 'frmExcel.aspx',
method: 'POST',
form: Ext.get('frmExtjs'),
isUpload: true,
params: { FileName: title + '.xls' }
})
} else {
document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
}

以上是表单虚拟提交的方法。但是实验了很多方法。发现数据post过去后无法生成Excel通过生成后下载方法也无法实现。(即在服务器端无法生成,但本机可以生成。)经过多次思路的转折后来想到通过数据分析来调试。看看到底数据是否post到网页
复制代码 代码如下:

string tmpFileName = "export.xls";
string tmpContent = Request["ExportContent"];
if (Request["FileName"] != "")
{
tmpFileName = Request["FileName"];//获取传递来的文件名?
tmpFileName = System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(tmpFileName));//处理中文文件名的情况
}
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + tmpFileName + "\"");
Response.Charset = "";
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();

以上是生成并下载的CS文件

clip_image002

后来找到这个工具

具体步骤很简单:

打开工具栏上的插件

clip_image004

虽然是英文的,但是不在话下。文档都是看的英文的。

clip_image006

clip_image008

两张近照

这边就可以看到post过去以后的报错信息。

这个是无刷新post无法看到的页面。正因为这个而纠结了好久。今天终于知道哪错了。

把错误信息复制到文本生成html文件。

clip_image010

原来是.net安全机制搞的鬼。

在web.config 的System.Web 后面加两句话就搞定了。

好了 问题解决了 结博。

相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 技术文章
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2023 //m.sbmmt.com/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

 | 本站CDN由 数掘科技 提供

登录PHP中文网,和优秀的人一起学习!
全站2000+教程免费学