加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET Core直接在一次调用服务器(动态)中返回excel文件(

发布时间:2020-12-15 23:49:23 所属栏目:百科 来源:网络整理
导读:我找到了在服务器上生成excel文件(xlsx)的解决方案.首次调用它会删除文件demo.xlsx(如果存在)并生成新的demo.xlsx. 第一次打电话 http://localhost:8000/api/importexport/export 它生成excel文件(xlsx)并发送url进行下载 第二个电话 http://localhost:8000/
我找到了在服务器上生成excel文件(xlsx)的解决方案.首次调用它会删除文件demo.xlsx(如果存在)并生成新的demo.xlsx.

第一次打电话
http://localhost:8000/api/importexport/export

它生成excel文件(xlsx)并发送url进行下载

第二个电话
http://localhost:8000/demo.xlsx

下载文件.
在Configure方法的Startup类中,您必须添加
app.UseStaticFiles();

这是解决方案的链接
http://www.talkingdotnet.com/import-export-xlsx-asp-net-core/

这个解决方案的问题是我有两次调用服务器.
我想要一个电话
http://localhost:8000/api/importexport/export
直接下载excel文件(xlsx).
我听说可以在一次调用中下载excel文件(xlsx)而无需在服务器上创建文件(动态).
我很乐意在一次调用服务器时看到更好的解决方案.

解决方法

这是我的解决方案

private readonly IHostingEnvironment _hostingEnvironment;

    public ImportExportController(IHostingEnvironment hostingEnvironment)
    {
        _hostingEnvironment = hostingEnvironment;
    }

    [HttpGet]
    [Route("Export")]
    public IActionResult Export()
    {
        string sWebRootFolder = _hostingEnvironment.WebRootPath;
        string sFileName = @"demo.xlsx";
        string URL = string.Format("{0}://{1}/{2}",Request.Scheme,Request.Host,sFileName);
        FileInfo file = new FileInfo(Path.Combine(sWebRootFolder,sFileName));
        if (file.Exists)
        {
            file.Delete();
            file = new FileInfo(Path.Combine(sWebRootFolder,sFileName));
        }
        using (ExcelPackage package = new ExcelPackage(file))
        {
            // add a new worksheet to the empty workbook
            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Employee");
            //First add the headers
            worksheet.Cells[1,1].Value = "ID";
            worksheet.Cells[1,2].Value = "Name";
            worksheet.Cells[1,3].Value = "Gender";
            worksheet.Cells[1,4].Value = "Salary (in $)";

            //Add values
            worksheet.Cells["A2"].Value = 1000;
            worksheet.Cells["B2"].Value = "Jon";
            worksheet.Cells["C2"].Value = "M";
            worksheet.Cells["D2"].Value = 5000;

            worksheet.Cells["A3"].Value = 1001;
            worksheet.Cells["B3"].Value = "Graham";
            worksheet.Cells["C3"].Value = "M";
            worksheet.Cells["D3"].Value = 10000;

            worksheet.Cells["A4"].Value = 1002;
            worksheet.Cells["B4"].Value = "Jenny";
            worksheet.Cells["C4"].Value = "F";
            worksheet.Cells["D4"].Value = 5000;

            package.Save(); //Save the workbook.
        }
        var result = PhysicalFile(Path.Combine(sWebRootFolder,sFileName),"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

        Response.Headers["Content-Disposition"] = new ContentDispositionHeaderValue("attachment")
        {
            FileName = file.Name
        }.ToString();

        return result;
    }

如果有人有更好的解决方案,请发布.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读