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条记录。不过一般的记录文件应该不会这么大。

     所以对于我来说已经够用了

posted @ 2008-08-25 23:03  YangShenglin  阅读(199)  评论(0编辑  收藏  举报