我正在使用 EPPlus 库将数据写入 Excel。我希望能够在 HTTP 响应对象中写入精细的内容并将其发送,以便客户端然后将文件保存为对话框并可以选择保存文件的位置。
到目前为止,在网上搜索了很多之后,我仍然没有成功,这是我的代码片段 -
我试过了 -
using (ExcelPackage package = new ExcelPackage())
{
//Writing data to the worksheet
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=file.xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.BinaryWrite(package.GetAsByteArray());
Response.End();
}
所有在线链接都显示相同的代码,但这仍然不起作用。也没有客户端或服务器端错误。
有什么想法吗?
编辑:因此,如果此代码有效,那么调用此代码的客户端可能存在一些问题?我对请求响应模型没有太多经验,我很有可能搞砸了。
我已经发出了一个包含要写入文件的内容的发布请求 -
$post("/app/Services/ExcelDownloadHandler.ashx", { "columnValues": columnValues });
在 ExcelDownloadHandler.ashx 中,我有
public void ProcessRequest(HttpContext context)
{
var r = context.Response;
Models.DTData excelData = (Models.DTData)Newtonsoft.Json.JsonConvert.DeserializeObject(context.Request.Form["columnValues"], typeof(Models.DTData));
//Write excelData to worksheet using EPPlus
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=file.xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.BinaryWrite(package.GetAsByteArray());
Response.End();
}
//一旦我对响应进行二进制写入,我应该会在浏览器上看到文件保存对话框,对吗?