테이블을 내보내려면 다음과 같은 ASP.NET MVC 4 코드를 사용하십시오 (jTable jquery 플러그인에서 생성되었지만 관련없는 테이블 일뿐입니다). 다운로드 파일 대화 상자를 트리거하지 않습니다.Excel 코드로 내보내기가 다운로드되지 않습니다.
다른 문제는 HTML 인코딩 테이블이 .ajax() POST에 의해 전송되었지만 string inp = Request["input"];
으로 값을 처리하려고 할 때 오류가 발생합니다. 나는 [ValidateInput(false)]
선언을 모두 사용하여 & [HttpPost] 뒤에 "HTML 테이블을 보냄에 따라"클라이언트에서 잠재적으로 위험한 request.form 값을 발견했다는 오류를 극복했지만 그 선언은 발생되는 "잠재적으로 위험한으로 Request.Form 값 ..."예외 - 내 .cshtml 페이지
코드
$("#exportToExcel").on("click", function (e) {
$.ajax({
url: '/Reports/Export',
cache: false,
dataType: "html",
type: 'POST',
data: { input: $(".jtable").html() },
success: function (data) {
},
complete: function() {
}
});
})
보고서 컨트롤러 코드 :
[ValidateInput(false)]
[HttpPost]
public void Export()
{
//string inp = Request["input"];
string body = "<table><tr><td>2</td><td>3</td></tr><table>";
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=data.xls");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
//Response.ContentType = "application/vnd.ms-excel";
Response.ContentType = "application/force-download";
Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
Response.Write("<head>");
Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
Response.Write("<!--[if gte mso 9]><xml>");
Response.Write("<x:ExcelWorkbook>");
Response.Write("<x:ExcelWorksheets>");
Response.Write("<x:ExcelWorksheet>");
Response.Write("<x:Name>Report Data</x:Name>");
Response.Write("<x:WorksheetOptions>");
Response.Write("<x:Print>");
Response.Write("<x:ValidPrinterInfo/>");
Response.Write("</x:Print>");
Response.Write("</x:WorksheetOptions>");
Response.Write("</x:ExcelWorksheet>");
Response.Write("</x:ExcelWorksheets>");
Response.Write("</x:ExcelWorkbook>");
Response.Write("</xml>");
Response.Write("<![endif]--> ");
Response.Write("<![endif]--> ");
Response.Write("</head>");
Response.Write("<body>");
Response.Write(body);
//Response.Write(inp);
Response.Write("</body>");
Response.Write("</html>");
Response.End();
}
감사합니다. @shakib. 이 정보는 나에게 유용 할 것이다. 내 주요 문제는 다운로드를 실행하는 것입니다. 컨트롤러 내보내기 메서드 코드가 더미 테이블에도 작동하지 않습니다. 일단 내가 진짜 테이블 내용을 보내 귀하의 코드를 사용할 수있는 작업을 얻을. – user2011507
위에서 언급 한 코드가 다운로드를 시작합니다. 이제'Export' 액션을 올바른 데이터로 작동시켜야합니다. 이 메소드에서 액션 파라미터'public void Export (string input)'또는 formcollection'public void Export (FormCollection data) {var input = data [ "input"]; }' – shakib
많은 감사합니다! 그것은 일했다! – user2011507