當前位置:首頁 » 編程語言 » excel導入sql2008

excel導入sql2008

發布時間: 2023-10-20 15:43:19

sql2008導入excel數據

方法如下:

1、打開要導入的Excel文件,觀察第一列是為欄位還是數據。
2、打開SQLServer,在需要導入的數據點擊右鍵 【任務】-【導入數據】
出現導入導出向導。

3、點擊下一步 ,進入【選擇數據源】頁面,注意紅框設置。
4、點擊下一步 ,進入【選擇目標】頁面,注意紅框設置。

5、點擊下一步 ,進入【指定表復制或查詢】頁面,注意紅框設置。
6、點擊下一步 ,進入【選擇源表和源視圖】頁面,注意紅框設置。

7、下一步,直到完成。出現【執行結果頁面】。
8、最後在SqlServer查詢表。

② 使用C# 把Excel的數據導入SQL server 2008

由於項目中加入了新的功能,可以使管理員向資料庫中導入Excel數據。因此,在商品管理這塊需要對Excel進行操作,在網上查了些資料,根據項目的實際情況進行了一定的優化,這里簡單的介紹下。

1.C#代碼。

<spanstyle="font-family:MicrosoftYaHei;font-size:18px;">///<summary>

///上傳Excel文件,並將數據導入到資料庫

///</summary>

///<paramname="sender"></param>

///<paramname="e"></param>

protectedvoidlbtnSure_Click(objectsender,EventArgse)

{

//定義變數,並賦初值

stringurl=this.fileUpLoad.PostedFile.FileName;

stringurlLocation="";

//判斷傳輸地址是否為空

if(url=="")

{

//提示「請選擇Excel文件」

Page.ClientScript.RegisterStartupScript(Page.GetType(),"message","<scriptdefer>alert('請選擇97~2003版Excel文件!');</script>");

return;

}

//判斷獲取的是否為地址,而非文件名

if(url.IndexOf("\")>-1)

{

//獲取文件名

urlLocation=url.Substring(url.LastIndexOf("\")+1);//獲取文件名

}

else

{

//url為文件名時,直接獲取文件名

urlLocation=url;

}

//判斷指定目錄下是否存在文件夾,如果不存在,則創建

if(!Directory.Exists(Server.MapPath("~\up")))

{

//創建up文件夾

Directory.CreateDirectory(Server.MapPath("~\up"));

}

//在系統中建文件夾up,並將excel文件另存

this.fileUpLoad.SaveAs(Server.MapPath("~\up")+"\"+urlLocation);//記錄文件名到伺服器相對應的文件夾中

//Response.Write(urlLocation);

//取得保存到伺服器端的文件路徑

stringstrpath=Server.MapPath("~\up")+"\"+urlLocation;

//取得config中的欄位

stringconnectionString=ConfigurationManager.AppSettings["Connect"].ToString();

stringstrCon=ConfigurationManager.AppSettings["strUpLoad"].ToString();

//替換變數

strCon=strCon.Replace("$Con$",strpath);

//初始化導入Excel對象

ImportExcelexcel=newImportExcel();

//調用方法,將Excel文件導入資料庫

excel.TransferData(strCon,"t_Goods",connectionString);

}</span>

2.TransferData類。

<spanstyle="font-family:MicrosoftYaHei;font-size:18px;">publicvoidTransferData(stringstrCon,stringsheetName,stringconnectionString)

{

DataSetds=newDataSet();

try

{

//獲取全部數據

OleDbConnectionconn=newOleDbConnection(strCon);

conn.Open();

stringstrExcel="";

OleDbDataAdaptermyCommand=null;

strExcel=string.Format("select*from[{0}$]",sheetName);

myCommand=newOleDbDataAdapter(strExcel,strConn);

myCommand.Fill(ds,sheetName);

//如果目標表不存在則創建,excel文件的第一行為列標題,從第二行開始全部都是數據記錄

stringstrSql=string.Format("ifnotexists(select*fromsysobjectswherename='{0}')createtable{0}(",sheetName);//以sheetName為表名

foreach(System.Data.DataColumncinds.Tables[0].Columns)

{

strSql+=string.Format("[{0}]varchar(255),",c.ColumnName);

}

strSql=strSql.Trim(',')+")";

using(System.Data.SqlClient.SqlConnectionsqlconn=newSystem.Data.SqlClient.SqlConnection(connectionString))

{

sqlconn.Open();

System.Data.SqlClient.SqlCommandcommand=sqlconn.CreateCommand();

command.CommandText=strSql;

command.ExecuteNonQuery();

sqlconn.Close();

}

//用bcp導入數據

//excel文件中列的順序必須和數據表的列順序一致,因為數據導入時,是從excel文件的第二行數據開始,不管數據表的結構是什麼樣的,反正就是第一列的數據會插入到數據表的第一列欄位中,第二列的數據插入到數據表的第二列欄位中,以此類推,它本身不會去判斷要插入的數據是對應數據表中哪一個欄位的

using(System.Data.SqlClient.SqlBulkCopybcp=newSystem.Data.SqlClient.SqlBulkCopy(connectionString))

{

bcp.SqlRowsCopied+=newSystem.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);

bcp.BatchSize=100;//每次傳輸的行數

bcp.NotifyAfter=100;//進度提示的行數

bcp.DestinationTableName=sheetName;//目標表

bcp.WriteToServer(ds.Tables[0]);

}

}

catch(Exceptionex)

{

thrownewException(ex);

}

}

//進度顯示

voidbcp_SqlRowsCopied(objectsender,System.Data.SqlClient.SqlRowsCopiedEventArgse)

{

}

}</span>

4.Web界面樣式。

熱點內容
什麼樣的配置能玩地平線4 發布:2025-01-31 22:44:05 瀏覽:241
python正則表達式符號 發布:2025-01-31 22:43:50 瀏覽:391
androidmime 發布:2025-01-31 22:34:44 瀏覽:782
ftp和http的中文含義是 發布:2025-01-31 22:33:48 瀏覽:402
sqlite3存儲圖片 發布:2025-01-31 22:27:14 瀏覽:162
sqlserverphp 發布:2025-01-31 22:22:55 瀏覽:877
曲馬多存儲 發布:2025-01-31 22:22:52 瀏覽:538
緩存兒歌 發布:2025-01-31 22:21:26 瀏覽:528
學java有發展嗎 發布:2025-01-31 21:44:45 瀏覽:569
HBX編程 發布:2025-01-31 21:39:26 瀏覽:161