下载excel文件onclick,"无法解析从服务器收到的消息"

时间:2015-06-15 18:21:06

标签: c# asp.net excel

我想做一个onclick函数,下载一个excel文件,该文件也是在用户点击按钮时创建的,所以我找到了我用于onclick的这个函数

        public void CreateExcel(object sender, EventArgs e) 
    {
        DataTable dt;
        dt = Database.Get_All_Approval_Table_Grouped            
        string attachment = "attachment; filename=example.xls";
        Response.ClearContent();
        Response.AddHeader("content-disposition", attachment);
        Response.ContentType = "application/vnd.ms-excel";
        string tab = "";
        foreach (DataColumn dc in dt.Columns)
        {
            Response.Write(tab + dc.ColumnName);
            tab = "\t";
        }
        Response.Write("\n");
        int i;
        foreach (DataRow dr in dt.Rows)
        {
            tab = "";
            for (i = 0; i < dt.Columns.Count; i++)
            {
                Response.Write(tab + dr[i].ToString());
                tab = "\t";
            }
            Response.Write("\n");
        }
        Response.End();
    }

以下是我收到的回复:

Line: 885
Error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.

1 个答案:

答案 0 :(得分:0)

错误是因为您没有下载Excel文件,而是在为ASP.net WebForms页面提供服务。

你是modifying the response out from under WebForms

此外,这不是Excel

即使您解决了问题(通过使用.ashx处理程序来提供原始内容),Excel也会拒绝它。

您的服务器指示内容类型application/vnd.ms-excel

Response.ContentType = "application/vnd.ms-excel";

不是 Excel文件外。当Excel尝试解压缩.xlsx文件时,它将失败并显示内容与指示类型不匹配的安全警告。