EPPlus.dll
で作成されたExcelファイルをasp.net c#Webフォームアプリケーションからダウンロードしようとしています。しかし、失敗しました-ネットワークエラー。上記のエラーはchromeで発生するだけであり、別のブラウザでジョブを正常に実行できることに注意してください。
ちなみに、このエラーは私のローカルホストでは発生せず、メインサーバーでのみ発生します。
誰かがこの問題の解決策を説明できれば非常に役立ちます。
これを試して:
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();
}
Response.Clear()とResponse.Close()を使用しているときにも同じ問題が発生し、以下のように機能しているコードを見るのを回避する必要がありました。
Response.Buffer = true;
Response.ContentType = mimeType;
Response.AddHeader("Content-Disposition", "attachment; filename=" + nameOfFile);
Response.BinaryWrite(bytes);
Response.End();
例外をスローするため、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;
}
同じ問題があり、以下のコードで解決しました。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);
文字列変数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();