欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

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

发布时间:2025/10/17 C# 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中列的顺序固定,即可按下面代码中的方式进行。

添加的引用:

using System;

using System.Data;

using System.Data.OleDb;

using System.Data.SqlClient;

using System.IO;

using System.Text;

using System.Web;

using System.Web.UI;

private DataTable  xsldata()

{

if(fuload.FileName == "")

{

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

return null;

}

string fileExtenSion;

fileExtenSion = Path.GetExtension(fuload.FileName);

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

{

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

return null;

}

try

{

string FileName = "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

string connstr2003 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(FileName) + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";

string connstr2007 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(FileName) + ";Extended Properties=\"Excel 12.0;HDR=YES\"";

OleDbConnection conn;

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

{

conn = new OleDbConnection(connstr2003);

}

else

{

conn = new OleDbConnection(connstr2007);

}

conn.Open();

string sql = "select * from [Sheet1$]";

OleDbCommand cmd = new OleDbCommand(sql, conn);

DataTable dt = new DataTable();

OleDbDataReader sdr = cmd.ExecuteReader();

dt.Load(sdr);

sdr.Close();

conn.Close();

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

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

{

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

}

return dt;

}

catch(Exception e)

{

return null;

}

}

protected void Btn_Export_Excel_To_DB_Click(object sender, EventArgs e)

{

try{

DataTable dt = xsldata();

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

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

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

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

string strcon = "server=localhost;database=database1;uid=sa;pwd=sa";

SqlConnection conn = new SqlConnection(strcon);//链接数据库

conn.Open();

for(int i = 0; i 

{

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

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

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

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

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

{

SqlCommand selectcmd = new SqlCommand("select count(*) from users where Name='" + Name + "' and Sex='" + Sex + "' and Age='" + Age + "' and Address=" + Address, conn);

int count = Convert.ToInt32(selectcmd.ExecuteScalar());

if(count > 0)

{

updatecount++;

}

else

{

SqlCommand insertcmd = new SqlCommand("insert into users(Name,Sex,Age,Address) values('" + Name + "','" + Sex + "'," + Age + ",'" + Address + "')", conn);

insertcmd.ExecuteNonQuery();

insertcount++;

}

}

else

{

errorcount++;

}

}

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

}

catch(Exception ex)

{

}

}

总结

以上是生活随笔为你收集整理的net以execl做数据库_C#.NET Excel文件数据导入SQL Server数据库完整代码的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。