999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C#的Excel數據批量導入SqlServer的方法研究與實現

2014-12-13 20:21:33周虎
軟件工程 2014年12期

周虎

摘? 要:批量數據導入在實際工作中提高了數據處理的效率,保證了數據的完整性。本文以某地育齡婦女基本信息為例,詳細介紹了Excel數據批量導入SqlServer的設計思路與實現方法。

關鍵詞:Excel;SqlServer;批量數據導入;NPOI;C#編程

中圖分類號:TP311.11?????????? 文獻標識碼:A

1?? 引言(Introduction)

Excel是辦公中常用的電子表格處理工具,SqlServer是目前流行的數據庫管理系統,均在信息系統中被廣泛使用[1]。在某地數字化計生服務管理系統中需要從育齡婦女基本信息管理系統中導入育齡婦女的基本信息,而育齡婦女基本信息管理系統中只能將當前單位中所有的育齡婦女信息導出到Excel文件中,然后從Excel文件中將育齡婦女信息導入到SqlServer數據庫中。在進行數據導入時,每次只需將增量數據導入到數據庫,同時Excel中一條記錄要寫入到數據庫多張表中。目前Excel導入數據庫主要包括以下幾種方法:

(1)將Excel轉化為XML或者CSV文件,然后導入數據庫。

(2)使用Office提供的Com組件技術。

(3)使用第三方組件,如NPOI或OLEDB。

其中第一種方法和第二種方法操作復雜或者運行緩慢,在實際應用中效果均不是很理想[2],并且本系統在對Excel數據導入到數據庫時需要對需要對數據進行進一步加工和處理,所以本文主要借助第三方組件NPOI的方式來實現Excel數據的批量導入。

2? Excel批量數據導入技術分析(Excel import bulk

data technical analysis)

在本項目中,需要將育齡婦女基本信息Excel文件內容讀取到內存中,然后在內存中和數據庫中的育齡婦女信息進行比對,將增量數據導入數據庫,具體流程如圖1所示。

圖1 NPOI讀取Excel數據到數據庫

Fig.1 NPOI read excel data to database

在圖1操作流程中,關鍵技術包括使用NPOI讀取Excel數據到內存中的DataTable和從內存中將增量數據導入到數據庫。

2.1?? NPOI

NPOI是一個開源的基于.Net的讀寫Excel、Word等微軟OLE2組件文檔的項目,使用NPOI你就可以在沒有安裝Office或者相應環境的機器上對Word/Excel文檔進行讀寫[3]。NPOI是一個免費的開源組件,包含了大部分的Excel功能,同時支持文件的導入與導出。

在本項目中使用NPOI將Excel表中的數據讀取到內存中的Datatable中,同時將育齡婦女的編號存入集合中,便于和數據庫中的育齡婦女信息進行比對。

2.2?? 增量數據導入到數據庫

在本項目中,由于每次需要導入的育齡婦女基本信息都是包含所有的育齡婦女基本信息,為了進一步提高導入數據的效率,采用每次導入增量數據的方法,這里需要將Excel文件中的育齡婦女信息和數據庫中的育齡婦女信息進行集合運算,將數據庫中不包含的但Excel文件中包含的育齡婦女信息先計算出來,然后對增量數據進行批量導入數據庫。具體流程如圖2所示。

圖2 增量數據導入

Fig.2 Incremental data import

在計算出增量數據后,Excle文件中一條記錄需要同時保存到數據庫中多個表中,同時需要根據數據庫中數據字典中相應的字段進行數據處理。具體操作步驟如下:首先將需要用到數據字典的字段內容讀取到內存中,如育齡婦女的現居地編號和婚姻狀況等;其次循環遍歷增量數據,同時生成相應的添加數據的SQL語句;最后使用SQL事務操作,實現批量數據的導入功能。

3? Excel批量數據導入的實現(Excel data import

implementation)

實現Excel批量數據導入,主要分為Excel數據讀取,數據處理和數據導入。

3.1?? Excel數據讀取的實現

實現Excel數據的讀取功能,首先根據Excel表中的字段生成內存中DataTable內存表對象,如圖3所示。

圖3 Excel文件表頭

Fig.3 Excel file header

根據這些表頭字段,在內存中生成DataTable的字段信息,并循環遍歷Excel中的數據行,將Excel中的數據讀取到DataTable中去,如程序1所示。

DataTable dt=newDataTable();//構造內存表

IRow headRow=sheet.GetRow(2);//取第二行

//設置datatable字段

for (int i=headRow.FirstCellNum, len=headRow.LastCellNum; i<;len;i++)

{//統一定制字段名稱

dt.Columns.Add("item"+i.ToString());

}

for (int r=0, j=tempRow.FirstCellNum, len2=tempRow.LastCellNum;j<;len2;j++,r++)endprint

{///循環遍歷Excel數據行

ICell cell=tempRow.GetCell(j);

if (cell!=null)??????????????????? {

switch (cell.CellType)//類型處理

{

…..//根據相應類型添加到指定字段

}

}

}

dt.Rows.Add(dataRow);

程序1? 讀取Excel文件內容到DataTable

3.2?? 數據處理

在數據處理環節,首先計算增量數據,然后對增量數據進行數據處理,將處理結果轉換為SQL插入語句,關鍵代碼如程序2所示。

List<;string>;l1=newList<;string>;();//保存Excel中婦女編碼

List<;string>;l3=newList<;string>;();//保存數據庫中婦女編碼

for (int i=0;i<;dt1.Rows.Count;i++)//循環內存Datatable中數據

l1.Add(dt1.Rows[i][0].ToString());//保存婦女編碼

for (int i=0;i<;dt_db.Rows.Count;i++)//遍歷數據庫中婦女編碼

l3.Add(dt_db.Rows[i][0].ToString());//保存婦女編碼

var l2=l1.Except(l3);//獲取增量婦女編碼

DataTable dt3=dt1.Clone();//克隆表結構,用于保存增量數據

string cond=listToString(l2);

DataRow[] rows=dt2.Select("item1 in("+cond+")and item1<;>;''");//過濾增量數據

foreach (DataRow dr in rows)

dt3.Rows.Add(dr.ItemArray);

程序2? 計算增量數據

獲取完增量數據后,對增量數據進行數據處理,并生成SQL語句,關鍵代碼如程序3所示。

for (int i=0;i<;dt3.Rows.Count;i++)//遍歷增量數據

{///添加到3張表中,并根據數據字典信息更新相應字段

string fn="insert into pub_fnxx(字段) values(值);//添加到婦女基本信息表

sql.Add(fn);//添加到集合列表中

string zf="insert into pub_zfxx(字段) values(值);

sql.Add(zf);

by="insert into pub_byqk (字段) values(值);

sql.Add(by);

}

程序3 生成SQL添加語句

3.3?? 數據批量導入

批量數據導入的SQL語句生成后,使用SQL事務完成增量數據的添加,關鍵代碼如程序4所示。

using (SqlTransaction trans=con.BeginTransaction())

{

SqlCommand cmd=newSqlCommand();

try

{//循環

foreach (string sq in sql)

{

string cmdText=sq;

PrepareCommand(cmd,con,trans,cmdText,null);

int val=cmd.ExecuteNonQuery();

}

trans.Commit();}

catch

{

trans.Rollback();

throw;

}}

程序4 SQL事務導入數據

通過以上幾個步驟,最終實現了基于NPOI的Excel數據導入SqlServer程序,程序運行界面如圖4所示。

圖4 程序運行效果

Fig.4 Effect of operation procedure

4?? 結論(Conclusion)

本文通過對育齡婦女基本信息Excel文件的處理,實現了對增量數據批量導入數據庫的功能,在實際工作中提高了工作效率,但程序運行的效率還有待于進一步的提高。

參考文獻(References)

[1] 張麗英.基于.NET的Excel數據批量導入SQL Server的設計與

實現[J].南通紡織職業技術學院學報,2012,12(1):7-10.

[2] 喬治強.基于C#的Excel數據導入導出SQL Server技術研究[J].

電腦知識與技術,2012(26):195-196.

[3] 佚名.NPOI HOME [EB/OL].CodePlex,http://npoi.codeplex.

com/.

作者簡介:

周? 虎(1977-),男,碩士,講師.研究領域:計算機應用與軟

件開發.endprint

string zf="insert into pub_zfxx(字段) values(值);

;?;?;?;?;?; sql.Add(zf);

;?;?;?;?;?;?; by="insert into pub_byqk (字段) values(值);

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; sql.Add(by);

;}

程序3 生成SQL添加語句

3.3?;?; 數據批量導入

批量數據導入的SQL語句生成后,使用SQL事務完成增量數據的添加,關鍵代碼如程序4所示。

using (SqlTransaction trans=con.BeginTransaction())

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

SqlCommand cmd=newSqlCommand();

try

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {//循環

foreach (string sq in sql)

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

string cmdText=sq;

;PrepareCommand(cmd,con,trans,cmdText,null);

int val=cmd.ExecuteNonQuery();

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; }

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; trans.Commit();}

catch

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; trans.Rollback();

throw;

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; }}

程序4 SQL事務導入數據

通過以上幾個步驟,最終實現了基于NPOI的Excel數據導入SqlServer程序,程序運行界面如圖4所示。

圖4 程序運行效果

;?;?; Fig.4 Effect of operation procedure

4?;?; 結論(Conclusion)

本文通過對育齡婦女基本信息Excel文件的處理,實現了對增量數據批量導入數據庫的功能,在實際工作中提高了工作效率,但程序運行的效率還有待于進一步的提高。

參考文獻(References)

[1] 張麗英.基于.NET的Excel數據批量導入SQL Server的設計與

;?;?;?; 實現[J].南通紡織職業技術學院學報,2012,12(1):7-10.

[2] 喬治強.基于C#的Excel數據導入導出SQL Server技術研究[J].

;?;?;?; 電腦知識與技術,2012(26):195-196.

[3] 佚名.NPOI HOME [EB/OL].CodePlex,http://npoi.codeplex.

;?;?;?;?; com/.

作者簡介:

周?; 虎(1977-),男,碩士,講師.研究領域:計算機應用與軟

;?;?;?;?; 件開發.endprint

string zf="insert into pub_zfxx(字段) values(值);

;?;?;?;?;?; sql.Add(zf);

;?;?;?;?;?;?; by="insert into pub_byqk (字段) values(值);

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; sql.Add(by);

;}

程序3 生成SQL添加語句

3.3?;?; 數據批量導入

批量數據導入的SQL語句生成后,使用SQL事務完成增量數據的添加,關鍵代碼如程序4所示。

using (SqlTransaction trans=con.BeginTransaction())

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

SqlCommand cmd=newSqlCommand();

try

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {//循環

foreach (string sq in sql)

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

string cmdText=sq;

;PrepareCommand(cmd,con,trans,cmdText,null);

int val=cmd.ExecuteNonQuery();

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; }

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; trans.Commit();}

catch

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; trans.Rollback();

throw;

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; }}

程序4 SQL事務導入數據

通過以上幾個步驟,最終實現了基于NPOI的Excel數據導入SqlServer程序,程序運行界面如圖4所示。

圖4 程序運行效果

;?;?; Fig.4 Effect of operation procedure

4?;?; 結論(Conclusion)

本文通過對育齡婦女基本信息Excel文件的處理,實現了對增量數據批量導入數據庫的功能,在實際工作中提高了工作效率,但程序運行的效率還有待于進一步的提高。

參考文獻(References)

[1] 張麗英.基于.NET的Excel數據批量導入SQL Server的設計與

;?;?;?; 實現[J].南通紡織職業技術學院學報,2012,12(1):7-10.

[2] 喬治強.基于C#的Excel數據導入導出SQL Server技術研究[J].

;?;?;?; 電腦知識與技術,2012(26):195-196.

[3] 佚名.NPOI HOME [EB/OL].CodePlex,http://npoi.codeplex.

;?;?;?;?; com/.

作者簡介:

周?; 虎(1977-),男,碩士,講師.研究領域:計算機應用與軟

;?;?;?;?; 件開發.endprint

string zf="insert into pub_zfxx(字段) values(值);

;?;?;?;?;?; sql.Add(zf);

;?;?;?;?;?;?; by="insert into pub_byqk (字段) values(值);

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; sql.Add(by);

;}

程序3 生成SQL添加語句

3.3?;?; 數據批量導入

批量數據導入的SQL語句生成后,使用SQL事務完成增量數據的添加,關鍵代碼如程序4所示。

using (SqlTransaction trans=con.BeginTransaction())

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

SqlCommand cmd=newSqlCommand();

try

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {//循環

foreach (string sq in sql)

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

string cmdText=sq;

;PrepareCommand(cmd,con,trans,cmdText,null);

int val=cmd.ExecuteNonQuery();

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; }

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; trans.Commit();}

catch

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; {

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; trans.Rollback();

throw;

;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?;?; }}

程序4 SQL事務導入數據

通過以上幾個步驟,最終實現了基于NPOI的Excel數據導入SqlServer程序,程序運行界面如圖4所示。

圖4 程序運行效果

;?;?; Fig.4 Effect of operation procedure

4?;?; 結論(Conclusion)

本文通過對育齡婦女基本信息Excel文件的處理,實現了對增量數據批量導入數據庫的功能,在實際工作中提高了工作效率,但程序運行的效率還有待于進一步的提高。

參考文獻(References)

[1] 張麗英.基于.NET的Excel數據批量導入SQL Server的設計與

;?;?;?; 實現[J].南通紡織職業技術學院學報,2012,12(1):7-10.

[2] 喬治強.基于C#的Excel數據導入導出SQL Server技術研究[J].

;?;?;?; 電腦知識與技術,2012(26):195-196.

[3] 佚名.NPOI HOME [EB/OL].CodePlex,http://npoi.codeplex.

;?;?;?;?; com/.

作者簡介:

周?; 虎(1977-),男,碩士,講師.研究領域:計算機應用與軟

;?;?;?;?; 件開發.endprint

主站蜘蛛池模板: 麻豆精品久久久久久久99蜜桃| 亚洲精品成人7777在线观看| 91在线日韩在线播放| 99久久国产精品无码| 日本影院一区| 高潮爽到爆的喷水女主播视频| 制服丝袜亚洲| 九九久久精品免费观看| 国产网站一区二区三区| 国产成人精品一区二区不卡| 99视频在线观看免费| 午夜爽爽视频| 亚洲av综合网| 国产精选自拍| 在线观看网站国产| 成年看免费观看视频拍拍| 久久香蕉国产线看观看精品蕉| 欧美国产在线一区| 亚洲视屏在线观看| 久久国产亚洲欧美日韩精品| 99er精品视频| 四虎成人精品| 欧美亚洲国产精品久久蜜芽| 亚洲精品国产自在现线最新| 国内丰满少妇猛烈精品播| 99精品影院| 国产欧美日韩专区发布| 欧美成人一级| 免费一级毛片完整版在线看| 国产精品第一区在线观看| 国产成人狂喷潮在线观看2345| 国产高清精品在线91| 在线播放真实国产乱子伦| 无码AV高清毛片中国一级毛片| 人妻丰满熟妇啪啪| 午夜丁香婷婷| 老司机精品一区在线视频| 国产乱人伦精品一区二区| 免费在线播放毛片| 欧美区一区| 欧美一级大片在线观看| 嫩草在线视频| 国产精品19p| 一本大道无码日韩精品影视| 99在线视频网站| 国产va在线| 国产精品无码AⅤ在线观看播放| 国产区91| 精品伊人久久久大香线蕉欧美| 在线五月婷婷| 欧美在线国产| 国产精品第5页| 亚洲国产欧洲精品路线久久| 亚洲成人手机在线| 精品久久久久成人码免费动漫| 2021天堂在线亚洲精品专区 | 成年人视频一区二区| 亚洲精品国产自在现线最新| 国产福利小视频在线播放观看| 香蕉eeww99国产精选播放| 素人激情视频福利| 中文字幕波多野不卡一区| 毛片最新网址| 2020最新国产精品视频| 日韩小视频在线观看| 亚洲国产成人综合精品2020| 91久久国产成人免费观看| 色综合久久综合网| 天天视频在线91频| 免费国产高清精品一区在线| 国内精品久久久久鸭| 欧美黄色网站在线看| 欧美成人A视频| 精品视频福利| 国产乱人乱偷精品视频a人人澡| 婷婷五月在线| 日本欧美一二三区色视频| 人妻91无码色偷偷色噜噜噜| 欧洲成人免费视频| 亚洲Va中文字幕久久一区 | 国产人前露出系列视频| julia中文字幕久久亚洲|