ASP.NET 导出数据到Excel
今天一直想找一个比较好的。可以在服务器端生成Excel文件的办法
目前找到以下几种:
1,GridView1控件直接重写。
public void ToExcel(System.Web.UI.Control ctl, string FileName)
{
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName + ".xls");
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
调用:重写Control public override void VerifyRenderingInServerForm(Control control) { }
obj.ToExcel(this.GridView1, "Excel1") ;
但是我不知道怎么去控制每个表格的样式。假如GirdView分页。那要怎么下载所有的数据。
2,调用微软的Office组件。
但是有很多人反应。Excel进程关不掉。再一个资源浪费比较大。不知道速度怎么样。
3,最后找了一个开源的组件。
官方地址:http://myxls.in2bits.org/wiki/MainPage.ashx
虽然功能不是很完善。但是对于一般平时的使用够了。并且官网也在不断的更新。好像下一个版本会支持到2007了。
测试了一下。在数据10000条下一个WorkSeet还可以考虑。
测试在数据在20000条。十个WorkSheet.就相当于200000条记录。不过一般的记录文件应该不会这么大。
所以对于我来说已经够用了