2024年6月7日发(作者:)

电脑编程技巧与维护 

在ASP.NET中将GridView数据导出到Word、Excel 

陈洪艳 

(南京工程高等职业学校,南京21 1 135) 

摘要:为了克服ASP.NET的GridView控件不能在客户端保存数据的缺陷,利用数据控件与Ofice软件的接If:/, 

实现了导出GridView中的数据到Word、Excel文件。 

关键词:GridView控件;数据导出;ASP.NET 

Export Data to Word,Excel form GridView in ASP.NET 

CHEN Hong-yan 

(Nanjing High Engineering Vocational School,Nanjing 211135,China) 

Abstract:In order to overcome the defects of GridView control in ASP.NET,that the data in it can not be saved in the 

client,using the interface of Data Control and Ofice sofftware,implement to expo ̄data in GridView to file of Word or Exce1. 

Key words:GridView;expo ̄data;ASP.NET 

在Web应用程序中,有时需要利用GridView显示、修改 

数据,但是无法保存到客户端。在VS.NET中,利用数据控件 

与Ofice软件的接口,可以将表格数据导出到客户端常用的格 f

式文件中,便于浏览和打印,导出到Word和Excel是调用相 

同的接口实现的。 

实现该功能涉及3个文件:ExportData.aspx、ExportData. 

tem.Configuration.ConfigurationManager.ConnectionStrings 

【..Connection”】.ConnectionString); 

con.Open 0; 

OleDbCommand command=new OleDbCommand r” 

Select from Showme”,con); 

OleDbDataReader dataReader = command.Exe- 

aspx.CS及Web.config。采用了Access数据库,名为Customs. 

mdb,记录在里面的表Showme中。因此需要在ExportData.as— 

cuteReader 0; 

if(datareader.HasRows) 

f,/如果查询结果不空 

dataReader.Read 0; 

GridView1.DataSource=dataReader; 

px.CS中引用命名空间:using System.Data.OleDb。 

网页数据导出界面如图1所示。 

GridView1.DataBind 0; 

豳蕊嘲嬲暖融■ 一

3 辑期嘲 

Salect ExpertTypel 《E榔帕l吉l 

 

 … 

} 

con.Close 0; 

鬈Exc_e _l l__lll¨,_一 蝤 豳墨—■■豳———圈啊一 

..

Dl 一…一~ 

zi鐾ol培 

~一一… 

} 

} 

i986-12 秘 

2 GridView导出到Excel文件 

导出(ExpoS)按钮中的代码,在图1中,如果用户选择 

图1数据导出界面 

l 将查询结果显示在GridView中 

1.1在Web.Config中定义连接串 

<connectionStrings> 

了“Excel”,则执行下面的代码。无论是Excel还是Word文 

件,为避免重复便于区分,其文件名通过获取系统的年月日 

时分来表示: 

if(DropDownList1.SelectedValue==”Excel”1 

<add nalne=’’Connection”connectionString ”Provider= 

Microsoft.Jet.OLEDB.4.0;Data Source=E:\GridJ0

DOC— 

{/股定导出的文件名为年月日时分 

string dt=DateTime.Now.ToString r”YYYY—MM— 

XLSkExport\Bin\Customs.mdb:Jet OLEDB:Database Password= 

123”,> 

</connectionStrings> 

dd-hh-mm”); 

sting a ̄achment=”arrm;filename=”+dt+”.xls”: 

该定义将在后面的代码中用到。为了方便起见,在实际 

HttpContext.Current.Response.ClearContent 0; 

HttpContext.Current.Response.BufferOutput=true; 

应用中,可将数据库所在的绝对路径改为相对路径。如果是 

SQL Server等大型数据库,其连接方式大同小异。 

1.2在Export.aspx.as中的代码 

臌定输出的汉字国标字符集,否则不能显示中文 

,,同上,略 

,/开始往Excel文件中添加内容 

HttpContext.Current.Response.AddHeader f”content— 

在页面的Page—Load 0事件中,连接数据库后自动执行 

查询,结果显示在GridViewl控件中: 

protected void Page

Load(object sender,EventArgs e) 

_

disposiiton”,atm); 

HttpContext.Current.Response.ContentType=”印一 

{ 

if(!IsPostBack) 

作者简介:陈洪艳(1972一),女,讲师,研究方向:软件体 

系结构。 

收稿日期:2012—07—10 

{朋 用在Web.Config中的“Connection”建立连接 

OleDbConnection con=new OleDbConnection(Sys—— 

, 

与 

S0FrWARE DEVEL0PMENT AND DESIGN 软件开发与设计 

plication/ms—excel”: 

{ 

Culturelnfo clnfo=new CultureInfo(”ZH—CN”. 

HttpContext.Current.R ̄sponse.ClearContent(); 

true); 

HttpContext.Current.Response.BufferOutput=true; 

StringWriter sWriter=new StringWriter(cInfo): 

优殳定字符集为GB2312,否则不能输出汉字 

HtmlTextWriter tWriter = new HtmlTextWriter 

HttpContext.Current.Response.Charset=”GB2312”: 

(stringWriter); 

HttpContext.Current.Response.ContentEncoding Sys- 

StringWriter swriter=new StringWriter 0; 

tern.Text.Encoding.GetEncoding(”GB2312”); 

HtmlText、^ ter htwriter=new HtmlText、^,riter 

殳定导出的文件名为年月日时分 

(swriter); 

string dt=DateTime.Now.ToString f”YYYY—MM—dd— 

HtmlForm hFrm=newHtmlForill 0: 

hh-mm”); 

GridView1.Parent.Controls.Add(hFrm): 

stirng attachment=”atm;filenarne=”+dt+”.doc”: 

,/使用客户脚本的服务器控件要包含在}rr啪LFo咖 

HttpContext.Current.Response.Cache.SetCacheability(Http- 

//月眨务器控件中 

Cacheability.NoCache); 

hFrm.Attributes『.|runat”1=”server”; 

,/注意与Excel不同之处 

hFrm.Controls.Add(GridView1): 

HttpContext.Current.Response.ContentType=”appSca- 

1(htwriter); 

tion/vnd.word”; 

HttpContext.Current.Response.Write(swriter.ToString 

,,之间的代码同Excel,略 

()) ; 

HttpContext.Current.Response.End 0; 

HttpContext.Current.Response.End 0; 

} 

} 

4 结语 

3 GridView导出到word文件 

实现了在ASP.NET中,在客户端将GridView控件中的数 

导出(Expo ̄)按钮中的代码,如果用户在下拉列表中选 

据导出到Word、Excel等常用格式的文件中,便于浏览和打 

择了“Word”,则执行下面的代码: 

印。在实际应用中,可进一步设置纸张大小、列宽、标题栏 

if(DropDownList1.SelectedValue==”Word”1 

等。代码在ASP.NET 2010+Ofifce 2003下调试通过。 

(上接第23页) 

表1项目模块 

代码实现功能。 

模块名称 模块功能 模块信息传递 

表2测试的典型环境、环境特点和测试内容 

实现系统功能层 控制Aeti ̄ty、View、Intent 

典型环境 环境特点 测试内容 

等类,实现数据传递 

图书馆、自习室等 基本安静,避免打扰 静音模式 

collection 

通过硬件设置搜集周围环境 

数据

把搜集到的信息分类存储, 

会场、上课时间等 有扩音设备,需要安静 振动模式 

返回数据值 返回给main 

model 分析lllain函数赋予的数据值, 选择mute standard outdoor 

商场、操场等 嘈杂,需要声音振动提示 户外模式 

analysing 选取对应的情景模式 vibration中一个传人值 

默认 其他通常状态 标准模式 

mute 设置无铃声、无振动 设置静音模式 

standard 设置有铃声、无振动 设置标准模式 

3.3应用经验 

l outdoor 设置有铃声、有振动 设置户外模式 

(1)个人创新:为实现新技术的突破,解决遭遇到的许 

vibration 设置无铃声、有振动 设置振动模式 

多新挑战、新困难,团队中的每一个人都需要创新意识。 

在该阶段,团队队员进行分工,独立编写模块。由队长 

(2)统一与一致:只有和所在团队规定的格式一致时, 

搭建模块架构,确定模块之间相互传递数据时的数据结构定 

才能方便地对其他人的代码的理解。 

义以及各模块函数命名等。规定各模块输入值和预期输出值。 

(3)减少文档:对于小规模团队而言,直接的交流和沟 

3.2.2模块整合 

通才是最有效的。 

按照主函数的结构安排,插入各模块的功能函数调用部 (4)民主和荣辱与共。 

分。对变量、结构体等进行初步检查,防止同名变量的影响。 

参考文献 

3.2.3测试驱动 

[1】朱少民,左智.软件过程管理[M】.清华大学出版社, 

可以全部团队的人员(团队人数在3—4人时)加入测试 

2007.4. 

设计和代码修改的过程中,避免忽略细节,同时也可以避免 

[2】易金刚.极限编程理论的研究[J].计算机时代,2010,6. 

沟通不畅带来的不必要的麻烦。 

【3]B.Kent.Test-Driven Development:By Example【M】.Peamon 

对于不同的环境输入,进行运行过程和结果测试。 

Education,Inc,2003. 

测试的典型环境选取、环境特点和测试内容表示如表2 

[4】F.Michae1.Working Effectively with Legancy Code【M】. 

所示。 

Prentice Hall,Inc.,2004,10. 

使用语句覆盖测试、分支覆盖测试、条件覆盖测试、谓 

[5】F.Martin.Refact0ring:Impmving tlle Design of Existing Code 

词覆盖测试、路径覆盖测试、边界值测试、特殊值测试等单 

[M】.Pearson Education,Inc.,2003,8. 

元测试方法,对代码进行测试和修改。消除代码错误,完善 

/7

\/