1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > net以execl做数据库_C#.NET Excel文件数据导入SQL Server数据库完整代码

net以execl做数据库_C#.NET Excel文件数据导入SQL Server数据库完整代码

时间:2019-06-29 00:14:24

相关推荐

net以execl做数据库_C#.NET Excel文件数据导入SQL Server数据库完整代码

展开全部

在日常的项目中,Excel,Word,txt等格式的数62616964757a686964616fe58685e5aeb931333337626235据导入到数据库中是很常见

这里将分为.net导入Sql Server,Oracle数据库和WinForm导入Sql Server,Oracle数据库。

实现的基本思想:

1,先使用FileUpload控件fuload将Excel文件上传到服务器上得某一个文件夹。

2,使用OleDb将已经上传到服务器上的Excel文件读出来,这里将Excel文件当做一个数据库来读。在联系数据库语句中,Data Source就是该文件在服务器上得物理路径

3,将第二步中读出的数据以DataTable对象返回。

4,遍历DataTable对象,然后到Sql Server数据库中查询,是否存在该条数据。如果存在,可以做更新,或者不做处理;如果不存在,则插入数据。

注意:在遍历DataTable的时候,可是使用dt.Rows[i]["Name"].ToString();Name为Name列的表头,所以Excel中列的顺序就无关紧要了。当然,前提是你知道Excel里列中各表头的名字。如果Excel中列的顺序固定,即可按下面代码中的方式进行。

添加的引用:

usingSystem;

usingSystem.Data;

usingSystem.Data.OleDb;

usingSystem.Data.SqlClient;

usingSystem.IO;

usingSystem.Text;

usingSystem.Web;

usingSystem.Web.UI;

privateDataTablexsldata()

{

if(fuload.FileName=="")

{

lbmsg.Text="请选择文件";

returnnull;

}

stringfileExtenSion;

fileExtenSion=Path.GetExtension(fuload.FileName);

if(fileExtenSion.ToLower()!=".xls"&&fileExtenSion.ToLower()!=".xlsx")

{

lbmsg.Text="上传的文件格式不正确";

returnnull;

}

try

{

stringFileName="App_Data/"+Path.GetFileName(fuload.FileName);

if(File.Exists(Server.MapPath(FileName)))

{

File.Delete(Server.MapPath(FileName));

}

fuload.SaveAs(Server.MapPath(FileName));

//HDR=Yes,这代表第一行是标题,不做为数据使用,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES

stringconnstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath(FileName)+";ExtendedProperties='Excel8.0;HDR=Yes;IMEX=1;'";

stringconnstr="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+Server.MapPath(FileName)+";ExtendedProperties=\"Excel12.0;HDR=YES\"";

OleDbConnectionconn;

if(fileExtenSion.ToLower()==".xls")

{

conn=newOleDbConnection(connstr);

}

else

{

conn=newOleDbConnection(connstr);

}

conn.Open();

stringsql="select*from[Sheet1$]";

OleDbCommandcmd=newOleDbCommand(sql,conn);

DataTabledt=newDataTable();

OleDbDataReadersdr=cmd.ExecuteReader();

dt.Load(sdr);

sdr.Close();

conn.Close();

//删除服务器里上传的文件

if(File.Exists(Server.MapPath(FileName)))

{

File.Delete(Server.MapPath(FileName));

}

returndt;

}

catch(Exceptione)

{

returnnull;

}

}

protectedvoidBtn_Export_Excel_To_DB_Click(objectsender,EventArgse)

{

try{

DataTabledt=xsldata();

//dataGridView2.DataSource=ds.Tables[0];

interrorcount=0;//记录错误信息条数

intinsertcount=0;//记录插入成功条数

intupdatecount=0;//记录更新信息条数

stringstrcon="server=localhost;database=database1;uid=sa;pwd=sa";

SqlConnectionconn=newSqlConnection(strcon);//链接数据库

conn.Open();

for(inti=0;i

{

stringName=dt.Rows[i][0].ToString();//dt.Rows[i]["Name"].ToString();"Name"即为Excel中Name列的表头

stringSex=dt.Rows[i][1].ToString();

intAge=Convert.ToInt32(dt.Rows[i][2].ToString());

stringAddress=dt.Rows[i][3].ToString();

if(Name!=""&&Sex!=""&&Age!=0&&Address!="")

{

SqlCommandselectcmd=newSqlCommand("selectcount(*)fromuserswhereName='"+Name+"'andSex='"+Sex+"'andAge='"+Age+"'andAddress="+Address,conn);

intcount=Convert.ToInt32(selectcmd.ExecuteScalar());

if(count>0)

{

updatecount++;

}

else

{

SqlCommandinsertcmd=newSqlCommand("insertintousers(Name,Sex,Age,Address)values('"+Name+"','"+Sex+"',"+Age+",'"+Address+"')",conn);

insertcmd.ExecuteNonQuery();

insertcount++;

}

}

else

{

errorcount++;

}

}

Response.Write((insertcount+"条数据导入成功!"+updatecount+"条数据重复!"+errorcount+"条数据部分信息为空没有导入!"));

}

catch(Exceptionex)

{

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。