【发布时间】:2021-01-16 21:52:55
【问题描述】:
我正在尝试将数据从 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 项目?
提前致谢
【问题讨论】:
-
什么是
Response?据我所知,您不会在代码中的任何地方实例化它。您是否尝试创建HttpResponseMessage? -
在这样的 .NET 项目中,您根本无法免费获得
Response!您可能会在继承自Controller的类中获得它(不确定在 Core 中是否如此)。 -
请提供一个最小可重现的例子
-
@ADBF 你总是可以创建一个控制器,返回一个 FileResult 并以这种方式解决它。
标签: c# asp.net-core blazor