最近有点空就喜欢去研究研究GridView的使用,所以你如果是想要学习这方面的东西可以来参观参观。^_^
这里说明一下GridView到Excel的导出实现。平时你看到的GridView导出Excel代码可能很多了,但是我这里的肯定和你平时看到的不同,先看一下我的截图吧:
看出来了吧,我的导出是有条件可以选择的。你是想到处当前页面的数据呢还是想到处全部数据,或者是前30条数据。。。。
先说明一下我的实现原理吧。
当点击导出按钮时会去判断RadioButtonlist当前值然后去选择应该导出哪些数据到Excel。代码如下:
导出GrivView到Excel的方法:
- {
- HttpContext.Current.Response.Clear();
- HttpContext.Current.Response.AddHeader(
- "content-disposition", string.Format("attachment; filename={0}", fileName));
- HttpContext.Current.Response.ContentType = "application/ms-excel";
- using (StringWriter sw = new StringWriter())
- {
- using (HtmlTextWriter htw = new HtmlTextWriter(sw))
- {
- // Create a form to contain the grid
- Table table = new Table();
- // add the header row to the table
- if (gv.HeaderRow != null)
- {
- GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
- table.Rows.Add(gv.HeaderRow);
- }
- // add each of the data rows to the table
- if (top == 30)
- {
- for (int i = 0; i <= 29; i++)
- {
- GridViewRow row = gv.Rows[i];
- GridViewExportUtil.PrepareControlForExport(row);
- table.Rows.Add(row);
- }
- }
- else
- {
- foreach (GridViewRow row in gv.Rows)
- {
- GridViewExportUtil.PrepareControlForExport(row);
- table.Rows.Add(row);
- }
- }
- // add the footer row to the table
- if (gv.FooterRow != null)
- {
- GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
- table.Rows.Add(gv.FooterRow);
- }
- // render the table into the htmlwriter
- table.RenderControl(htw);
- // render the htmlwriter into the response
- HttpContext.Current.Response.Write(sw.ToString());
- HttpContext.Current.Response.End();
- }
- }
- }
- /// <summary>
- /// Replace any of the contained controls with literals
- /// </summary>
- /// <param name="control"></param>
- private static void PrepareControlForExport(Control control)
- {
- for (int i = 0; i < control.Controls.Count; i++)
- {
- Control current = control.Controls[i];
- if (current is LinkButton)
- {
- control.Controls.Remove(current);
- control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
- }
- else if (current is ImageButton)
- {
- control.Controls.Remove(current);
- control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
- }
- else if (current is HyperLink)
- {
- control.Controls.Remove(current);
- control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
- }
- else if (current is DropDownList)
- {
- control.Controls.Remove(current);
- control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
- }
- else if (current is CheckBox)
- {
- control.Controls.Remove(current);
- control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
- }
- if (current.HasControls())
- {
- GridViewExportUtil.PrepareControlForExport(current);
- }
- }
本文转载处:http://blog.youkuaiyun.com/dujingjing1230/archive/2009/10/29/4744428.aspx