![](/img/trans.png)
[英]How to Write data as Json Response to HttpResponse in .NET Core
[英]does HTTPResponse Response exist in .NET Core 3.1
我正在嘗試將數據從 asp.net 核心 Web 應用程序(Blazor)導出到 excel 文件。 Excel 文件必須顯示在瀏覽器中,供用戶下載。
根據我使用響應的所有示例:
using System;
using System.IO;
using ClosedXML.Excel;
using System.Data;
using System.Web;
using Microsoft.AspNetCore.Http;
namespace Sxxx
{
public class Exporter
{
public void Export()
{
using (IXLWorkbook wb = new XLWorkbook())
{
IXLWorksheet ws = wb.Worksheets.Add("Sample Sheet");
ws.Cell(1, 1).Value = "Hello World!";
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=SqlExport.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
}
但是無法識別響應。 VS 2019 顯示的缺失程序集是“Ubiety.Dns.Core”,但這似乎不對。
在 docs.microsoft.com HTTPresponse 僅顯示為 Framework 4.8 的一部分,所以我的問題是:我可以在這里使用 Response 還是我需要其他東西用於 Core 3.1 項目?
提前致謝
我確實按照 Marco 和 Noah 的建議創建了 Controller,非常感謝。 我確實學到了很多……響應繼承自 ControllerBase。 web 上的大多數示例都是針對 .Net Framework 4.8 的,所以為核心 3.1 做這件事有點兒難,但在這里。 歡迎提出改進建議。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using ClosedXML.Excel;
namespace Sxxx.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class DownLoadController : ControllerBase
{
private readonly IWebHostEnvironment environment;
public DownLoadController(IWebHostEnvironment environment)
{
this.environment = environment;
}
[HttpGet("[action]")]
public async Task DownLoadFile()
{
IXLWorkbook wb = new XLWorkbook();
IXLWorksheet ws = wb.Worksheets.Add("Sample Sheet");
ws.Cell(1, 1).Value = "Hello World!";
MemoryStream ms = new MemoryStream();
wb.SaveAs(ms);
byte[] result = ms.ToArray();
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.Headers.Add("Content-Disposition", "attachment; filename=somefile.xlsx");
await Response.Body.WriteAsync(result);
await Response.StartAsync();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.