急!请教一个Gridview导出Excel的问题,希望大家帮忙

铁血男儿007 2010-09-24 09:12:21
我首先用最通常的做法,直接绑定数据源(DataSet或者DataTable),然后再导出,导出以后Excel首行的列名也就是DataSet或DataTable中的字段名,但那是英文的,我现在需要把它显示成中文的,怎么办?

后来我在网上搜到一个方法,不绑定数据源,而是绑定前台页面上的Gridview,Gridview上面显示什么就能够导出什么,因为Gridview的表头列名显示的是中文,这样就可以解决上面那个问题了,但是新的问题又出现了,如果有分页的话,这种方法只能导出当前页,其他页的数据则导出不了。

所以,真诚的向大家请教,有什么办法能够同时实现以下两个效果:

1、导出Excel的首行列名必须是中文

2、能够支持分页,一次性导出所有的数据
...全文
244 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcfboy1 2011-04-25
  • 打赏
  • 举报
回复
貌似21楼的只能导出第一页数据
huanshayi 2010-09-25
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
hanyise520 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zjl2468 的回复:]
引用 2 楼 net_lover 的回复:
参见
http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx
其实,你直接读取所有数据,然后输出即可

那怎么控制导出Excel的首行列名都是中文呢?
[/Quote]
控制中文,你只需要 查询出来的 列表 用 AS 重命名就行啦 。
比如 select loginID as 用户名,PWD as 密码 from users
GlyphVectory 2010-09-25
  • 打赏
  • 举报
回复
http://download.csdn.net/source/2647486
直接用,曾经上班时候写的。非复杂的到处Excel都可以。
zell419 2010-09-25
  • 打赏
  • 举报
回复
你遍历下DataTable第一行的每一列。
手动给它赋值下。
想中文就中文。孟加拉文孟加拉文。
难道你有几百个列?不想手动弄?
铁血男儿007 2010-09-25
  • 打赏
  • 举报
回复
顶上去
End 2010-09-25
  • 打赏
  • 举报
回复
啥也不说,上代码,以前写的个例子
#region[把Gridview中的数据导出到Excel]
/// <summary>
/// 把Gridview中的数据导出到Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void bt_out_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
//gaoyang [10/21/2006] 经测试如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。
Response.ContentEncoding = System.Text.Encoding.UTF7;

//设置输出文件类型为excel文件
Response.ContentType = "application/ms-excel";
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.gv_information.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
}
#endregion
铁血男儿007 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 net_lover 的回复:]
参见
http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx
其实,你直接读取所有数据,然后输出即可
[/Quote]
那怎么控制导出Excel的首行列名都是中文呢?
「已注销」 2010-09-24
  • 打赏
  • 举报
回复
慢死你,建议你用第三方组件,如myxls或NPOI等等。。。
铁血男儿007 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 myhope88 的回复:]
用excel组件导出本身就可以设置标题的啊
[/Quote]
怎么设置啊,请具体说说
myhope88 2010-09-24
  • 打赏
  • 举报
回复
用excel组件导出本身就可以设置标题的啊
铁血男儿007 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wuyq11 的回复:]
excel模板列中设置第一行为字段名
sheet.Cells[i+2,"A"]="";
[/Quote]
请问如何“遍历数据集,打开EXCEL模板,赋值到单元格”,代码具体怎么写?
还有sheet.Cells[i+2,"A"]中的i+2是什么意思?
laichunlin 2010-09-24
  • 打赏
  • 举报
回复
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
这句如果没有,有可能用07打开有错

bindGridView1();是绑定gridview数据源

所有字段在gridview中设置好了
laichunlin 2010-09-24
  • 打赏
  • 举报
回复

bindGridView1();
GridView1.AllowPaging = false;
Response.Clear();
Response.Charset = "GB2312";
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
Response.Buffer = true;
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("工资详细", System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/vnd.ms-excel";
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);

GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
GridView1.AllowPaging = true;
bindGridView1();

GridView1.AllowPaging = false;
wuyq11 2010-09-24
  • 打赏
  • 举报
回复
excel模板列中设置第一行为字段名
sheet.Cells[i+2,"A"]="";
铁血男儿007 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyq11 的回复:]
设置隐藏的gridview绑定所有数据,导出到EXCEL
gridview设置字段名
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename="+Server.UrlEncode(filename)+".xls……
[/Quote]
我还不是很理解你的意思,具体怎么设置啊,能附上详细的代码吗,麻烦你了,非常感谢!
wuyq11 2010-09-24
  • 打赏
  • 举报
回复
设置隐藏的gridview绑定所有数据,导出到EXCEL
gridview设置字段名
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename="+Server.UrlEncode(filename)+".xls");
可直接输出字段名
EXCEL模板也可设置字段名
铁血男儿007 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 net_lover 的回复:]
字段名字是什么完全是自己控制的啊。
[/Quote]
怎么控制啊,请详细说说,不明白哎
whb147 2010-09-24
  • 打赏
  • 举报
回复
我一般都是用SQL写好
SQL='select User_Name as 用户名称,User_Tel as 用户电话 from User_info '
然后用这个数据源去作下载。
呵呵
wuyq11 2010-09-24
  • 打赏
  • 举报
回复
遍历数据集,打开EXCEL模板,赋值到单元格
设置隐藏的gridview绑定所有数据,导出到EXCEL
或Response.ClearContent();
Response.BufferOutput = true;
Response.Charset = "utf-8";
Response.ContentType = "text/xml";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename="+Server.UrlEncode(filename)+".xls");
Response.Write("<?xml version='1.0'?><?mso-application progid='Excel.Sheet'?>");
加载更多回复(3)

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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