1

OpenXMLライブラリを使用してファイルを生成してExcelに送信し、ユーザーに送信しています。Chrome と IE では非常にうまく機能しますが、Firefox で試してみると問題が発生しました。

FFを使用してファイルを保存すると、拡張子のないファイルが取得されますFFを使用してファイルを開くと、魅力のように機能します:(

次の関数を使用してストリームをユーザーに送信しています。

public static void SendToClient(Byte[] stream, string fileName)
{
    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
    HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

    HttpContext.Current.Response.BinaryWrite(stream);
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".xlsx");
    HttpContext.Current.Response.AddHeader("content-length", stream.LongLength.ToString());
    HttpContext.Current.Response.End();
}

そしてそれを次のように呼び出します:

_ExcelReports.SendToClient(excelUtil.ExportToExcel(excelWorkBook), projectName + " Resources");

さらに奇妙なことに、スクリーンショットのように、FF ダウンロード ダイアログがファイルを認識します。

FFダウンロードダイアログ

ダウンロードが完了しました。

FF 完了したダウンロード

4

2 に答える 2

3

使ってみましたcontentType = "application/vnd.ms-excel"か?

私は何をしようとしているのかを理解するのに大きな問題を抱えている初心者ですが、私が取り組んでいるのはそのコンテンツタイプを使用することです。

于 2013-05-05T22:21:08.857 に答える
1

そのコードサンプルは私にとってはうまくいきました。それでは、ランダムなデバッグの提案を行います。

1) Firefox の履歴/Cookie/コンテンツ キャッシュをクリアしてみてください。その後、再度実行します。キャッシュが応答を汚している可能性があります。

2) SendToClient() 関数は最後に実行される関数ですか? その後に何か他の処理が行われると (Response.End() 関数が含まれているため)、奇妙なことが発生したり、応答ストリームが破損したりする可能性があります。

3) ContentEncoding を設定するためのコード行と、コンテンツの長さを追加するためのコード行をコメント化してみてください。実際、 SendToClient() でこれを試してください(私にとっては最低限のことでした):

HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

HttpContext.Current.Response.BinaryWrite(stream);
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".xlsx");
HttpContext.Current.Response.End();

基本的には、IE と Chrome では機能するが FF では失敗する最小限のコード行をテストすることです。

4) content-dispositionの「添付ファイル」ではなく「インライン」を試し、それが最初に機能するかどうかを確認します。

もちろん、OpenXML ファイル自体は有効であると想定しています。ダウンロードしたファイルを開いたときに (IE または Chrome を使用して)、Excel が文句を言いますか (ファイルの修復を要求するなど) はありますか?

于 2013-05-06T02:50:04.000 に答える