小魔女 发表于 2015-1-16 14:22:22

NET网页编程之GridView数据导出到Excel与Excel数据导进到GridView示例

以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。将excel数据导进到GridView与将GridView数据导出到excel,这个功效应当是OA或ERP体系中常常会用到的功效吧,固然详细到项目中,利用的控件纷歧定是GridView,不外我想,不管甚么样的富控件,应当都撑持以DataTable为数据源吧,如许,我们办理列表控件与Excel数据互换,就有良多配合的地方。

1、从Execl中导进数据到GridView.
这个对照oledb来完成相称的复杂:
privateDataSetCreateDataSource()
{
stringstrCon;
strCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath("excel.xls")+";ExtendedProperties=Excel8.0;";
OleDbConnectionolecon=newOleDbConnection(strCon);
OleDbDataAdaptermyda=newOleDbDataAdapter("SELECT*FROM",strCon);
DataSetmyds=newDataSet();
myda.Fill(myds);
returnmyds;
}

protectedvoidButton1_Click(objectsender,EventArgse)
{
GridView1.DataSource=CreateDataSource();
GridView1.DataBind();
}

利用Oledb毗连对Excel的全体操纵,请参考本站以下文章:
利用OleDb,让Excel操纵与数据库一样复杂

2、然后是将GridView数据导出到Excel中。
在页面增添一个按钮,在单击事务中增加以下办法:
protectedvoidButton1_Click(objectsender,EventArgse)
{
Export("application/ms-excel","excel地点");
}

privatevoidExport(stringFileType,stringFileName)
{
Response.Charset="GB2312";
Response.ContentEncoding=System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,Encoding.UTF8).ToString());
Response.ContentType=FileType;
this.EnableViewState=false;
StringWritertw=newStringWriter();
HtmlTextWriterhw=newHtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}

//假如没有上面办法会报错范例“GridView”的控件“GridView1”必需放在具有runat=server的窗体标志内
publicoverridevoidVerifyRenderingInServerForm(Controlcontrol)
{
}
另有由于对Excel操纵,属于文件操纵,以是要引进称号空间IO和Text

全体背景代码以下:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Data.SqlClient;
usingSystem.Drawing;
usingSystem.IO;
usingSystem.Text;

publicpartialclassDefault1:System.Web.UI.Page
{
SqlConnectionsqlcon;
SqlCommandsqlcom;
stringstrCon="DataSource=(local);Database=数据库;Uid=sa;Pwd=sa";
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
bind();
}
}

publicvoidbind()
{
stringsqlstr="select*from数据库";
sqlcon=newSqlConnection(strCon);
SqlDataAdaptermyda=newSqlDataAdapter(sqlstr,sqlcon);
DataSetmyds=newDataSet();
sqlcon.Open();
myda.Fill(myds,"数据库");
GridView1.DataSource=myds;
GridView1.DataKeyNames=newstring[]{"姓名"};
GridView1.DataBind();
sqlcon.Close();
}

protectedvoidButton1_Click(objectsender,EventArgse)
{
Export("application/ms-excel","要导出的excel地点");
}

privatevoidExport(stringFileType,stringFileName)
{
Response.Charset="GB2312";
Response.ContentEncoding=System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,Encoding.UTF8).ToString());
Response.ContentType=FileType;
this.EnableViewState=false;
StringWritertw=newStringWriter();
HtmlTextWriterhw=newHtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}

publicoverridevoidVerifyRenderingInServerForm(Controlcontrol)
{
}
}


前台次要代码以下:
<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False">
<Columns>
<asp:BoundFieldDataField="姓名"HeaderText="姓名"/>
<asp:BoundFieldDataField="家庭住址"HeaderText="家庭住址"/>
<asp:BoundFieldDataField="邮政编码"HeaderText="邮政编码"/>
<asp:BoundFieldDataField="出身日期"HeaderText="邮政编码"/>
</Columns>
</asp:GridView>
<asp:ButtonID="Button1"runat="server"Text="导出"/>


以上代码来自互联网,并没有经由自己测试,不包管源码的准确性,但我想从以上的源码中,足以看出此类功效的解题思绪,假如供应的源码有忽略,人人略微修改便可。我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:)

乐观 发表于 2015-1-18 13:41:46

逐步缩小出错代码段的范围,最终确定错误代码的位置。

莫相离 发表于 2015-1-24 16:50:19

ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。

海妖 发表于 2015-2-2 11:30:20

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

爱飞 发表于 2015-2-7 19:21:05

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

金色的骷髅 发表于 2015-2-23 09:34:42

是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。

admin 发表于 2015-3-7 08:12:11

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

若天明 发表于 2015-3-14 17:56:57

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

柔情似水 发表于 2015-3-21 14:07:57

那么,ASP.Net有哪些改进呢?
页: [1]
查看完整版本: NET网页编程之GridView数据导出到Excel与Excel数据导进到GridView示例