0

大量のデータを Excel 2007 マクロ対応形式にエクスポートするページがあります。最後に Response.Redirect を使用して、Excel ファイルの作成後に別のページにリダイレクトしますが、実際に大量のデータ、つまり約 60,000 行以上がある場合、リダイレクトは機能しません。以下は、Excel ファイルを保存するために使用しているコードのスニペットです。

Response.Clear();
Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm");
Response.ContentType = "application/octet-stream";
wbRegionData.Save(Response.OutputStream);//();
Response.End();
Response.Redirect("RegionData.aspx?PALID=" + AVListID, true);

ご協力ありがとうございました。

4

3 に答える 3

1

同じサーバー応答でファイルのダウンロードとリダイレクトを行うことはできません。ファイルのダウンロードが成功した後にリダイレクトを実行する必要がある場合は、ファイルのダウンロードが成功したことをクライアントに伝える必要があります。これは、私の知る限り、Cookie を書き込むことによってのみ実現できます。

jQuery File Download plugin ( Demo ) ( GitHub ) (Blog Posts ) を作成しました。プラグインを使用すると、コードは次のようになります。

ASP.NET コード:

Response.Clear();
Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm");
Response.ContentType = "application/octet-stream";
Response.SetCookie(new HttpCookie("fileDownload", "true"){Path = "/"});
wbRegionData.Save(Response.OutputStream);//();
Response.End();

JavaScript:

$.fileDownload("/urltofiledownload/", {
    successCallback: function (url) {
        window.location = "/redirecturl/";
    }
});

これ以上のコードがなければ、完全な解決策を提供することはできません (例についてはデモを見てください) が、プラグインを使用するのが最も簡単で最善の策だと思います。

于 2012-06-25T03:02:47.857 に答える
0

Response.End();これらの 2 つのアクション (ダウンロードとリダイレクト) を個別に定義して追加する必要があります。

于 2012-06-25T02:50:50.313 に答える
0

Respose.End() メソッドがページの通常の実行を停止するため、機能しません。コードをリフォーマットし、Response.End() メソッドを削除しました。これで機能します。

    Response.Clear();
    Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm");
    Response.ContentType = "application/octet-stream";
    wbRegionData.Save(Response.OutputStream);//();
    Response.Redirect("RegionData.aspx?PALID=" + AVListID, true);
于 2012-06-25T02:51:25.560 に答える