Gridview导出excel当前页与所有页的方法!
2011-11-09 16:34
363 查看
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Text;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
Export("application/ms-excel", "报名详情表.xls");
}
//将下列代码复制到 .cs 文件中查看
#region GridView当前页 导出到 Excel by tzjly.20111108
/// <summary>
/// GridView 导出 Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//执行导出命令的“Button”所调用的方法
protected void btnDC_Click(object sender, EventArgs e)
{
Export("application/ms-excel", "报名详情表.xls");
}
//导出 Excel当前页 的方法
public void BindDataToGridView()
{
string str = System.Configuration.ConfigurationManager.ConnectionStrings["kyj2008ConnectionString2"].ConnectionString;
SqlConnection con = new SqlConnection(str);
SqlCommand cmd = new SqlCommand("exec Proc_tzj_zzctj '唐', '2011-10-1','2011-12-31'", con);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
sda.Fill(ds);
//this.GridView1.DataSource = ds;
this.GridView1.DataBind();
}
private void Export(string FileType, string FileName)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls"); //这里之所以没有用传进来的参数,是因为生成的 Excel 文件名若为中文时是乱码
Response.ContentEncoding = System.Text.Encoding.UTF7; // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentType = FileType; //设置输出文件类型为excel文件。
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
#region 在导出 Excel 前移除 GridView 的各种样式,但是要移除所有相关元素的样式比较繁琐,所以如果想移除所有样式再导出的话可以新建一个包含 GridView(不含任何样式) 的页面,然后绑定需要的数据再用导出
this.GridView1.Columns[this.GridView1.Columns.Count - 1].Visible = false; //可以将不想导出的列隐藏(这里隐藏了 GridView 中的最后一列“删除”列)
//this.GridView1.HeaderStyle.Reset(); //导出 Excel 前移除 GridView 中 Header 的样式
//this.GridView1.RowStyle.Reset(); //导出 Excel 前移除 GridView 中 Row 的样式
this.GridView1.PagerStyle.Reset(); //导出 Excel 前移除 GridView 中 Pager 的样式
//this.GridView1.ControlStyle.Reset(); //导出 Excel 前移除 GridView 中 Control 的样式 [ 即套用的 GridView 格式 ]
#endregion
this.GridView1.RenderControl(oHtmlTextWriter); //这里应该也可以导出 Repeater 控件中的信息的
this.GridView1.AllowPaging = false;
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
// this.GridView1.AllowPaging = true;
}
#endregion
#region GridView导出所有页到excel by tzjly.20111109----
private void Export2(string FileType, string FileName)
{
//清楚分页
GridView1.AllowPaging = false;
BindDataToGridView();
Response.Clear();
Response.Buffer = true;
//设定输出的字符集
Response.Charset = "GB2312";
//解决导出到Excel2007乱码问题
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
//假定导出的文件名为盘点结果表.xls
Response.AppendHeader("Content-Disposition", "attachment;filename=" +
HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
//解决导出到Excel2007乱码问题
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//设置导出文件的格式
Response.ContentType = FileType;
//关闭ViewState
this.EnableViewState = false;
StringWriter stringWriter = new StringWriter();
HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter);
GridView1.RenderControl(textWriter);
//把HTML写回浏览器
Response.Write(stringWriter.ToString());
Response.Flush();
Response.End();
GridView1.AllowPaging = true;//恢复分页
//为GridView重新绑定数据源
BindDataToGridView();
}
//下面这个方法是 将 GridView 导出 Excel 时必须需要的,否则会报错,可以去掉查看报错信息
public override void VerifyRenderingInServerForm(Control control)
{
}
//下面可以使当导出的单元格内为较长的数字(如:身份证)时不显示成科学计数法
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[4].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
e.Row.Cells[5].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
e.Row.Cells[6].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
}
}
#endregion
protected void btnDC2_Click(object sender, EventArgs e)
{
Export2("application/ms-excel", "所有刷卡记录.xls");
}
}
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Text;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
Export("application/ms-excel", "报名详情表.xls");
}
//将下列代码复制到 .cs 文件中查看
#region GridView当前页 导出到 Excel by tzjly.20111108
/// <summary>
/// GridView 导出 Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//执行导出命令的“Button”所调用的方法
protected void btnDC_Click(object sender, EventArgs e)
{
Export("application/ms-excel", "报名详情表.xls");
}
//导出 Excel当前页 的方法
public void BindDataToGridView()
{
string str = System.Configuration.ConfigurationManager.ConnectionStrings["kyj2008ConnectionString2"].ConnectionString;
SqlConnection con = new SqlConnection(str);
SqlCommand cmd = new SqlCommand("exec Proc_tzj_zzctj '唐', '2011-10-1','2011-12-31'", con);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
sda.Fill(ds);
//this.GridView1.DataSource = ds;
this.GridView1.DataBind();
}
private void Export(string FileType, string FileName)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls"); //这里之所以没有用传进来的参数,是因为生成的 Excel 文件名若为中文时是乱码
Response.ContentEncoding = System.Text.Encoding.UTF7; // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentType = FileType; //设置输出文件类型为excel文件。
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
#region 在导出 Excel 前移除 GridView 的各种样式,但是要移除所有相关元素的样式比较繁琐,所以如果想移除所有样式再导出的话可以新建一个包含 GridView(不含任何样式) 的页面,然后绑定需要的数据再用导出
this.GridView1.Columns[this.GridView1.Columns.Count - 1].Visible = false; //可以将不想导出的列隐藏(这里隐藏了 GridView 中的最后一列“删除”列)
//this.GridView1.HeaderStyle.Reset(); //导出 Excel 前移除 GridView 中 Header 的样式
//this.GridView1.RowStyle.Reset(); //导出 Excel 前移除 GridView 中 Row 的样式
this.GridView1.PagerStyle.Reset(); //导出 Excel 前移除 GridView 中 Pager 的样式
//this.GridView1.ControlStyle.Reset(); //导出 Excel 前移除 GridView 中 Control 的样式 [ 即套用的 GridView 格式 ]
#endregion
this.GridView1.RenderControl(oHtmlTextWriter); //这里应该也可以导出 Repeater 控件中的信息的
this.GridView1.AllowPaging = false;
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
// this.GridView1.AllowPaging = true;
}
#endregion
#region GridView导出所有页到excel by tzjly.20111109----
private void Export2(string FileType, string FileName)
{
//清楚分页
GridView1.AllowPaging = false;
BindDataToGridView();
Response.Clear();
Response.Buffer = true;
//设定输出的字符集
Response.Charset = "GB2312";
//解决导出到Excel2007乱码问题
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
//假定导出的文件名为盘点结果表.xls
Response.AppendHeader("Content-Disposition", "attachment;filename=" +
HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
//解决导出到Excel2007乱码问题
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//设置导出文件的格式
Response.ContentType = FileType;
//关闭ViewState
this.EnableViewState = false;
StringWriter stringWriter = new StringWriter();
HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter);
GridView1.RenderControl(textWriter);
//把HTML写回浏览器
Response.Write(stringWriter.ToString());
Response.Flush();
Response.End();
GridView1.AllowPaging = true;//恢复分页
//为GridView重新绑定数据源
BindDataToGridView();
}
//下面这个方法是 将 GridView 导出 Excel 时必须需要的,否则会报错,可以去掉查看报错信息
public override void VerifyRenderingInServerForm(Control control)
{
}
//下面可以使当导出的单元格内为较长的数字(如:身份证)时不显示成科学计数法
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[4].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
e.Row.Cells[5].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
e.Row.Cells[6].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
}
}
#endregion
protected void btnDC2_Click(object sender, EventArgs e)
{
Export2("application/ms-excel", "所有刷卡记录.xls");
}
}
相关文章推荐
- GridView导出Excel方法
- 从gridview 中查询数据导出Excel 简单方法
- 带分页功能的GridView导出Excel或Word的方法
- GridView中的数据导出到Excel方法(包含处理模板列)
- ASP.NET使用GridView导出Excel实现方法
- asp.net中gridview导出excel方法以及怎样修改导出的日期格式
- Gridview数据导出excel时身份证号码为科学计数法的解决方法
- GridView导出Excel使用UpdatePanel导致“无法分析从服务器收到的消息”解决方法.
- GridView导出Excel方法源码以及注意事项
- 在ASP.NET中GridView导出Excel的快速方法
- C# .Net 后台导出Excel方法(GridView、table或者DataTable)
- 将repeater、datalist、gridview中的数据导出到Excel中的简单方法
- 带分页功能的GridView导出Excel或Word的方法
- 自己总结的手动生成gridview导出excel的方法
- 将repeater、datalist、gridview中的数据导出到Excel中的简单方法
- 不需要安装office excel,导出GridView所有数据为Excel
- Gridview 导出excel,解决了只能导出当前页的问题
- gridview数据源导出到EXCEL的方法
- 将 GridView 中的内容导出到 Excel 中多个工作表(Sheet) 的方法
- 这是一个gridview导出到Excel的代码方法