我有一些JQGrid应该导出为excel的数据。所以,我们编写了一个java servlet来将数据写入excel并发送回去。从客户端,我们通过发送JSON数据来使用AJAX JSONP请求。我能够击中servlet和servlet将创建的excel发送回客户端。但我无法看到客户端的excel或任何类型的输出。JQuery Excel导出问题
当我使用Fiddler并观察http调用时,发现应用程序收到结果。但仍然没有显示出结果。
这是我的结果标题,我收到了。
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Disposition: attachment; filename=PistonData.xls
Content-Type: application/vnd.ms-excel
Content-Length: 6144
Date: Tue, 27 Mar 2012 08:49:04 GMT
如何使用JQuery打开Excel的结果?有人可以请建议我一种方法来解决这个问题。
更新#1 忘了包括要求
$.ajax({
type: "POST",
dataType: "jsonp",
contentType:'application/vnd.ms-excel',
url: "http://devmachine:9010/axis/SPSServlet",
data: param,
success: function (dataToSend) {
alert(dataToSend);
}
});
更新#2 按照Oleg的建议,我制定了一个解决这个问题。
这里是我的代码:
<form id="frmExcelExport" style="display:none;">
<input type=hidden id="partId" name="partId" />
<input type=hidden id="columnNames" name="columnNames" />
<input type=hidden id="data" name="data" />
</form>
$('#columnNames').val(colModStr);
$('#partId').val(currentPartID);
$('#data').val(dataStr);
var urlForExport = "http://devmachine:9010/axis/SPSServlet";
$('#frmExcelExport').attr("method", "post");
$('#frmExcelExport').attr("action", urlForExport);
$('#frmExcelExport').submit();
,它是工作非常好。 非常感谢Oleg !!!!
但与get方法,我们将无法发送很多记录到服务器。对?在最坏的情况下,我需要发送500条记录进行服务。 – Dinesh 2012-03-27 11:22:31
@Dinesh:你需要发送二进制数据流。通常,将'Content-Encoding'设置为'UTF-8'并发送'UTF-8'编码的'PistonData.xls'数据。所以我不明白你的意思是什么。 – Oleg 2012-03-27 11:32:22
@Dinesh:我不确定它确实对你有帮助,但是在[答案](http://stackoverflow.com/a/9349688/315935)中,我发布了完整的C#代码,它使用Open XML SDK 2.0,生成xlsx服务器,并返回像我在我的答案中所述。 – Oleg 2012-03-27 11:35:34