Spiga
Posts - 84, Articles - 2, Comments - 219
Cnblogs
Dashboard
Login
Home
Contact
Gallery
RSS
killkill
专注于技术
关于Asp.net中使用以下代码导出Excel表格的问题
2006-09-21 08:37 by killkill, 585 visits,
网摘
,
编辑
private
void
ExportExcelFromDataGrid(
string
filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
{
Response.Clear();
Response.Buffer
=
true
;
Response.Charset
=
"
utf-8
"
;
Response.AppendHeader(
"
Content-Disposition
"
,
"
attachment;filename=
"
+
Server.UrlEncode ( filename ) );
Response.ContentEncoding
=
System.Text.Encoding.Default;
//
设置输出流为简体中文
Response.ContentType
=
"
application/ms-excel
"
;
//
设置输出文件类型为excel文件。
this
.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);
ToExcelGrid.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
private
void
Button4_Click(
object
sender, System.EventArgs e)
{
this
.Panel1.Visible
=
false
;
string
filename
=
"
内训师.xls
"
;
this
.DataGrid1.Columns[
6
].Visible
=
true
;
this
.DataGrid1.Columns[
7
].Visible
=
true
;
this
.DataGrid1.Columns[
this
.DataGrid1.Columns.Count
-
1
].Visible
=
false
;
this
.DataGrid1.Columns[
this
.DataGrid1.Columns.Count
-
2
].Visible
=
false
;
this
.DataGrid1.AllowSorting
=
false
;
this
.DataGrid1.AllowPaging
=
false
;
this
.DataGrid1.SelectedIndex
=
-
1
;
this
.BindGrid();
this
.ExportExcelFromDataGrid ( filename ,
this
.DataGrid1 );
}
原理是利用DataGrid(其实是其父类Control)的RenderControl方法输出,整个DataGrid的外观时,将这些HTML代码写入到缓冲区,同时设置一下 ContentType ,让Excel自己的自动纠错功能将这个输出存为一个Excel文件。
很多网上的朋友使用了以上这种可粘贴性强的代码,发现不好用,反映的错误类似:
“LinkButton必须放在一个具有runat=server的标签的Form”之类的话,而更多的网友说:
问题很明显,因为DataGrid没有放在runat=server 的Form里面,加上就可以了。
我认为,这种回答是很不准确的,理由如下:
通常使用这种代码的人他/她的DataGrid,最起码已经能用了,所以必定放在那个具有runat=server 的form标签里了。
报错是LinkButton,而不是DataGrid,很多细心的朋友很可能会说,我一直在用DataGrid,LinkButton在哪里来的。
其实真正的问题是,上面的代码没有加了 // * 的那几行代码引起的。
当然如果你的DataGrid,没有排序,没有使用那种按钮列的话,是不会出问题的。
言归正传,LinkButtion其实是你将DataGrid设为可排序时候,的表头包含的,所以我要将DataGrid的排序设为False。
同样得到上面的其实,那些按钮列,什么"编辑"、“删除”等等这些,也是用了LinkButton,把他设为不可见就是了。
其实说得再明白一点就是,将有可能产生LinkButton,或其他控件的东西都不让它输出就是了
Categories:
Study .net EveryTime
刷新评论
切换模板
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
510289
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
找找看
Google搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
最新IT新闻:
19岁天才黑客发布首个iPhone 3GS破解软件
新浪邮箱大本营粉墨登场!Sina.cn开放注册
IE市场份额首次跌破60%
Google App Engine宕机6小时——云的安全在哪里?
微软新推社交网站Windows Live Planet
相关链接:
About
最新随笔
[原]Oracle删除大表并回收空间的过程
[转]新手球拍DIY完全教程(图文版)
[转]STIGA所有底板性能参数速查
[原] 在域环境中打开SSMS非常慢 续
[原] 在域环境中打开SSMS非常慢
[原]批量添加DNS的A记录和PTR记录
ASCII 表
[原]Linux使用密钥认证
[原]RHCS集群的服务切换测试札记
[转]Linux 下判断Server 内存是否不足
[原]关于存储的性能-IOPS
集群、邮件、OCP
[译|转]ESX 3.5中使用QLogic QLE 220 HBA卡
安装集群的时候遇到的几个问题
[原]单核、双核、四核、八核、十六核
^M的解决方案
Windows下的网卡Teaming
“见识”很重要 记一起Oracle的SQL调整
命令行下设置IP地址的方法
[原]Console小技巧——Console版贪食蛇
[原]Console小技巧——字符涂鸦
个人源代码整理设想
SQLPlus常用编辑功能
[转]oracle是如何工作的--非常形象
[原]sqlplus的一个小技巧
[励]年薪NNN万数据库牛人牛新庄的成长历程
[原]Console小技巧——七彩输出
[原]成功在ESX上搭建SQL Server 2005集群
[转]Oracle的Online Redo Log 相关操作
[原]ESX使用共享磁盘
[原]发布一个防SQL注入漏洞的HttpModule
[原] JT SQL Server 性能调优札记之四
[原] JT SQL Server 性能调优札记之三
[原] JT SQL Server 性能调优札记之二
[原] JT SQL Server 性能调优札记之一
[转]性能调优的步骤
Linux 双网卡绑定测试
[标志]从今天开始改变写博客的方式
我的软设、系分考试经验(书)
通过系分考试
最新评论
re: ASCII 表
帅! -- guoadou
re: [励]年薪NNN万数据库牛人牛新庄的成长历程
起点高而已,换句话说家境应该不错,我相信在中国,大部分程序员都是为了混口饭吃,如不然,像这样的人比比皆是! -- 1.1
re: [原]发布一个防SQL注入漏洞的HttpModule
@tony508 失误啊,失误啊 这样才对 if (value.Length > this.minQueryLength ) //原来是 if (value.Length > 10... -- killkill
re: [原]发布一个防SQL注入漏洞的HttpModule
源码里minQueryLength你根本就没用啊,白配置了 -- tony508
re: [励]年薪NNN万数据库牛人牛新庄的成长历程
向你学习。努力奋斗中......如果不嫌弃我也留一个qq加一个我。416002468 -- *僵@尸.net国@宝*
日历
<
2006年9月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
随笔分类
Rss
C/C++
Rss
Fall in OCP
Rss
Linux
Rss
MirrorBuilder
Rss
Oracle
Rss
SQL Server 极高可用性架构
Rss
SQL Server 实践
Rss
Study .net EveryTime
Rss
Working@NC
Rss
乒乓乒乓
随笔档案
2009年6月
2009年5月
2009年4月
2009年3月
2009年2月
2009年1月
2008年12月
2008年11月
2008年10月
2008年9月
2008年6月
2008年5月
更多...
2006年9月
我参加的小组
ASP.NET
LumaQQ.NET
团队博客
数据库团队(0/0)
60天内阅读排行
[原]批量添加DNS的A记录和PTR记录(158)
[原] 在域环境中打开SSMS非常慢(100)
ASCII 表(72)
[原]Linux使用密钥认证(68)
[原] 在域环境中打开SSMS非常慢 续(42)
阅读排行榜
[原创]SQL Server 2005 镜像构建手册(4319)
FCKEditor在Asp.net的安装(3039)
[原]发布一个防SQL注入漏洞的HttpModule(2821)
[原]一次SQL Server调优经历(2663)
[原] JT SQL Server 性能调优札记之四(2243)
大牛场
Rss
blue_prince
朋友的地盘
Hold's Blog
pangwa's Blog
robaggio's Blog
周大师的OracleWorld