我正在为网页开发一些增强功能,我需要一些帮助。我添加了一个按钮,单击该按钮将从jqgrid获取html并将其导出到Excel。我以为我已经完成了所有工作,然后我做了跨浏览器测试,Internet Explorer不喜欢以下方法:
function exportGrid()
{
var grid = "#diamondpassConferencePreregistrantGrid";
var mya=new Array();
mya=$(grid).getDataIDs(); // Get All IDs
var data=$(grid).getRowData(mya[0]); // Get First row to get the labels
var colNames=new Array();
var ii=0;
for (var i in data){colNames[ii++]=i;} // capture col names
var html="";
var columnNames = $(grid).jqGrid('getGridParam','colNames');
for(i=0;i<columnNames.length-1;i++)
{
html = html + columnNames[i+1]+"\t";
}
html=html+"\n";
for(i=0;i<mya.length;i++)
{
data=$(grid).getRowData(mya[i]); // get each row
for(j=0;j<colNames.length-1;j++)
{
html=html+data[colNames[j+1]]+"\t"; // output each column as tab delimited
}
html=html+"\n"; // output each row with end of line
}
html=html+"\n"; // end of line at the end
alert(html);
window.open('data:application/vnd.ms-excel,' + encodeURIComponent(html));
}
在Firefox和Chrome中,这一切似乎都适合我。问题是当我在IE中测试时,行:
window.open('data:application/vnd.ms-excel,' + encodeURIComponent(html));
打开一个新标签,告诉我无法显示网页。
我从以下网页获得了一些信息:
http://www.jquerybyexample.net/2012/10/export-table-data-to-excel-using-jquery.html
基本上告诉我该行在IE中不起作用,我需要设置响应头如下:
Response.AddHeader("Content-Disposition", "attachment;filename=download.xls");
我的问题是我不知道这会带来什么。我尝试添加这一行,正如我所料,我得到“响应未定义”或这种性质的东西。
我很好奇是否有人知道从这一点向前推进的最佳方式。我知道如何检测浏览器,我总是可以使用不同的代码来完成我对Internet Explorer的Excel导出,但我的问题是我不知道在IE中执行等效行的正确方法。
非常感谢任何帮助。
谢谢!
-Dave