Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据表导出到Excel并使用AJAX下载?_C#_Jquery_Asp.net_Ajax_Closedxml - Fatal编程技术网

C# 如何将数据表导出到Excel并使用AJAX下载?

C# 如何将数据表导出到Excel并使用AJAX下载?,c#,jquery,asp.net,ajax,closedxml,C#,Jquery,Asp.net,Ajax,Closedxml,我遇到的情况是,用户应该通过AJAX请求导出数据,并通过AJAX接收下载的文件 我正在尝试使用ClosedXML和Firefox 客户端: $.ajax({ type: "POST", url: 'someurl', dataType: "text", data: pData, success: function (response

我遇到的情况是,用户应该通过AJAX请求导出数据,并通过AJAX接收下载的文件

我正在尝试使用ClosedXML和Firefox

客户端:

  $.ajax({
                type: "POST",
                url: 'someurl',
                dataType: "text",
                data: pData,

                success: function (response, status, xhr) {

                    // check for a filename

                    var disposition = xhr.getResponseHeader('Content-Disposition');
                    var filename = disposition;
                    console.log(xhr);


                    if (disposition && disposition.indexOf('attachment') !== -1) {
                        var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
                        var matches = filenameRegex.exec(disposition);
                        if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
                    }

                   // var type = xhr.getResponseHeader('Content-Type');
                    var blob = new Blob([response], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });

                    if (typeof window.navigator.msSaveBlob !== 'undefined') { window.navigator.msSaveBlob(blob, filename); }
                    else {
                        var URL = window.URL || window.webkitURL;
                        var downloadUrl = URL.createObjectURL(blob);

                        if (filename) {
                            var a = document.createElement("a");
                            if (typeof a.download === 'undefined') { window.location = downloadUrl; }
                            else {
                                a.href = downloadUrl;
                                a.download = filename;
                                document.body.appendChild(a);
                                a.click();
                            }
                        } else { window.location = downloadUrl; }

                        setTimeout(function () { URL.revokeObjectURL(downloadUrl); }, 100); // cleanup
                    }
               }
            });
服务器端:

XLWorkbook wb = new XLWorkbook();
ExcelWorksheet ws = pck.Workbook.Worksheets.Add( "Animal" );
dt = getselect();
if(dt.Rows.Count > 0)
{wb.Worksheets.Add(dt, "Animals" );}

Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader( "content-disposition", "attachment;filename=SqlExport.xls" );


using ( MemoryStream MyMemoryStream = new MemoryStream() )
            {
                wb.SaveAs( MyMemoryStream ); 
                MyMemoryStream.WriteTo( Response.OutputStream );
                Response.Flush();
                Response.End();
            }
因此,我收到一个文件,但Excel报告该文件已损坏,无法打开

我做错了什么