首页 > 解决方案 > 在C#中使用内存流下载excel文件

问题描述

我必须通过从内存流创建 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);

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

标签: c#interopexcel-interopclosedxmlspire.xls

解决方案


聚会可能迟到了,但我今天遇到了这个问题并且能够编写这个 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;
        }
    }

推荐阅读