Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Javascript MVC 5-如何向客户端发送Excel文件?_Javascript_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Javascript MVC 5-如何向客户端发送Excel文件?

Javascript MVC 5-如何向客户端发送Excel文件?,javascript,asp.net-mvc,asp.net-mvc-4,Javascript,Asp.net Mvc,Asp.net Mvc 4,我有一个显示数据列表的引导应用程序。我在页面底部有一个按钮,单击该按钮时,会创建一个Excel文件并将其发送回客户端 用户单击以启动流程的链接按钮如下所示: <li><a href ="javascript:ExportToExcel();" class="btn btn-info btn-sm">Export list to Excel</a></li> 我知道这可能不对,但它确实正确地调用了创建Excel电子表格的C函数 我的C函数如下所示:

我有一个显示数据列表的引导应用程序。我在页面底部有一个按钮,单击该按钮时,会创建一个Excel文件并将其发送回客户端

用户单击以启动流程的链接按钮如下所示:

<li><a href ="javascript:ExportToExcel();" class="btn btn-info btn-sm">Export list to Excel</a></li>
我知道这可能不对,但它确实正确地调用了创建Excel电子表格的C函数

我的C函数如下所示:

function ExportToExcel() {
        var Url = "/UserLocation/ExportToExcel";

        $.get(Url);
     }
public ActionResult ExportToExcel()
{
    var locationList = this.UserLocationData.GetList(this.AccountRowId).AsEnumerable();
    ExcelPackage package = Common.Excel.CreateExcelFile(locationList);


    var cd = new System.Net.Mime.ContentDisposition
    {
        // for example foo.bak
        FileName = "ExcelTest.xlsx",

        // Always prompt the user for downloading, set to true if you want the browser to try to show the file inline
        Inline = false, 
    };

    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(package.GetAsByteArray(), "application/force-download");
}
<li><a href ="/UserLocation/ExportToExcel" class="btn btn-info btn-sm">
    Export list to Excel</a></li>
此时,当用户单击按钮时,会调用MyC函数,但不会向客户端返回任何内容。我怀疑我的JS函数不正确,但我真的不知道该怎么做才能使它正确。我也不知道在我的C方法中使用什么MIME类型——C方法的最后一行。有没有更好的方法来完成这一切?我对JavaScript相当陌生。

使用$。获取您正在通过ajax获取数据。浏览器将在ajax响应中获取文件内容,但无法向用户提供将此数据保存为文件的方法。不过,在大多数浏览器中。但很明显,这件事太过分了。感谢虫族的评论

解决方案要简单得多,使用旧的good window.openurl,以便在新的浏览器窗口中打开文件,并根据浏览器配置邀请用户打开或保存文件

或者直接使用如下链接:

function ExportToExcel() {
        var Url = "/UserLocation/ExportToExcel";

        $.get(Url);
     }
public ActionResult ExportToExcel()
{
    var locationList = this.UserLocationData.GetList(this.AccountRowId).AsEnumerable();
    ExcelPackage package = Common.Excel.CreateExcelFile(locationList);


    var cd = new System.Net.Mime.ContentDisposition
    {
        // for example foo.bak
        FileName = "ExcelTest.xlsx",

        // Always prompt the user for downloading, set to true if you want the browser to try to show the file inline
        Inline = false, 
    };

    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(package.GetAsByteArray(), "application/force-download");
}
<li><a href ="/UserLocation/ExportToExcel" class="btn btn-info btn-sm">
    Export list to Excel</a></li>
除非你的js函数做了一些额外的处理。

使用$。get你是通过ajax获取数据的。浏览器将在ajax响应中获取文件内容,但无法向用户提供将此数据保存为文件的方法。不过,在大多数浏览器中。但很明显,这件事太过分了。感谢虫族的评论

解决方案要简单得多,使用旧的good window.openurl,以便在新的浏览器窗口中打开文件,并根据浏览器配置邀请用户打开或保存文件

或者直接使用如下链接:

function ExportToExcel() {
        var Url = "/UserLocation/ExportToExcel";

        $.get(Url);
     }
public ActionResult ExportToExcel()
{
    var locationList = this.UserLocationData.GetList(this.AccountRowId).AsEnumerable();
    ExcelPackage package = Common.Excel.CreateExcelFile(locationList);


    var cd = new System.Net.Mime.ContentDisposition
    {
        // for example foo.bak
        FileName = "ExcelTest.xlsx",

        // Always prompt the user for downloading, set to true if you want the browser to try to show the file inline
        Inline = false, 
    };

    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(package.GetAsByteArray(), "application/force-download");
}
<li><a href ="/UserLocation/ExportToExcel" class="btn btn-info btn-sm">
    Export list to Excel</a></li>

除非你的js函数做了一些额外的处理。

$。get不应该开始为客户端下载。它只需要一些你可以在脚本中处理的数据。是的,我很确定我没有这个权利。我只是没有足够的经验知道该使用什么。$.get不应该开始为客户端下载。它只需要一些你可以在脚本中处理的数据。是的,我很确定我没有这个权利。我只是没有足够的经验知道该使用什么。除非javascript做了一些特殊的事情,否则你也可以只使用一个链接。i、 你不能对ajax接收到的数据做任何事情。-这个短语非常奇怪,我想JotaBe的意思是,一旦你通过javascript接收到数据文件,你就不能将它下载到你的机器上。这一点很好。英语不是我的母语,我尽力做到最好。。。这一次,我最好的一面真的很难看。我希望它现在更清楚了。@zerkms虽然我喜欢下载属性,但这并不完全是一个例子,一旦你通过javascript收到它,就像Rowan Freeman说的那样。如果javascript做了一些特殊的事情,你也可以只使用一个链接。i、 你不能对ajax接收到的数据做任何事情。-这个短语非常奇怪,我想JotaBe的意思是,一旦你通过javascript接收到数据文件,你就不能将它下载到你的机器上。这一点很好。英语不是我的母语,我尽力做到最好。。。这一次,我最好的一面真的很难看。我希望现在更清楚了。@zerkms虽然我喜欢下载属性,但这并不是像罗恩·弗里曼所说的那样,一旦你通过javascript收到它,那就完全是一个例子