public class ExcelResult : ActionResult
{
public ExcelResult(StringBuilder b, string fileName)
{
this.b = b;
this.FileName = fileName;
} public StringBuilder b
{
get;
set;
} public string FileName
{
get;
set;
} public override void ExecuteResult(ControllerContext context)
{
SetResponse(context);
} /// <summary>
/// 设置并向客户端发送请求响应。
/// </summary>
/// <param name="context"></param>
private void SetResponse(ControllerContext context)
{
byte[] bytestr = Encoding.Unicode.GetBytes(b.ToString());
context.HttpContext.Response.Clear();
context.HttpContext.Response.ClearContent();
context.HttpContext.Response.Buffer = true;
context.HttpContext.Response.Charset = "gb2312";
context.HttpContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
context.HttpContext.Response.ContentType = "application/ms-excel";
context.HttpContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8) + ".xls");
context.HttpContext.Response.AddHeader("Content-Length", bytestr.Length.ToString());
context.HttpContext.Response.Write(b);
context.HttpContext.Response.End();
}
}采用asp.net mvc框架,这是导出EXCEL的Action返回类。求解。。多谢。
{
public ExcelResult(StringBuilder b, string fileName)
{
this.b = b;
this.FileName = fileName;
} public StringBuilder b
{
get;
set;
} public string FileName
{
get;
set;
} public override void ExecuteResult(ControllerContext context)
{
SetResponse(context);
} /// <summary>
/// 设置并向客户端发送请求响应。
/// </summary>
/// <param name="context"></param>
private void SetResponse(ControllerContext context)
{
byte[] bytestr = Encoding.Unicode.GetBytes(b.ToString());
context.HttpContext.Response.Clear();
context.HttpContext.Response.ClearContent();
context.HttpContext.Response.Buffer = true;
context.HttpContext.Response.Charset = "gb2312";
context.HttpContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
context.HttpContext.Response.ContentType = "application/ms-excel";
context.HttpContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8) + ".xls");
context.HttpContext.Response.AddHeader("Content-Length", bytestr.Length.ToString());
context.HttpContext.Response.Write(b);
context.HttpContext.Response.End();
}
}采用asp.net mvc框架,这是导出EXCEL的Action返回类。求解。。多谢。
/// <summary>
/// 导出到Execl
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnIpt_Click(object sender, EventArgs e)
{
//调用GExport方法 必须要结合 VerifyRenderingInServerForm方法 一起使用
Export("application/ms-excel", "员工导出信息表.xls");
}
private void Export(string FileType, string FileName)
{
Response.Clear();
Response.Buffer = true; Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); // 中文
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.UnicodeEncoding.UTF8).ToString()); //Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.GridView2.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
}
//这个方法是配合导出Excel功能,内容不用写
public override void VerifyRenderingInServerForm(Control control)
{
}
{ }
public override void VerifyRenderingInServerForm(Control control)//必须有这个方法
{ }
这个是采用WebForm方式的,在MVC里面没有使用这种方式。。
这个方法是在WebForm里面用的吧。我现在采用的是MVC框架。。
我一点导出,页面就一直在请求,等一会页面就报 无法显示网页的错了 。求助啊
{
StringBuilder b = new StringBuilder();
b.Append("药品商品名称\t");
b.Append("药品通用名称\t");
b.Append("批准文号\t");
b.Append("剂型\t");
b.Append("规格\t");
b.Append("药品分类\t");
b.Append("认证时间\t");
b.Append("认证机构\t\n"); String spmc = WebUtils.Cast.String(Request["Spmc"], "");
String eType = WebUtils.Cast.String(Request["eType"], "");
String drugType = WebUtils.Cast.String(Request["drugType"], "");
int corpId = WebUtils.Cast.Int(Request["corpId"], 0);
int pageSize = WebUtils.Cast.Int(Request["pageSize"], 15);
int pageIndex = WebUtils.Cast.Int(Request["page"], 1);
Sysadmin admin = GetSysadmin(corpId); int total = 0;
IList<Credit_drug> list = Credit_drugService.GetList(out total, pageSize, pageIndex, admin.Id, spmc, drugType);
for (int i = 0; i < list.Count; i++)
{
b.Append(list[i].Spmc + "\t");
b.Append(list[i].Tymc + "\t");
b.Append(list[i].Pzwh + "\t");
b.Append(list[i].Jx + "\t");
b.Append(list[i].Gg + "\t");
b.Append(list[i].DrugSortDict.TypeName + "\t");
b.Append(list[i].Rzsj + "\t");
b.Append(list[i].Rzjg + "\t\n");
}
return new ExcelResult(b, admin.UserName );
}这是调用的代码。下面的是继承的返回Action通用导出EXCEL类
public class ExcelResult : ActionResult
{
public ExcelResult(StringBuilder b, string fileName)
{
this.b = b;
this.FileName = fileName;
} public StringBuilder b
{
get;
set;
} public string FileName
{
get;
set;
} public override void ExecuteResult(ControllerContext context)
{
SetResponse(context);
} /// <summary>
/// 设置并向客户端发送请求响应。
/// </summary>
/// <param name="context"></param>
private void SetResponse(ControllerContext context)
{
byte[] bytestr = Encoding.Unicode.GetBytes(b.ToString());
context.HttpContext.Response.Clear();
context.HttpContext.Response.ClearContent();
context.HttpContext.Response.Buffer = true;
context.HttpContext.Response.Charset = "gb2312";
context.HttpContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
context.HttpContext.Response.ContentType = "application/ms-excel";
context.HttpContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8) + ".xls");
context.HttpContext.Response.AddHeader("Content-Length", bytestr.Length.ToString());
context.HttpContext.Response.Write(b);
context.HttpContext.Response.End();
}
}