.Net CoreでExcelファイルをWebからダウンロードする方法
はじめに
WebからExcelファイルがダウンロード出来るのか疑問に思いやってみました。
今回はjqueryを使わずに出来たのでまとめてみます。
前回は圧縮ファイルのダウンロードにjqueryを使っていました。
knkomko.hatenablog.com
動作
C:\work\sample.xlsx にファイルを保存しています。
こちらのExcelファイルをWebからダウンロードしています。
Download ボタンを左クリックするとファイルがダウンロードできます。
ダウンロードしたファイルはダウンロードフォルダに保存されます。
文字化けも無くファイルが開けます。
開発環境
VisualStudio2019
MicrosoftOffice2016
ソースコード
ExcelファイルのダウンロードではFileメソッドの引数に Octet を指定します。
Controllers\FormController.cs
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace ExcelDownloadWebApp.Controllers { public class FormController : Controller { public ActionResult Index() { return View(); } public IActionResult ExcelFileDownload() { var file = System.IO.File.ReadAllBytes(@"C:\work\sample.xlsx"); return File(file, System.Net.Mime.MediaTypeNames.Application.Octet, "sample.xlsx"); } } }
ボタン押下時にFormController の ExcelFileDownload メソッドを呼び出します。
View\Form\Index.cshtml
<h2>ExcelFileDownload</h2> <form class="form-horizontal" asp-controller="Form" asp-action="ExcelFileDownload"> <input name="submit" value="Download" type="submit" /> </form>
ZIPファイルのダウンロード
上記と同じ方法でjqueryを使わなくてもZIPファイルがダウンロードできました。
FormControllerにあるExcelFileDownload()のファイル名を変更しています。
Controllers\FormController.cs >|cs| using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace ExcelDownloadWebApp.Controllers { public class FormController : Controller { public ActionResult Index() { return View(); } public IActionResult ExcelFileDownload() { var file = System.IO.File.ReadAllBytes(@"C:\work\sample.zip"); return File(file, System.Net.Mime.MediaTypeNames.Application.Octet, "sample.zip"); } } }