我想做一个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.
答案 0 :(得分:0)
错误是因为您没有下载Excel文件,而是在为ASP.net WebForms页面提供服务。
你是modifying the response out from under WebForms。
即使您解决了问题(通过使用.ashx处理程序来提供原始内容),Excel也会拒绝它。
您的服务器指示内容类型为application/vnd.ms-excel
:
Response.ContentType = "application/vnd.ms-excel";
除 不是 Excel文件外。当Excel尝试解压缩.xlsx
文件时,它将失败并显示内容与指示类型不匹配的安全警告。