ASP.NET Core CSVファイルをダウンロードするWebAPIを作成する
ASP.NET Core(C#)のWebAPIのプロジェクトで、CSVファイルをダウンロードするAPIを作成します。
WebAPIでファイルをダウンロードする方法については、ASP.NET Core WebAPIでファイルをダウンロードするで紹介していますが、ダウンロードするファイルのデータはバイト配列byte[]にする必要があります。
出力するCSVは文字列(string型)で持っていると思いますので、以下のようにstring型からbyte[]に変換する必要があります。
ここでは文字コードはUTF-8を使用していますが、文字コードは適宜変更してください。
[HttpGet("{id}/[action]")]
public async Task<IActionResult> Download(string id)
{
string csv = "CSVデータ";
byte[] file = Encoding.UTF8.GetBytes(csv).ToArray(); // 文字列をバイト配列に変換する
return File(file, "application/octet-stream", ファイル名);
}UTF-8のCSVをエクセルで開くと文字化けします。
対処法として、BOM付きのUTF-8にする必要がありますが、その方法はASP.NET Core C# ダウンロードしたCSVファイルをエクセルで開くと文字化けする場合の対処法で紹介しています。