web-dev-qa-db-ja.com

失敗-EPPlus.dllによって作成されたExcelファイルをダウンロードする際のネットワークエラー

EPPlus.dllで作成されたExcelファイルをasp.net c#Webフォームアプリケーションからダウンロードしようとしています。しかし、失敗しました-ネットワークエラー。上記のエラーはchromeで発生するだけであり、別のブラウザでジョブを正常に実行できることに注意してください。

ちなみに、このエラーは私のローカルホストでは発生せず、メインサーバーでのみ発生します。

誰かがこの問題の解決策を説明できれば非常に役立ちます。

http://www.irandnn.ir/blog/PostId/29/epplus

12
Reza Amini

これを試して:

using (ExcelPackage p = new ExcelPackage())
{
    //Code to fill Excel file with data.


    Byte[] bin = p.GetAsByteArray();

    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", Nombre_Del_Libro + ".xlsx"));
    Response.BinaryWrite(bin);
    Response.Flush();
    Response.End();
}   
8

Response.Clear()とResponse.Close()を使用しているときにも同じ問題が発生し、以下のように機能しているコードを見るのを回避する必要がありました。

Response.Buffer = true;
Response.ContentType = mimeType;
Response.AddHeader("Content-Disposition", "attachment; filename=" + nameOfFile);
Response.BinaryWrite(bytes);
Response.End();
17

例外をスローするため、response.End()を使用しない方がいい

    protected void DownloadFile(FileInfo downloadFile, string downloadFilename, string downloadContentType)
    {
        Byte[] bin = File.ReadAllBytes(downloadFile.FullName); 

        Response.ClearHeaders();
        Response.ClearContent();
        Response.ContentType = downloadContentType;
        Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", downloadFilename ));
        Response.BinaryWrite(bin);
        Response.Flush();
        Response.SuppressContent = true; 
    }
1
Ferri

同じ問題があり、以下のコードで解決しました。filename=\"Name.xlsx \"の引用符に注意してください。

Response.Buffer = true;
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AppendHeader("content-disposition", "attachment; filename=\"Name.xlsx\"");
//Writeout the Content  
Response.BinaryWrite(bytes);
0
Renzo Ciot

文字列変数HTMLにあるhtmlテーブルコードをエクスポートしています

私のために働いているコードに従う

byte[] myFile = Encoding.ASCII.GetBytes(HTML);
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("Content-Type", "application/Excel");
        Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0};", "BAGrowthReport.xls"));
        Response.AddHeader("content-length", myFile.Length.ToString()); //Here is the additional header which is required for Chrome.
        Response.BinaryWrite(myFile);
        Response.Flush();
        Response.Close();
0
Satyam Antala