C#Asp.NET MVC使用FileStreamResult下载Excel文件

彩虹闪耀的独角兽

我需要构建一个方法,该方法将接收模型,从中构建excel(构建和接收部分完成而没有问题),然后使用内存流(无需将其保存在服务器上)导出(让用户下载它)。我是ASP.NET和MVC的新手,所以我找到了指南,并将其构建为一个教程项目:

    public FileResult Download()
    {
        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

        Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;

        object misValue = System.Reflection.Missing.Value;

        xlWorkBook = xlApp.Workbooks.Add(misValue);
        xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

        xlWorkSheet.Cells[1, 1] = "ID";
        xlWorkSheet.Cells[1, 2] = "Name";
        xlWorkSheet.Cells[2, 1] = "1";
        xlWorkSheet.Cells[2, 2] = "One";
        xlWorkSheet.Cells[3, 1] = "2";
        xlWorkSheet.Cells[3, 2] = "Two";


        var path = "C:\\Work-Work\\TestFolder\\XCLbuildTry1\\csharp-Excel.xls";
        xlWorkBook.SaveAs(path);
        xlWorkBook.Close(true, misValue, misValue);
        xlApp.Quit();

        Marshal.ReleaseComObject(xlWorkSheet);
        Marshal.ReleaseComObject(xlWorkBook);
        Marshal.ReleaseComObject(xlApp);
        return File(path, "application/vnd.ms-excel", "WidgetData.xlsx");
    }

现在,我需要更改此代码,以使此方法发送我的excel文件而不将excel文件保存在服务器上。我曾尝试在此处将Google的一些指南和答案放在堆栈上,但是现在我找不到可以实现的解决方案。

我认为我应该使用FileStreamResult,但是所有指南都没有提供有关创建和将我的文件插入流中的特定信息。

查温

不幸的是,似乎没有Microsoft.Office.Interop.Excel.Workbook接口(msdn)允许您将工作簿转换为内存流。

但是,过去我使用了外部库EPPlus,该运行非常好。

有关使用EPPlus的代码,请参见下文,该代码不需要您将文件保存在服务器上。


商业逻辑

public MemoryStream Download() {
    MemoryStream memStream;

    using (var package = new ExcelPackage()) {
        var worksheet = package.Workbook.Worksheets.Add("New Sheet");

        worksheet.Cells[1, 1].Value = "ID";
        worksheet.Cells[1, 2].Value = "Name";
        worksheet.Cells[2, 1].Value = "1";
        worksheet.Cells[2, 2].Value = "One";
        worksheet.Cells[3, 1].Value = "2";
        worksheet.Cells[3, 2].Value = "Two";  

        memStream = new MemoryStream(package.GetAsByteArray());
    }

    return memStream;
}    

控制器

public FileStreamResult Download() {
    var memStream = BusinessLogic.Download();
    result File(memStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用c#Asp .net MVC将视频上传到Youtube

来自分类Dev

如何在C#ASP NET Core中的后台服务内部使用Mediator?

来自分类Dev

C#ASP .NET; 获取登录用户的NetworkCredential对象?

来自分类Dev

C#asp net updatepanel导致页面刷新

来自分类Dev

无法在Visual Studio C#ASP内的React应用程序上使用Material-UI。NET核心Web应用程序

来自分类Dev

使用ASP.Net MVC中的FileStreamResult显示图像

来自分类Dev

ASP.NET MVC EPPlus下载Excel文件

来自分类Dev

多视图文件夹C#ASP MVC4

来自分类Dev

如何使用C#ASP MVC反序列化json字符串

来自分类Dev

使用asp.net mvc下载文件

来自分类Dev

使用DotNetZip通过ASP.NET MVC下载zip文件

来自分类Dev

使用asp.net mvc下载文件

来自分类Dev

C#asp mvc如何获取派生类对象的值

来自分类Dev

c#asp mvc ErrorMessage应该包含另一个变量/属性值

来自分类Dev

C#asp mvc如何获取派生类对象的值

来自分类Dev

如何在C#asp中分割带有很多空格的文件行?

来自分类Dev

C#ASP X-CONTENT-TYPE-OPTIONS-Internet Explorer不显示PNG文件

来自分类Dev

ASP.NET MVC-从MemoryStream下载Excel文件(损坏的文件)

来自分类Dev

如何使用ASP.NET C#将HTML表格下载到Excel文件中

来自分类Dev

从ASP.NET MVC下载JQuery-AJAX请求中的Excel文件

来自分类Dev

从ASP.NET MVC下载JQuery-AJAX请求中的Excel文件

来自分类Dev

使用asp.net mvc从Google Drive Api下载文件的问题

来自分类Dev

ASP.NET MVC文件下载和jQuery参数

来自分类Dev

ASP.NET MVC文件下载和jQuery参数

来自分类Dev

无法在ASP.NET MVC中下载视频文件

来自分类Dev

ASP.NET MVC 4,C#:如何下载文件

来自分类Dev

文件下载asp.net

来自分类Dev

在ASP.NET MVC 5控制器中使用POST从dotnet Core Web API下载文件

来自分类Dev

如何使用ASP.NET MVC 5和实体框架下载MP3文件

Related 相关文章

  1. 1

    使用c#Asp .net MVC将视频上传到Youtube

  2. 2

    如何在C#ASP NET Core中的后台服务内部使用Mediator?

  3. 3

    C#ASP .NET; 获取登录用户的NetworkCredential对象?

  4. 4

    C#asp net updatepanel导致页面刷新

  5. 5

    无法在Visual Studio C#ASP内的React应用程序上使用Material-UI。NET核心Web应用程序

  6. 6

    使用ASP.Net MVC中的FileStreamResult显示图像

  7. 7

    ASP.NET MVC EPPlus下载Excel文件

  8. 8

    多视图文件夹C#ASP MVC4

  9. 9

    如何使用C#ASP MVC反序列化json字符串

  10. 10

    使用asp.net mvc下载文件

  11. 11

    使用DotNetZip通过ASP.NET MVC下载zip文件

  12. 12

    使用asp.net mvc下载文件

  13. 13

    C#asp mvc如何获取派生类对象的值

  14. 14

    c#asp mvc ErrorMessage应该包含另一个变量/属性值

  15. 15

    C#asp mvc如何获取派生类对象的值

  16. 16

    如何在C#asp中分割带有很多空格的文件行?

  17. 17

    C#ASP X-CONTENT-TYPE-OPTIONS-Internet Explorer不显示PNG文件

  18. 18

    ASP.NET MVC-从MemoryStream下载Excel文件(损坏的文件)

  19. 19

    如何使用ASP.NET C#将HTML表格下载到Excel文件中

  20. 20

    从ASP.NET MVC下载JQuery-AJAX请求中的Excel文件

  21. 21

    从ASP.NET MVC下载JQuery-AJAX请求中的Excel文件

  22. 22

    使用asp.net mvc从Google Drive Api下载文件的问题

  23. 23

    ASP.NET MVC文件下载和jQuery参数

  24. 24

    ASP.NET MVC文件下载和jQuery参数

  25. 25

    无法在ASP.NET MVC中下载视频文件

  26. 26

    ASP.NET MVC 4,C#:如何下载文件

  27. 27

    文件下载asp.net

  28. 28

    在ASP.NET MVC 5控制器中使用POST从dotnet Core Web API下载文件

  29. 29

    如何使用ASP.NET MVC 5和实体框架下载MP3文件

热门标签

归档