实现Reapter控件数据导出功能

来源:互联网 发布:vb简单程序编写 编辑:程序博客网 时间:2024/06/06 16:33
本质:将Reapter控件里的数据通过循环读取表头,标题,并将其以Html的形式写入到xls里面,实现导出功能!
后台代码:
protected void BtnExport_Click(object sender, EventArgs e)        {            using (TextWriter tw = new StringWriter())            {                using (HtmlTextWriter htw = new HtmlTextWriter(tw))                {                    System.Text.StringBuilder s = new System.Text.StringBuilder();                    s.AppendLine("<table style='width:800px;' border=1>");                    HtmlTableRow trHeader = this.rpt_GridReport.Controls[0].FindControl("trTitle") as HtmlTableRow;                    if (trHeader != null)                    {                        s.AppendLine("<tr>");                        for (int a = 0; a < trHeader.Cells.Count; a++)                        {                            s.AppendFormat("<td><center>{0}</center></td>", trHeader.Cells[a].InnerText);                        }                        s.AppendLine("</tr>");                    }                    for (int i = 1; i <= this.rpt_GridReport.Items.Count; i++)                    {                        HtmlTableRow tr = this.rpt_GridReport.Controls[i].FindControl("trEval") as HtmlTableRow;                        s.AppendLine("<tr>");                        for (int j = 0; j < tr.Cells.Count; j++)                        {                            s.AppendFormat("<td><center>{0}</center></td>", tr.Cells[j].InnerText);                        }                        s.AppendLine("</tr>");                    }                    s.Append("</table>");                    Export("application/ms-excel", "excel.xls", s.ToString());                }            }        }

private void Export(string FileType, string FileName, string s)        {            Response.Charset = "utf-8";            Response.ContentEncoding = System.Text.Encoding.UTF8;            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());            Response.ContentType = FileType;            Response.Write(s);            Response.End();        }



0 0