4

ユーザーが ID を提供する ASP.NET ページがあり、DB からデータを取得して Excel スプレッドシートに入れます。メモリ内に Excel ファイルを作成し、ユーザーがファイルをダウンロードできるようにしたいと考えています。サーバー上にファイルを作成し、後で削除することもできますが、不要なようです。エラー処理によっては、そのアプローチなどでファイルを孤立させる可能性があります。

このようなことは可能ですか?または、ファイル ストリームを使用する必要がありますか?

ちなみに、私はEPPlusをAPIとして使用しています(クイックプラグ)。

4

4 に答える 4

10

content-typecontent-dispisitionヘッダーを次のように指定したい- Response.ContentType = "application/vnd.ms-excel" は IE と firefox では動作するが Safariでは動作せず、ファイルをストリーミングする。完了したら、呼び出しResponse.End()てアプリケーションの実行を停止します

コードサンプル:

void StreamExcelFile(byte[] bytes)
{
    Response.Clear();
    Response.ContentType = "application/force-download";
    Response.AddHeader("content-disposition", "attachment; filename=name_you_file.xls");
    Response.BinaryWrite(bytes);
    Response.End();
}
于 2012-03-19T20:19:21.690 に答える
3
ExcelPackage pck = new ExcelPackage();
.....
.....
.....

byte[] bfr = pck.GetAsByteArray();
Response.ContentType = "application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AppendHeader("content-disposition", "attachment; filename=ExcelFileName.xlsx");

Response.OutputStream.Write(bfr, 0, bfr.Length);
Response.Flush();
Response.Close();
于 2013-04-12T07:58:37.000 に答える
1

はい、HTTP ハンドラーを使用してファイルをメモリからブラウザーにストリーミングすることを検討してください。

http://msdn.microsoft.com/en-us/library/ms972953.aspx

于 2012-03-19T20:15:37.817 に答える
0

あなたが探しているのは、汎用ハンドラーと呼ばれるものです。

http://www.dotnetperls.com/ashx

簡単に言うと、必要なのはコンテキスト タイプを定義することです。あなたの場合、xlsまたはxlsxになります。応答を設定し、ユーザーをハンドラーに誘導します。

ファイルをダウンロードするように求められます。

于 2012-03-19T20:14:16.410 に答える