找回密码
 立即注册

QQ登录

只需一步,快速开始

志在天涯

注册会员

23

主题

61

帖子

188

积分

注册会员

积分
188

活字格认证微信认证勋章元老葡萄

志在天涯
注册会员   /  发表于:2015-7-22 15:41  /   查看:9580  /  回复:6
你好,我需要知道 导出 excel文件从服务器端发送到浏览器的时间,在这期间要显示进度条。  利用AJAX方式导出excel 不知是否可行,代码如下:
function exportFileWithAjax(serverUrl, formData, successCallback, errorCallback) {
    formData = htmlSpecialCharsEntityEncode(formData);
    $.ajax({
        url: serverUrl, //Server script to process data
        type: 'POST',
        success: function completeHandler(data, textStatus, jqXHR) {
            alert("导出成功");
        },
        error: function errorHandler(jqXHR, textStatus, errorThrown) {
            alert("导出失败");
        }
    });
}

替换你们例子中的
function exportFile(serverUrl, content) {
    var formInnerHtml = '<input type="hidden" name="type" value="application/json" />';
    formInnerHtml += '<input type="hidden" name="data" value="' + htmlSpecialCharsEntityEncode(content) + '" />';
    var $iframe = $("<iframe style='display: none' src='about:blank'></iframe>").appendTo("body");
    $iframe.ready(function () {
        var formDoc = getiframeDocument($iframe);
        formDoc.write("<html><head></head><body><form method='Post' action='" + serverUrl + "'>" + formInnerHtml + "</form>dummy windows for postback</body></html>");
        var $form = $(formDoc).find('form');
        $form.submit();
    });
}
,但是返回500错误,
错误信息如下:

{
"Message":"An error has occurred.",
"ExceptionMessage":"Value cannot be null.\r\nParameter name: content",
"ExceptionType":"System.ArgumentNullException",
"StackTrace":"   at System.Net.Http.StringContent..ctor(String content, Encoding encoding, String mediaType)\r\n   at GrapeCity.ExcelIO.Controllers.ExportController.SpreadParamBinding.<ExecuteBindingAsync>d__6.MoveNext()"
}
。请问如何解决。谢谢

6 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-7-22 18:50:00
沙发
回复 1楼志在天涯的帖子

感谢对该问题的反馈。
根据你提供的代码来看,Post的格式是spreadjs不支持的。
是否有其他方案,我还需要调查后才能给你回复。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
志在天涯
注册会员   /  发表于:2015-7-23 16:17:00
板凳
有解决方案了吗?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-7-23 18:10:00
地板
回复 3楼志在天涯的帖子

你好。
ExcelIO export返回的是excel stream,无法使用AJAX, 只能通过form post的方式回传下载。
请查看官方文档:http://api.jquery.com/jQuery.ajax/
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
志在天涯
注册会员   /  发表于:2015-7-24 15:19:00
5#
也就是我现在无法在JS脚本中知道文件何时下载下来了。
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2015-7-24 16:46:00
6#
很抱歉,目前SpreadJS的ExcelIO Service是直接把Excel文件当做附件回传的,浏览器会直接当做文件下载处理。
这是我们Server端的代码:
Result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue(&quot;attachment&quot;);
将来(目前还没有发布计划),我们可能会把Excel导入导出的功能作为一个独立的dll, 你可以在你自己的 Server 中实现SpreadJS的导入导出Excel能力。这样,你就可以自己在Server端实现你想要的功能。

评分

参与人数 1金币 +200 收起 理由
Alice + 200 奖励金币

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-7-24 17:22:00
7#
回复 5楼志在天涯的帖子

很抱歉不支持。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部