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();
}
//応答に対して binarywrite を実行すると、ブラウザに [ファイルの保存] ダイアログが表示されるはずですが、正しいですか?