日期:2014-05-17  浏览次数:20635 次

导出Excel问题,流跟json数据的转换问题?
前台:<input id="InsertToExcel_btn" type="button" value="导出Excel" class="btn"/>

 
JScript code
 //导出Excel功能
        function inserToExcelBtnClick() {
            var sendID = "";
            var url = "ToExcel.action";
            for (var i = 0; i < count; i++) {
                sendID = sendID + ";" + treeNodeID[i];
            }
            sendID = sendID.slice(1);
            alert(sendID);
            $.post(url,
        { "type": mappingType, "list": sendID },
        function() { },
        "json");
        };


后台ToExcel的主要代码:
 
C# code
 MemoryStream ms = NPOIHelper.ToExcel(RequirementDetailForXls) as MemoryStream;
                context.Response.AddHeader("Content-Disposition", ("attachment;filename=" + filename));
                context.Response.Charset = "UTF-8";
                context.Response.ContentType = "application/json";
                context.Response.BinaryWrite(ms.ToArray());

                ms.Close();
                ms.Dispose();


运行结果:
浏览器没有出现Excel的下载对话框,在firebug的里面看Response,是一堆乱码。

PS:菜鸟,初学,可能连问题都问得不是很清楚,还请大神们见谅,不吝赐教,谢谢!

------解决方案--------------------
异步传递文件,很抱歉,这个功能 可能要等html5了

如果你只是不想刷新页面,
你可以这样


JScript code
  $.post(url,
        { "type": mappingType, "list": sendID },
        function() { },
        "json");

------解决方案--------------------
src长度限制2046字节,个人测试2020长度极限(IE)

HTML5貌似增加了新的通信对象,支持服务器 推,目前没有研究,你可以看看