asp.net mvc 4-使用jqgrid在mvc4剃刀中导出到excel



我正在使用带有导出的jqgrid来超越我的Razor代码,如下所示:

//Set and activate navigations
        jQuery("#analyticGridPager").jqGrid('navGrid', '#analyticGridPager', { add: false, edit: false, del: false, search: false },
                                  {}, {}, {}, { multipleSearch: false, overlay: false, width: 480 }).jqGrid('navButtonAdd',
                '#analyticGridPager',
                {
                    caption: " Export to Excel ",
                    buttonicon: "ui-icon-bookmark",
                    onClickButton: function () {
                        exportExcel($(this));
                    }, position: "last"
                });
function exportExcel() {
            grid = $("#analyticGrid")
            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 = "";
            for (k = 0; k < colNames.length; k++) {
                html = html + colNames[k] + "t";
                // output each Column as tab delimited
            }
            html = html + "n";                    // Output header with end of line
            for (i = 0; i < mya.length; i++) {
                data = grid.getRowData(mya[i]); // get each row
                for (j = 0; j < colNames.length; j++) {
                    html = html + data[colNames[j]] + "t"; // output each Row as tab delimited
                }
                html = html + "n";  // output each row with end of line
            }
            html = html + "n";  // end of line at the end
            //alert(html);
            var params = { "htmlMarkup": html }
            var str = jQuery.param(params);
            window.open("/Analytics/CsvExport?" + str, '_blank')
        }

现在在控制器上,我已经写了一个生成csv文件而不是excel文件的方法。我需要生成excel文件扩展名。

public ActionResult CsvExport()
        {
            string htmlMarkup = Request.QueryString["htmlMarkup"].ToString();
            byte[] contents = Encoding.ASCII.GetBytes(htmlMarkup);
            return File(contents, "application/vnd.ms-excel");
        }

请纠正我做错了什么。

请替换为以下内容,它将进行测试。

同时更新你的web.config。

更新控制器操作

string htmlMarkup=Request.QueryString["htmlMarkup"].ToString();

        Response.ClearContent();
        Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");

        byte[] contents = Encoding.ASCII.GetBytes(htmlMarkup);
        Response.End();
        return File(contents, "application/excel");

更新您的网络配置

   <httpRuntime targetFramework="4.5" requestValidationMode="2.0"  maxUrlLength="10999" relaxedUrlToFileSystemMapping="true"   maxQueryStringLength="2097151" enable="true" executionTimeout="60000" maxRequestLength="30000000" />

最新更新