2

バイト配列を返すメソッドがあります。次に、この配列を出力ストリームに Excel ファイルとして書き込みます。一部のユーザーは、ie7 で「Internet Explorer はこのインターネット サイトを開くことができませんでした」というエラーを報告しています。

テスト環境 (ie9 を使用) で実行すると、このエラーは発生しません。ただし、リンクを初めてクリックすると、Excel が開くことがありますが、「コマンドをプログラムに送信する際に問題が発生しました」というエラーが表示され、ファイルが Excel に読み込まれません。リンクをもう一度クリックすると、ファイルが Excel で正常に開きます。ユーザーがページ上のリンクをクリックした後、応答ストリームを介してバイト配列を送信するコードを次に示します。

byte[] buffer = GetBinary();
Response.ContentType = "application/vnd.ms-excel";
Response.Buffer = true;
Response.Expires = 0;
Response.AddHeader("Content-Type", "application/vnd.ms-excel");
Response.AddHeader("Content-Length", buffer.Length.ToString());
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.AddHeader("Content-Disposition", "attachment;filename=xx.xls");
Response.BinaryWrite(buffer);
Response.End();

違いがある場合は、クリックしたリンクで新しいウィンドウが開き、上記のコード ブロックが新しいページの page_load イベントで実行されます。これらのエラーの原因は何ですか? 以前に同様のコードを問題なく使用しました。

4

0 に答える 0