ExtJs Excel導(dǎo)出并下載IIS服務(wù)器端遇到的問題
我們可以通過Ext.getcmp()方法獲取到GridPanel對象并通過重寫的方法獲取Excel字符串具體方法可以百度到。這個應(yīng)該也不是什么大問題。
//輸出報表
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);
}
以上是表單虛擬提交的方法。但是實驗了很多方法。發(fā)現(xiàn)數(shù)據(jù)post過去后無法生成Excel通過生成后下載方法也無法實現(xiàn)。(即在服務(wù)器端無法生成,但本機可以生成。)經(jīng)過多次思路的轉(zhuǎn)折后來想到通過數(shù)據(jù)分析來調(diào)試??纯吹降讛?shù)據(jù)是否post到網(wǎng)頁
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無法看到的頁面。正因為這個而糾結(jié)了好久。今天終于知道哪錯了。
把錯誤信息復(fù)制到文本生成html文件。
原來是.net安全機制搞的鬼。
在web.config 的System.Web 后面加兩句話就搞定了。
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
好了 問題解決了 結(jié)博。
相關(guān)文章
ExtJs Excel導(dǎo)出并下載IIS服務(wù)器端遇到的問題
進項目一個多月不到。熟悉了這個二次開發(fā)的項目因為前面遺留下來的問題比較嚴(yán)重報表的導(dǎo)出和圖表以及打印功能都沒有實現(xiàn),所以這兩天工作量比較大。2011-09-09JavaScript的ExtJS框架中數(shù)面板TreePanel的使用實例解析
TreePanel為ExtJS提供了一個方便的樹結(jié)構(gòu)數(shù)據(jù)展示,尤其是在處理JSON格式數(shù)據(jù)時十分常用,接下來我們就來看兩則JavaScript的ExtJS框架中數(shù)面板TreePanel的使用實例解析2016-05-05Extjs 4.x 得到form CheckBox 復(fù)選框的值
CheckBox(復(fù)選框)主要用來接收用戶選擇的選項,那么如何通過Extjs 4.x 得到form CheckBox的值呢?下面有個不錯的方法,大家值得一看2014-05-05ExtJS Ext.MessageBox.alert()彈出對話框詳解
Ext.MessageBox是一個工具類,他繼承自O(shè)biect對象,用來生成各種風(fēng)格的信息提示對話框,Ext.Msg是該類的別名,使用Ext.MessageBox和用Ext.Msg效果是一樣的,而后者提供了更簡單的方式。2010-04-04Ajax請求在數(shù)據(jù)量大的時候出現(xiàn)超時的解決方法
這篇文章主要介紹了Ajax請求在數(shù)據(jù)量大的時候出現(xiàn)超時的解決方法,需要的朋友可以參考下2014-02-02