日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

C#

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

發布時間:2025/10/17 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据库完整代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。