Javascript 正在寻找通过API在c#中传输新创建的excel的好方法

Javascript 正在寻找通过API在c#中传输新创建的excel的好方法,javascript,c#,excel,npoi,Javascript,C#,Excel,Npoi,我已经创建了一个excel文件使用NPOI,并希望通过一个API发送此文件,使其可以从该网页下载 我的问题是,如何通过API以良好的方式发送此excel文件? 我是否可以将此excel文件存储为Blob或二进制文件,而不将其保存为文件以便于发送?(不希望每次导出excel文档时都保存文件) 这就是我现在用来保存文件的内容。一般来说,您通常可以获得表示客户端响应的类流的实例,并将其写入该类而不是文件。您还需要设置正确的内容类型标题 例如,在ASP.NET核心中,您可以创建自己的IActionRes

我已经创建了一个excel文件使用NPOI,并希望通过一个API发送此文件,使其可以从该网页下载

我的问题是,如何通过API以良好的方式发送此excel文件? 我是否可以将此excel文件存储为Blob或二进制文件,而不将其保存为文件以便于发送?(不希望每次导出excel文档时都保存文件)


这就是我现在用来保存文件的内容。

一般来说,您通常可以获得表示客户端响应的类
流的实例,并将其写入该类而不是文件。您还需要设置正确的
内容类型
标题

例如,在ASP.NET核心中,您可以创建自己的
IActionResult
实现

public class XlsDownloadResult : IActionResult
{
     private readonly Workbook _workbook;

     public XlsDowloadResult(Workbook workbook) 
     {
           _workbook = workbook;
     }

     public async Task ExecuteResultAsync(ActionContext context)
     {
          var response = context.HttpContext.Response;
          response.Headers.Add("Content-Type", "application/vnd.ms-excel");
           
          // Assuming the workbook object has WriteAsync -- otherwise use sync write
          // and return Task.CompletedTask
          await _workbook.WriteAsync(response.Body);
     }
}
然后你可以像这样使用它

[HttpGet]
public IActionResult Get()
{
    var workbook = CreateWorkbook();
    return new XlsDownloadResult(workbook);
}

最后--我建议您确保创建的是
xlsx
文件,而不是
xls
文件
xls
文件已被弃用,可能会导致许多问题。

您的问题并不明确。是否从HTTP控制器或aspx页面创建XLS文件?您希望它在用户浏览器中被视为文件下载吗?或者您正在寻找其他内容?哦,对不起。我会尽量说清楚的。我正在用c#创建一个xls文件,以响应来自我网站的api请求。作为回应,我想发回excel。我不知道该发送什么以及如何转换它。是的,在网站上,我想能够下载它作为一个excel文件=)非常感谢!我正在尝试这个=)等待工作簿.WriteAsync(response.Body);出现以下错误:我的HSSFWorkbook没有WriteAsync。我将如何使用注释中提到的同步写入。
[HttpGet]
public IActionResult Get()
{
    var workbook = CreateWorkbook();
    return new XlsDownloadResult(workbook);
}