作家
登录

ExtJs Excel导出并下载IIS服务器端遇到的问题

作者: 来源:www.28hudong.com 2013-03-30 00:44:28 阅读 我要评论

项目是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文件 后来找到这个工具 具体步骤很简单: 打开工具栏上的插件 虽然是英文的,但是不在话下。文档都是看的英文的。 两张近照 这边就可以看到post过去以后的报错信息。 这个是无刷新post无法看到的页面。正因为这个而纠结了好久。今天终于知道哪错了。 把错误信息复制到文本生成html文件。 原来是.net安全机制搞的鬼。 在web.config 的System.Web 后面加两句话就搞定了。 <httpRuntime requestValidationMode="2.0" /> <pages validateRequest="false" /> 好了 问题解决了 结博。

  推荐阅读

  容易被忽略的JS脚本特性

一、容易被忽略的局部变量 复制代码 代码如下: var a = 5; (function(){ alert(a); var a = a ++; alert(a); })() alert(a); 思考这段代码的执行结果。 执行后,看看是否和你想象的一致? ok,这段代码里核心的知>>>详细阅读


本文标题:ExtJs Excel导出并下载IIS服务器端遇到的问题

地址:http://www.17bianji.com/kaifa2/JS/24182.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)