在Internet Explorer中将数据从jqgrid导出到Excel

时间:2014-11-14 19:57:05

标签: javascript jquery excel internet-explorer jqgrid

我正在为网页开发一些增强功能,我需要一些帮助。我添加了一个按钮,单击该按钮将从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

0 个答案:

没有答案