net導入excel到資料庫
A. C#.NET Excel文件數據導入sql Server資料庫完整代碼
在日常的項目中,Excel,Word,txt等格式的數據導入到資料庫中是很常見
這里將分為.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
stringconnstr2003="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath(FileName)+";ExtendedProperties='Excel8.0;HDR=Yes;IMEX=1;'";
stringconnstr2007="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+Server.MapPath(FileName)+";ExtendedProperties="Excel12.0;HDR=YES"";
OleDbConnectionconn;
if(fileExtenSion.ToLower()==".xls")
{
conn=newOleDbConnection(connstr2003);
}
else
{
conn=newOleDbConnection(connstr2007);
}
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<dt.Rows.Count;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)
{
}
}
B. C#.NETExcel文件數據導入SQLServer資料庫完整代碼
--如果導飢旅旅入數據並生成表
select*into表from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c: est.xls',sheet1$)
===
--將某個目錄上的Excel表,導入到數爛凳據庫中
--將所有的Excel文件放到一個目錄中,假設為c: est,然後用下面的方法來做
createtable#t(fnamevarchar(260),depthint,isfbit)
insertinto#texecmaster..xp_dirtree'c: est',1,1
declaretbcursorforselectfn='c: est'+fnamefrom#t
whereisf=1andfnamelike'%.xls'--取.xls文件(EXCEL)
declare@fnvarchar(8000)
opentb
fetchnextfromtbinto@fn
while@@fetch_status=0
begin
--下面是查詢語句,需要根據你的情況鎮芹改為插入語句
--插入已有的表用:insertinto表selct*from...
--創建表用:select*into表from...
set@fn='select*from
OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel5.0;HDR=YES;DATABASE='+@fn+''',全部客戶$)'
exec(@fn)
fetchnextfromtbinto@fn
end
closetb
deallocatetb
droptable#t
C. vb.net怎麼把excel 讀到DataSet中
可以參考Spire.XLS for .NET關於數據導入導出的方法。
excel數據導入dataset如下代碼:
'創建Workbook對象並載入Excel文檔
Dim workbook As New Workbook()
workbook.LoadFromFile("F:ExportData.xlsx", ExcelVersion.Version2013)
'獲取第一張sheet
Dim sheet As Worksheet = workbook.Worksheets(0)
'設置range范圍
Dim range As CellRange = sheet.Range(sheet.FirstRow, sheet.FirstColumn, sheet.LastRow, sheet.LastColumn)
'輸出數據, 同時輸出列名以及公式值
Dim dt As DataTable = sheet.ExportDataTable(range, True, True)