.net gridview导出数据

来源:互联网 发布:数控机床自动编程 编辑:程序博客网 时间:2024/06/13 22:09

导出数据,另存为excel 在数据管理后台当中经常用到,之前找了不少代码,试验了好多次,现在把代码整理保存一下

首先重载VerifyRenderingInServerForm

        /// <summary>        /// GridView如果需要实现导出Excel功能,则该函数需要重载        /// </summary>        /// <param name="control"></param>        public override void VerifyRenderingInServerForm(Control control)        {            // Confirms that an HtmlForm control is rendered for        }

然后清除表格中的控件,由于有一些需要处理的数据往往是用label或者其他控件进行设置的,所以要清除控件

        /// <summary>        /// 清除控件中的所有控件,以便导出Excel        /// </summary>        /// <param name="control"></param>        private void ClearControls(Control control)        {            for (int i = control.Controls.Count - 1; i >= 0; i--)            {                ClearControls(control.Controls[i]);            }            if (!(control is TableCell))            {                if (control.GetType().GetProperty("SelectedItem") != null)                {                    LiteralControl literal = new LiteralControl();                    control.Parent.Controls.Add(literal);                    try                    {                        literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control, null);                    }                    catch                    {                    }                    control.Parent.Controls.Remove(control);                }                else if (control.GetType().GetProperty("Text") != null)                {                    LiteralControl literal = new LiteralControl();                    control.Parent.Controls.Add(literal);                    literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control, null);                    control.Parent.Controls.Remove(control);                }            }            return;        }

然后就是导出数据了

        /// <summary>        /// 导出Excel功能        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void Btn_Excel_Click(object sender, EventArgs e)        {            try            {                //如果使用gridview自动分页则设置allowpage为false,不分页读取全部数据,如果没有使用自带的分页工具,那么将每页的数据条数设置为最大                pagesize = 10000;                gridView.ShowFooter = false;                LadaData();                Response.Clear();                Response.Buffer = true;                Response.Charset = "utf-8";                Response.AppendHeader("Content-Disposition", "attachment;filename="                        + System.Web.HttpUtility.UrlEncode("数据明细" + System.DateTime.Now.Date.ToString("yyyyMMdd")) + ".xls");                Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");//设置输出流为简体中文                Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。                 EnableViewState = false;                System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);                System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);                ClearControls(gridView);                gridView.RenderControl(oHtmlTextWriter);                Response.Write(oStringWriter.ToString());                Response.End();                //还原分页显示                pagesize = 15;                gridView.ShowFooter = true;                LadaData();            }            catch (Exception)            {                Maticsoft.Common.MessageBox.Show(this,"导出失败,请重试!");            }        }




0 0
原创粉丝点击