ClosedXMLライブラリを使用してExcelファイルを返すWebAPIを作成しようとしています。WebAPIからExcelファイルを返します。ASPNetCore
FileStreamResultを返すと、うまくいきます。しかし、Web API Return A Fileで議論したようにHttpResponseMessageに変更した場合、ファイルをダウンロードしたり、コンテンツを見たり、JSON文字列を取得することができませんでした。
このHttpResponseMessageからファイルコンテンツをどのように抽出できるかを知りたいと思います。
は、私はブラウザや郵便配達のツールでテストし、私は戻って得たすべてはJSON文字列:この1は
[HttpGet("ERSheet2")]
public HttpResponseMessage ER_GenerateWBLWorksheet2()
{
MemoryStream stream = new MemoryStream();
var workbook = new XLWorkbook();
var SheetNames = new List<string>() { "15-16", "16-17", "17-18", "18-19", "19-20" };
foreach (var sheetname in SheetNames)
{
var worksheet = workbook.Worksheets.Add(sheetname);
worksheet.Cell("A1").Value = sheetname;
}
workbook.SaveAs(stream);
stream.Seek(0, SeekOrigin.Begin);
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(stream.ToArray());
result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
result.Content.Headers.ContentDisposition.FileName = "ERSheet.xlsx";
return result;
}
更新
:
{
"version": {
"major": 1,
"minor": 1,
"build": -1,
"revision": -1,
"majorRevision": -1,
"minorRevision": -1
},
"content": {
"headers": [
{
"key": "Content-Disposition",
"value": [
"attachment; filename=ERSheet.xlsx"
]
},
{
"key": "Content-Type",
"value": [
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
]
}
]
},
"statusCode": 200,
"reasonPhrase": "OK",
"headers": [],
"requestMessage": null,
"isSuccessStatusCode": true
}
マイコードは以下の通りですこの質問Download file with ClosedXMLとは違って、私はすでに 'FileStreamResult'を使って動作させていると言いました。私はこのコメントのためにこれを要求しています。 "StreamContentでHttpResponseMessageを返す方が良い"このスレッドで作られたWeb API Return A File。したがって、.Net CoreでHttpResponseMessageを使用しようとしていて、Darinの答えとしてサポートされていないことは分かりませんでした。
このResponseMessageにはコンテンツがありません。私はExcelファイルの内容を意味します。または私は正しくないですか? – Marusyk
申し訳ありませんが、私は混乱しています。私のResponseMessageにはコンテンツが含まれていないか、HttpResponseMessageを使用してコンテンツを保持することはできません。 – TTCG
[ClosedXMLでファイルをダウンロードする](0120-18753-03) – Marusyk