c# - 在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);
我是新来的,如果可能的话,请帮忙。提前致谢。
解决方案
聚会可能迟到了,但我今天遇到了这个问题并且能够编写这个 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;
}
}
推荐阅读
- python - Scraping websites with protected content using PyQt5
- python - 如何使用 pd.read_html 并遍历许多不同的 url 并将每组 dfs 存储到 dfs 的主列表中?
- javascript - 如何将 AMAZON_COGNITO_USER_POOLS 与 apollo-client 一起使用
- javascript - 桌面悬停媒体查询不能防止粘滞悬停
- python - 创建适用于所有图像的阈值函数
- r - 用带孔的多边形制作 sf 对象并设置 crs
- angular - 如何将@angular/platform-browser 添加到材质弹出对话框
- docker - boto3 dynamodb 连接到本地或远程实例
- ios - 如何将 UITextField 强制为数值列表?
- vue.js - 在 vue3 中通过 props 传递的组件