csvファイルを作成してダウンロードする
個人的には新型コロナによる自粛生活が早7ヶ月を迎えた。
海外に出れず、国内でも常に回りに気を遣う生活の中、外出は激減し時間の使い方を模索する中で思いついたのは、これまで出張のさいに手放せなかったノートパソコンをスマホで代用できるように、WEBシステムを構築する事。
実はこれまでも何度も考えてはいたものの、ボリュームがありすぎてなかなか踏み出せなかったのだ。
もう8年以上前に asp.net c# で作ったソースを最新のツール(VisualStudio2019)に読み込ませるのにすったもんだしてから早2ヶ月が過ぎ、かなりの処理が可能になった。
今日のお題は「csvファイルを作成してダウンロードする」という処理だが、ダウンロードするところで手こずった。
解決方法をググったさいにズバリの内容が見つかったのでリンクしておく。
→ こちらのサイト
using (MemoryStream ms = new MemoryStream())
{
TextWriter tw = new StreamWriter(ms);
tw.WriteLine(“1行目”);
tw.WriteLine(“2行目”);
tw.Flush();
byte[] bytes = ms.ToArray();
Response.Clear();
Response.ContentType = “application/force-download”;
Response.AddHeader(“content-disposition”, “attachment; filename=file.csv”);
Response.BinaryWrite(bytes);
Response.End();
}
これで本日のお題は終了。
とっても助かりました。
ちなみに「Excelファイルを作成してダウンロードする」場合は下記の通り
using (var stream = new MemoryStream())
{
// Excelファイルを作る
var workbook = new XLWorkbook();
// ワークシートを追加する
var worksheet = workbook.Worksheets.Add(“Sheet1”);
// セルに値や数式をセット
worksheet.Cell(“A1”).Value = “エクセルのテスト”;
workbook.SaveAs(stream);
// ダウンロード
Response.Clear();
Response.Buffer = true;
Response.ContentType = “application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”;
Response.AddHeader(“Content-Length”, stream.ToArray().Length.ToString());
Response.AddHeader(“Content-Disposition”, “attachment; filename=file.xlsx”);
Response.BinaryWrite(stream.ToArray());
Response.Flush();
Response.End();
}