Excel和数据库之间数据的导入导出
2008-06-28 19:28
477 查看
学习.net快半个月了,今天实现数据的导入导出,在公司用sqlserver2000,在家用sqlserver2005,测试都通过,只是改了下配件文件的连接字符串。
第一步,为了便于测试,首先要在数据库建立一个数据库和一张表,以及几条数据记录。
我现在用sqlserver2005操作,首先在SQLServerManagementStudio用windows身份验证登录,在里面建一数据库叫mis,再建一张表叫users,三个字段就够了,下面是一条简单的SQL语句:
里面有三个按钮,分别是“从数据库读取数据”,“导入”,“导出”,一个Gridview控件,一个FileUpload控件。
第三步,在配置文件web.config添加连接字符串,方便使用。
第一步,为了便于测试,首先要在数据库建立一个数据库和一张表,以及几条数据记录。
我现在用sqlserver2005操作,首先在SQLServerManagementStudio用windows身份验证登录,在里面建一数据库叫mis,再建一张表叫users,三个字段就够了,下面是一条简单的SQL语句:
createtableusers( userIDintprimarykey, userNamevarchar(50), addressvarchar(50) )
然后随便加几条记录。最后添加一个登录用户叫mis ,密码也是mis ,选择SQLServer身份验证,选择默认数据库,将用户mis设置为数据库角色db_owner,最后用mis确保成功登录。第二步,在VS2005中新建网站,直接用default.aspx来添加就行,我的default.aspx页面代码如下:<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server"> <title>无标题页</title> </head> <body> <formid="form1"runat="server"> <asp:ButtonID="readFromDB"runat="server"OnClick="readFromDB_Click"Text="从数据库读取数据"/> <asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="True"BackColor="White"BorderColor="#E7E7FF"BorderStyle="None"BorderWidth="1px"CellPadding="3"Font-Names="Arial"Font-Size="12px"GridLines="Horizontal"RowStyle-HorizontalAlign="Center"Width="50%"> <FooterStyleBackColor="#B5C7DE"ForeColor="#4A3C8C"/> <RowStyleBackColor="#E7E7FF"ForeColor="#4A3C8C"/> <SelectedRowStyleBackColor="#738A9C"Font-Bold="True"ForeColor="#F7F7F7"/> <PagerStyleBackColor="#E7E7FF"ForeColor="#4A3C8C"HorizontalAlign="Right"/> <HeaderStyleBackColor="#4A3C8C"Font-Bold="True"ForeColor="#F7F7F7"HorizontalAlign="Center"/> <AlternatingRowStyleBackColor="#F7F7F7"/> </asp:GridView> <asp:FileUploadID="FileUpload1"runat="server"/> <asp:ButtonID="Import"runat="server"OnClick="Import_Click"Text="导入"/> <asp:ButtonID="output"runat="server"OnClick="output_Click"Text="导出"/> </form> </body> </html>
里面有三个按钮,分别是“从数据库读取数据”,“导入”,“导出”,一个Gridview控件,一个FileUpload控件。
第三步,在配置文件web.config添加连接字符串,方便使用。
<appSettings> <addkey="strConn"value="DataSource=127.0.0.1;InitialCatalog=mis;UserId=mis;Password=mis"/> </appSettings> 第三步,对按钮“从数据库读取数据”的编写代码当单按钮时,先从配置文件获取连接字符串,然后连接数据库,读取数据放在DataSet中,将DataSet作为GridView的数据源来绑定,这样GridView就会显示数据库里的数据。代码如下://从数据库读取数据,并绑定到GridView protectedvoidreadFromDB_Click(objectsender,EventArgse) { stringstrConn=ConfigurationManager.AppSettings["strConn"].ToString(); DataSetds=newDataSet(); using(SqlConnectionconn=newSqlConnection(strConn)) { stringsql="select*fromusers"; SqlDataAdaptersda=newSqlDataAdapter(sql,conn); sda.Fill(ds,"users");//Fill方法会判断连接是否打开,没有则隐式打开,使用完后关闭 } //将DS绑定到GridView GridView1.DataSource=ds.Tables["users"]; GridView1.DataBind(); }
第四步,对“导入”按钮编写响应代码。
//从excel导入到数据库
protectedvoidImport_Click(objectsender,EventArgse)
{
stringfilePath="";
stringgetErrMsg="";
DataSetexcelDs=newDataSet();
if(FileUpload1.PostedFile.FileName=="")
{
Response.Write("<scriptlanguage=javascript>alert('请选择要上传的文件!');</script>");
return;
}
//从Excel读取数据
filePath=FileUpload1.PostedFile.FileName;
stringconnString="Provider=Microsoft.Jet.OLEDB.4.0;ExtendedProperties=/"Excel8.0;HDR=Yes;IMEX=1/";DataSource="+filePath;
OleDbConnectionexcelConn=newOleDbConnection(connString);
OleDbDataAdapterExcelDA=newOleDbDataAdapter("SELECT*FROM[Sheet1$]",excelConn);
try
{
ExcelDA.Fill(excelDs,"users");
}
catch(Exceptionerr)
{
Response.Write(err.Message);
}
finally
{
excelConn.Close();
excelConn=null;
}
//将数据写入数据库
if(excelDs.Tables[0].Rows.Count!=0)
{
stringsql="";
stringstrConn=ConfigurationManager.AppSettings["strConn"];
SqlConnectionsqlConn=newSqlConnection(strConn);
sqlConn.Open();
SqlCommandmyCommand=sqlConn.CreateCommand();
SqlTransactionmyTrans=sqlConn.BeginTransaction();
myCommand.Transaction=myTrans;
try
{
for(inti=0;i<excelDs.Tables[0].Rows.Count;i++)
{
sql="insertintousers(userID,userName,address)values('"+excelDs.Tables[0].Rows[i]["ID"].ToString()+"','"+excelDs.Tables[0].Rows[i]["用户名"].ToString()+"','"+excelDs.Tables[0].Rows[i]["地址"].ToString()+"')";
myCommand.CommandText=sql;
myCommand.ExecuteNonQuery();
}
myTrans.Commit();
}
catch(Exceptionex)
{
getErrMsg=ex.Message.ToString();
Response.Write(ex.Message.ToString());
myTrans.Rollback();
}
finally
{
sqlConn.Close();
sqlConn=null;
}
}
//返回提示信息
if(getErrMsg==""||getErrMsg==null)
{
Response.Write("<scriptlanguage='Javascript'>alert('导入成功!')</script>");
return;
}
else
{
Response.Write("<scriptlanguage='Javascript'>alert('导入失败!')</script>");
return;
}
}
第五步,编写按钮“导出“的响应代码
protectedvoidoutput_Click(objectsender,EventArgse)
{
stringstrConn=ConfigurationManager.AppSettings["strConn"].ToString();
DataSetds=newDataSet();
using(SqlConnectionconn=newSqlConnection(strConn))
{
stringsql="select*fromusers";
SqlDataAdaptersda=newSqlDataAdapter(sql,conn);
sda.Fill(ds,"users");//Fill方法会判断连接是否打开,没有则隐式打开,使用完后关闭
}
StringBuilderstrData=newStringBuilder();
strData.AppendLine("用户ID/t"+"用户名/t"+"地址/t");//如excel文件开头ID,当打开时会提示SYLE格式错误,所以尽量不要用ID开头
foreach(DataRowdrinds.Tables[0].Rows)
{
strData.Append(dr.ItemArray[0].ToString()+"/t");
strData.Append(dr.ItemArray[1].ToString()+"/t");
strData.AppendLine(dr.ItemArray[2].ToString()+"/t");
}
HttpResponseresp;
resp=Page.Response;
resp.ContentEncoding=System.Text.Encoding.GetEncoding("GBK");
resp.AppendHeader("Content-Disposition","attachment;filename=output.xls");
resp.ContentType="application/ms-excel";
resp.Write(strData.ToString());
resp.Flush();
resp.End();
}
相关文章推荐
- SQL 与 Excel 之间导入导出数据
- 数据库表的数据与excel导入导出
- NPOI 操作数据库中数据的导入导出(Excel.xls文件) 和null数据的处理。
- 使用pentaho工具将数据库数据导入导出为Excel
- C#数据库数据导入导出系列之三 数据库导出到Excel下
- C#数据库数据导入导出系列之四 WinForm数据库导入导出到Excel
- oracle版本11,10数据库之间数据导入导出
- excel,sql server,access数据之间相互导入导出
- SQL Server与Excel Access之间数据的导入导出
- 数据库10g和11g之间的数据导出与导入
- 数据库数据导出成excel,excel数据导入数据库
- 各种数据库之间导入/导出数据
- SQL2005和(Excel |access)之间的数据导入导出
- C#数据库数据导入导出系列之一 ASP.NET Excel导入Sql Server数据库 .
- PHP将Excel导入数据库及数据库数据导出至Excel的方法 亲测
- PHP将Excel导入数据库及数据库数据导出至Excel的方法
- 利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
- MFC CListCtrl与Excel之间的数据导入导出
- 将数据在[Excel]和[任何数据源]之间导入导出_可临时保存查询结果
- JAVA实现数据库数据导入/导出到Excel(POI技术)