【问题标题】:Download excel file using memory stream in C#在C#中使用内存流下载excel文件
【发布时间】:2021-01-29 04:49:21
【问题描述】:

我必须通过从内存流创建 excel 工作簿来返回文件。我使用过 Interop、closed.xml、spire.xls,但没有找到实现相同目标的方法。

    var stream=clsUploadHelper.GetAttachmentFileStream(string.Empty, Filename);
Workbook book=new Workbook();
book.worksheet.Add(stream);
                            stream.Position = 0;
                            string xmlString = "attachment;filename=" + Filename;
                            return File(stream, xmlString, Filename);

我是新来的,如果可能,请提供帮助。提前致谢。

【问题讨论】:

  • @Jazb 实际上已经将字节写入要下载的文件,使用该字节/流我们只需要返回一个 excel 文件
  • @请大家帮忙
  • 告诉我们您正在使用什么框架。您没有指定,但看起来您正在构建 Web UI。

标签: c# interop excel-interop closedxml spire.xls


【解决方案1】:

聚会可能迟到了,但我今天遇到了这个问题,并且能够编写这个 POC 以便使用 Spire.XLS 在 .NET Core Web API 中返回一个 XLSX 文件

    [HttpPost]
    public async Task<FileResult> Post()
    {
        try
        {

            var workbook = new Workbook();
            var sheet = workbook.Worksheets[0];

            sheet.InsertRow(1);
            sheet.Rows[0].Columns[0].Value = "testing...";

            await using var stream = new MemoryStream();
            workbook.SaveToStream(stream, Spire.Xls.FileFormat.Version2016);

            const string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            HttpContext.Response.ContentType = contentType;
            HttpContext.Response.Headers.Add("Access-Control-Expose-Headers", "Content-Disposition");

            var fileContentResult = new FileContentResult(stream.ToArray(), contentType)
            {
                FileDownloadName = $"test.xlsx"
            };

            return fileContentResult;
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            return null;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2018-08-06
    • 1970-01-01
    • 2017-04-03
    • 2020-05-17
    • 1970-01-01
    相关资源
    最近更新 更多