gridview导出execel

ltxyxj 2009-06-10 05:21:46
在网上找的一段代码:
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
导出的excel文件是空的,不知道怎么回事,请高人指教啊
...全文
16 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltxyxj 2009-06-11
  • 打赏
  • 举报
回复
自己解决了,在贴出的代码前加上gdv的绑定就ok了,谢谢大家的参与,接分
l8487 2009-06-10
  • 打赏
  • 举报
回复
上边发的是个类。你新建个类GetExcel.cs
然后全部复制-粘贴。直接用就行。数据超过excel一个sheet允许的最大行数不支持。excel2003测试通过。excel2007每测试。
excel2003版最多65536行,2007版有1048576行
l8487 2009-06-10
  • 打赏
  • 举报
回复
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;

/// <summary>
/// GetExcel 的摘要说明
/// 功能说明:.net2.0页面上的gridview及DataList等导出到excel的通用类
/// 作者:梁晓江
/// </summary>
public class GetExcel : System.Web.UI.Page
{
public GetExcel()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public StringWriter Export(string FileName, GridView gv)
{
System.Web.HttpContext.Current.Response.Charset = "UTF-8";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
System.Web.HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");//
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
gv.RenderControl(hw);
return tw;
}
//传入值filetype可以传入 "application/ms-word"使用word格式;
public StringWriter Export(string FileType, string FileName,GridView gv)
{
System.Web.HttpContext.Current.Response.Charset = "UTF-8";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename="+ HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
System.Web.HttpContext.Current.Response.ContentType = FileType;
System.Web.HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");//
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
gv.RenderControl(hw);
return tw;
}
//重载函数,有表格的头部和尾部时调用
public StringWriter Export(string FileType, string FileName, string Tablebegin, string Tableend, GridView gv)
{
System.Web.HttpContext.Current.Response.Charset = "UTF-8";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
System.Web.HttpContext.Current.Response.ContentType = FileType;
System.Web.HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");//
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
//表头
if (!Tablebegin.Equals(""))
{
hw.WriteLine(Tablebegin);
}
//表内容
gv.RenderControl(hw);
//表尾部设置
if (!Tableend.Equals(""))
{
hw.WriteLine(Tableend);
}
return tw;
}
//datalist倒出excel
public StringWriter Export(string FileType, string FileName,DataList dl)
{
System.Web.HttpContext.Current.Response.Charset = "GB2312";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
System.Web.HttpContext.Current.Response.ContentType = FileType;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
dl.RenderControl(hw);
return tw;
}
public override void VerifyRenderingInServerForm(Control control)
{
}
}
/*使用说明
1、需要在使用的网页中添加一个方法,例如
public override void VerifyRenderingInServerForm(Control control)// 这个是必须的。放在aspx.cs中。否则报错
{ }
protected void Button2_Click(object sender, EventArgs e)//这个是导出按钮的代码
{
this.GridView1.AllowPaging = false;//适用于分页显示的页
Bind();//适用于分页显示的页
GetExcel ge = new GetExcel();
Response.Write(ge.Export("application/ms-excel", "xx.xls",this.GridView1));
Response.End();
this.GridView1.AllowPaging =true;//适用于分页显示
}
2、对于含有“编辑”“删除”等按钮的gridview。需要修改页面文件的头文件中page指令的属性EnableEventValidation="false"
<%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation="false" CodeFile="1stocktake.aspx.cs" Inherits="jycode_zhuanye_cstmyy" %>
3、自定义数据源的分页代码
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
Bind();
}
*/

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧