>  기사  >  웹 프론트엔드  >  ExtJs Excel 내보내기 및 다운로드 문제가 IIS 서버에서 발생했습니다.

ExtJs Excel 내보내기 및 다운로드 문제가 IIS 서버에서 발생했습니다.

WBOY
WBOY원래의
2016-05-16 18:01:591625검색

이 프로젝트는 Extjs입니다. 주로 Extjs GridPanel 데이터 내보내기에 중점을 둡니다.
Ext.getcmp() 메소드를 통해 GridPanel 객체를 얻을 수 있고 재정의된 메소드를 통해 Excel 문자열을 얻을 수 있습니다. 구체적인 메소드는 Baidu에서 찾을 수 있습니다. 이는 큰 문제가 되지 않습니다.

코드 복사 코드는 다음과 같습니다.

//보고서 출력
기능 내보내기 보고서 (제목) {
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"; .body.appendChild(f);
var i = document.createElement("input");
i.type = "hidden";
i.id = "exportContent"; name = "exportContent";
f.appendChild(i);
i.value = vExportContent;
Ext.Ajax.request({
url: 'frmExcel.aspx',
메서드 : 'POST',
form: Ext.get('frmExtjs'),
isUpload: true,
params: { FileName: title '.xls' }
})
} else {
document.location = 'data:application/vnd.ms-excel;base64,' Base64.encode(vExportContent);
}


위는 가상 제출 방법입니다. 형태의. 하지만 나는 여러 가지 방법을 시도했다. 데이터 게시 후 엑셀을 생성할 수 없고, 생성 후 다운로드 방식을 통해서도 엑셀을 생성할 수 없는 것으로 확인되었습니다. (즉, 서버 측에서는 생성할 수 없지만 로컬 머신에서는 생성할 수 있습니다.) 여러 우여곡절 끝에 마침내 데이터 분석을 통한 디버깅을 생각하게 되었습니다. 웹페이지에 데이터가 게시되었는지 확인



코드 복사
코드는 다음과 같습니다.string tmpFileName = "export.xls"; string tmpContent = 요청["ExportContent"]
if (요청["FileName"] != "")
{
tmpFileName = 요청 ["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 = 새 System.IO.StringWriter();
System.Web.UI.HtmlTextWriter tmpHTW = 새 System.Web .UI.HtmlTextWriter(tmpSW);
tmpHTW.WriteLine(tmpContent);
Response.Write(tmpSW.ToString())



위는 생성되어 다운로드된 CS 파일입니다.


나중에 이 도구를 찾았습니다.

구체적인 단계는 매우 간단합니다. 툴바에서 플러그인 열기 clip_image002

영어로 되어 있지만 상관없습니다. 문서는 모두 영어로 되어 있습니다.

clip_image004

clip_image006 최근 사진 2장

여기에서 게시물이 게시된 후 나타나는 오류 메시지를 확인할 수 있습니다. 게시물을 새로고침하지 않으면 볼 수 없는 페이지입니다. 나는 오랫동안 이것으로 어려움을 겪었습니다. 오늘 마침내 무엇이 잘못되었는지 알아냈습니다. clip_image008오류 메시지를 텍스트로 복사하여 HTML 파일을 생성하세요.

.net 보안 메커니즘으로 인해 발생한 것으로 밝혀졌습니다.

web.config에서 System.Web 뒤에 두 문장을 추가하면 완료됩니다. clip_image010<페이지 검증요청="false" /> 알겠습니다. 문제가 해결되었습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.