Javascript 为什么我不能使用JQuery和FileContentResult打开CSV文件

Javascript 为什么我不能使用JQuery和FileContentResult打开CSV文件,javascript,c#,ajax,asp.net-mvc,Javascript,C#,Ajax,Asp.net Mvc,我正在尝试调用ajax(我特别不想使用ActionLink) 我有一个这样的控制器: public IActionResult ExportUsers(List<string> listOfEmails) { /*some data processing*/ return File(result, "text/csv", "ExportCandidates.csv"); } 我知道pdf文件中存在一些东西,您返回一个bas

我正在尝试调用ajax(我特别不想使用ActionLink)

我有一个这样的控制器:

public IActionResult ExportUsers(List<string> listOfEmails)
{
     /*some data processing*/
     return File(result, "text/csv", "ExportCandidates.csv");
}
我知道pdf文件中存在一些东西,您返回一个base64文件,在ajax调用中,您只需编写类似pdfWindow.document.write(…)的内容,这将打开一个包含pdf文件的新窗口


有没有一种方法可以提取我的CSV文件的响应并生成它,以便用户下载它?

最好的方法是不使用AJAX,而是使用链接单击打开一个新窗口(因为您正在传递参数),如果您可以使用

<form target="_blank">

打开一个表单响应。表单内部可以是一个或多个包含电子邮件列表的字段(可以是一个字段,也可以是多个同名输入字段)。您的操作处理程序可以接受该列表,对其进行解析,并返回一个文件响应,从form post操作打开新窗口的自然结果是打开一个文件。

使用NPOI库生成Excel工作表
USE NPOI Library for Excel Sheet Generation  

  //Generate Excel Sheet
        try
                {
                    Guid gid = Guid.NewGuid();
                    string ext = ".xls";
                    string[] Headers = { "Appointments Id", "Date of Appointment", "Doctor Name", "Patient Name", "Visit Type", "Status" };
                    string fileName = "AppointmentsExcelSheet_" + gid.ToString() + ext;
                    var serverpath = _env.ContentRootPath;
                    string rootpath = serverpath + "/wwwroot/ExcelSheets/" + fileName;
                    FileInfo file = new FileInfo(Path.Combine(rootpath, fileName));
                    var memorystream = new MemoryStream();
                    using (var fs = new FileStream(rootpath, FileMode.Create, FileAccess.Write))
                    {
    
                        IWorkbook workbook = new XSSFWorkbook();
                        ISheet excelSheet = workbook.CreateSheet("Appointments List");
                        IRow row = excelSheet.CreateRow(0);
                        var font = workbook.CreateFont();
                        font.FontHeightInPoints = 11;
                        font.FontName = "Calibri";
                        font.Boldweight = (short)FontBoldWeight.Bold;
                        for (var i = 0; i < Headers.Length; i++)
                        {
                            var cell = row.CreateCell(i);
                            cell.SetCellValue(Headers[i]);
                            cell.CellStyle = workbook.CreateCellStyle();
                            cell.CellStyle.SetFont(font);
                        }
    
                        var result = _Appointment.GetAppoinmentsPDf();
                        int index = 1;
                        foreach (var app in result.Items)
                        {
                            //var PatientDob = Convert.ToDouble(app.PatientDOB);
                            row = excelSheet.CreateRow(index);
                            row.CreateCell(0).SetCellValue(app.AppointmentId);
                            row.CreateCell(1).SetCellValue(app.DateofAppointment+" "+app.TimeofAppointment);
                            row.CreateCell(2).SetCellValue(app.DoctorFullName);
                            row.CreateCell(3).SetCellValue(app.SelectedPatientName);
                            row.CreateCell(4).SetCellValue(app.PurposeofVisit);
                            if (app.IsActive == false)
                            {
                                row.CreateCell(5).SetCellValue("Inactive");
                            }
                            else
                            {
                                row.CreateCell(5).SetCellValue("Active");
                            }
                            index++;
                        }
                        workbook.Write(fs);
                    }
                    using (var filestream = new FileStream(rootpath, FileMode.Open))
                    {
                        filestream.CopyToAsync(memorystream);
                    }
                    memorystream.Position = 0;
                    //send filepath to JQuery function
                    response.Msg = "/ExcelSheets/" + fileName;
    
                }
                catch (Exception Ex)
                {
                  //exception code
                }
           return Ok(reponse.Msg)
    //JavaScript
    function AppointmentsExcelSheet() {
        //var token = Token;
        //var link = path;
        debugger
        $.ajax({
            //'Content-Type': 'application/pdf.',
            type: "GET",
            url: "/api/Appointments/GetAppointmentsExcelSheet",
            beforeSend: function () {
                $.blockUI({
                    message: ('<img src="/images/FadingLines.gif"/>'),
                    css: {
                        backgroundColor: 'none',
                        border: '0',
                        'z-index': 'auto'
                    }
                });
            },
            complete: function () {
                $.unblockUI();
            },
           
            success: function (data) {
                debugger
                //downloads your Excel sheet
                window.location.href = data.msg;
                
            }
    
        });
    
    }
//生成Excel工作表 尝试 { Guid gid=Guid.NewGuid(); 字符串ext=“.xls”; 字符串[]头={“预约Id”、“预约日期”、“医生姓名”、“患者姓名”、“就诊类型”、“状态”}; 字符串fileName=“AppointmentsExcelSheet_u3;”+gid.ToString()+ext; var serverpath=_env.ContentRootPath; 字符串rootpath=serverpath+“/wwwroot/ExcelSheets/”+文件名; FileInfo file=newfileinfo(Path.Combine(rootpath,fileName)); var memorystream=新的memorystream(); 使用(var fs=new FileStream(rootpath,FileMode.Create,FileAccess.Write)) { IWorkbook工作簿=新XSSFWorkbook(); ISheet excelSheet=workbook.CreateSheet(“约会列表”); IRow row=excelSheet.CreateRow(0); var font=workbook.CreateFont(); font.FontHeightInPoints=11; font.FontName=“Calibri”; font.Boldweight=(短)fontboldwweight.Bold; 对于(var i=0;i
USE NPOI Library for Excel Sheet Generation  

  //Generate Excel Sheet
        try
                {
                    Guid gid = Guid.NewGuid();
                    string ext = ".xls";
                    string[] Headers = { "Appointments Id", "Date of Appointment", "Doctor Name", "Patient Name", "Visit Type", "Status" };
                    string fileName = "AppointmentsExcelSheet_" + gid.ToString() + ext;
                    var serverpath = _env.ContentRootPath;
                    string rootpath = serverpath + "/wwwroot/ExcelSheets/" + fileName;
                    FileInfo file = new FileInfo(Path.Combine(rootpath, fileName));
                    var memorystream = new MemoryStream();
                    using (var fs = new FileStream(rootpath, FileMode.Create, FileAccess.Write))
                    {
    
                        IWorkbook workbook = new XSSFWorkbook();
                        ISheet excelSheet = workbook.CreateSheet("Appointments List");
                        IRow row = excelSheet.CreateRow(0);
                        var font = workbook.CreateFont();
                        font.FontHeightInPoints = 11;
                        font.FontName = "Calibri";
                        font.Boldweight = (short)FontBoldWeight.Bold;
                        for (var i = 0; i < Headers.Length; i++)
                        {
                            var cell = row.CreateCell(i);
                            cell.SetCellValue(Headers[i]);
                            cell.CellStyle = workbook.CreateCellStyle();
                            cell.CellStyle.SetFont(font);
                        }
    
                        var result = _Appointment.GetAppoinmentsPDf();
                        int index = 1;
                        foreach (var app in result.Items)
                        {
                            //var PatientDob = Convert.ToDouble(app.PatientDOB);
                            row = excelSheet.CreateRow(index);
                            row.CreateCell(0).SetCellValue(app.AppointmentId);
                            row.CreateCell(1).SetCellValue(app.DateofAppointment+" "+app.TimeofAppointment);
                            row.CreateCell(2).SetCellValue(app.DoctorFullName);
                            row.CreateCell(3).SetCellValue(app.SelectedPatientName);
                            row.CreateCell(4).SetCellValue(app.PurposeofVisit);
                            if (app.IsActive == false)
                            {
                                row.CreateCell(5).SetCellValue("Inactive");
                            }
                            else
                            {
                                row.CreateCell(5).SetCellValue("Active");
                            }
                            index++;
                        }
                        workbook.Write(fs);
                    }
                    using (var filestream = new FileStream(rootpath, FileMode.Open))
                    {
                        filestream.CopyToAsync(memorystream);
                    }
                    memorystream.Position = 0;
                    //send filepath to JQuery function
                    response.Msg = "/ExcelSheets/" + fileName;
    
                }
                catch (Exception Ex)
                {
                  //exception code
                }
           return Ok(reponse.Msg)
    //JavaScript
    function AppointmentsExcelSheet() {
        //var token = Token;
        //var link = path;
        debugger
        $.ajax({
            //'Content-Type': 'application/pdf.',
            type: "GET",
            url: "/api/Appointments/GetAppointmentsExcelSheet",
            beforeSend: function () {
                $.blockUI({
                    message: ('<img src="/images/FadingLines.gif"/>'),
                    css: {
                        backgroundColor: 'none',
                        border: '0',
                        'z-index': 'auto'
                    }
                });
            },
            complete: function () {
                $.unblockUI();
            },
           
            success: function (data) {
                debugger
                //downloads your Excel sheet
                window.location.href = data.msg;
                
            }
    
        });
    
    }