Asp.net 从网格导出Excel不使用Ajax模型弹出窗口

Asp.net 从网格导出Excel不使用Ajax模型弹出窗口,asp.net,Asp.net,您好,我正在尝试将网格数据导出到excel,但它在IE8中不起作用。我正在使用一个Ajax模式弹出对话框,其中包含两个按钮“确定”和“关闭”。单击“确定”,我想下载excel文件。它在Mozilla中工作正常,但在IE中不起作用。我使用以下代码。请建议我怎么做?当我第一次打开文件时,它会在打开文件之前显示警告,如何处理 Response.Clear(); Response.Buffer = true; string filename = "Checkout"; R

您好,我正在尝试将网格数据导出到excel,但它在IE8中不起作用。我正在使用一个Ajax模式弹出对话框,其中包含两个按钮“确定”和“关闭”。单击“确定”,我想下载excel文件。它在Mozilla中工作正常,但在IE中不起作用。我使用以下代码。请建议我怎么做?当我第一次打开文件时,它会在打开文件之前显示警告,如何处理

  Response.Clear();
    Response.Buffer = true;

    string filename = "Checkout";
     Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("content-disposition", "attachment; filename=" + filename + ".adt");

    Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
    Response.Write("<head>");
    Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
    Response.Write("<!--[if gte mso 9]><xml>");
    Response.Write("<x:ExcelWorkbook>");
    Response.Write("<x:ExcelWorksheets>");
    Response.Write("<x:ExcelWorksheet>");
    Response.Write("<x:Name>Sheet1</x:Name>");
    Response.Write("<x:WorksheetOptions>");
    Response.Write("<x:Print>");
    Response.Write("<x:ValidPrinterInfo/>");
    Response.Write("</x:Print>");
    Response.Write("</x:WorksheetOptions>");
    Response.Write("</x:ExcelWorksheet>");
    Response.Write("</x:ExcelWorksheets>");
    Response.Write("</x:ExcelWorkbook>");
    Response.Write("</xml>");
    Response.Write("<![endif]--> ");
    Response.Write("</head>");

    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView gv = new GridView();
    gv.AutoGenerateColumns = true;
    gv.DataSource = dt;
    gv.DataBind();
    gv.RenderControl(hw);

    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();
Response.Clear();
Response.Buffer=true;
字符串filename=“签出”;
响应。Charset=“”;
Response.ContentType=“application/vnd.ms excel”;
AddHeader(“内容处置”、“附件;文件名=“+filename+”.adt”);
回答。写(“”);
回答。写(“”);
回答。写(“”);
回答。写(“”);
回答。写(“”);
StringWriter sw=新的StringWriter();
HtmlTextWriter hw=新的HtmlTextWriter(sw);
GridView gv=新的GridView();
gv.AutoGenerateColumns=true;
gv.DataSource=dt;
gv.DataBind();
gv.渲染控制(hw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();

您会收到警告,因为从技术上讲,这不是导出到excel,但您发送了一个带有错误标题的html,以欺骗浏览器使用excel打开此内容

更好地使用原生Excel库并在服务器上生成真正的Excel文件,例如,它是开源的,不需要在服务器上使用Excel

下面是从DataTable生成excel文件的ashx处理程序示例


它在IE中如何不起作用?请描述在Mozilla中,下载或打开文件时会出现一个弹出消息。但在IE中不会发生任何情况