用npoi导出Excel时,用的 $.post("@url", params);这种方式导出文件respnose的是乱码,但用form表单的方式却可以输出文件,而我现在却又没办法用form这种方式。求大神指点。以下是输出文件的后台方法。
public void Export(string fileName) { var ms = new MemoryStream(); _workbook.Write(ms); var response = HttpContext.Current.Response; response.Charset = "UTF-8"; response.ContentEncoding = Encoding.GetEncoding("UTF-8"); response.ContentType = "application/octet-stream"; response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName) + ".xls"); response.BinaryWrite(ms.ToArray()); ms.Close(); ms.Dispose(); response.Flush(); response.End(); }
$.post("@url", params);发出的是ajax请求;
例如:$.post("url",{},function(ajaxobj){
//todo ... 此处 ajaxobj=***.xls文件.
},"json").
所以不行啦.
form表单是OK的.会提示下载文件.
只能用form么?用form的话代价太大了
@未找到对象: 你想做到什么效果?
@未找到对象: 如果只是想点击下载,就不要用form,用url(target='_blank')传参,服务器Export(string fileName) 处理参数并返回生成的xls.文件,就自动下载文件了.
@iceKnight:主要是参数问题,目前传参数是通过js传对象MC后台接收对象的方式过滤数据的,如果用form的话是不能通过这种方式传参的
@未找到对象: 那你好好理解HTTP协议.就算是js传值,一样可以用form代替.因为 form是原生的.
你可以用fidder等看看js传值的报文. Form是可以做到的.
附:我还是不理解你的需求.
window.location.href='你的Excel文件的路径';
ajax成功后会进success。 用ajax也是可以的,会麻烦点。
参考:http://www.cnblogs.com/cdemo/p/5225848.html