柴作良
摘 要:在信息管理系統(tǒng)中,數(shù)據(jù)的導(dǎo)入功能會(huì)極大提高軟件可用性,而良好的數(shù)據(jù)導(dǎo)入功能將會(huì)節(jié)約使用成本,提高工作效率。該文結(jié)合軟件開發(fā)項(xiàng)目《綜合實(shí)操管理系統(tǒng)》的導(dǎo)入程序設(shè)計(jì),在VISUAL STADIO環(huán)境下采用C#語言對(duì)導(dǎo)入程序的算法及代碼進(jìn)行設(shè)計(jì)和分析,為軟件開發(fā)人員快速開發(fā)數(shù)據(jù)導(dǎo)入模塊或功能提供一定的思路和方法。
關(guān)鍵詞:ASP.NET C# 控件 SQL
中圖分類號(hào):G424 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2015)12(a)-0006-02
在應(yīng)用軟件開發(fā)中,常常涉及數(shù)據(jù)庫應(yīng)用技術(shù)。數(shù)據(jù)庫中的數(shù)據(jù)可以通過逐條錄入的方式獲得。但當(dāng)已經(jīng)儲(chǔ)備了大量現(xiàn)成電子的數(shù)據(jù)時(shí),再通過逐條錄入方式就顯得費(fèi)時(shí)費(fèi)力,甚至不排除所在錄入數(shù)據(jù)過程中頻繁出錯(cuò),影響了數(shù)據(jù)一致性和可靠性,所以導(dǎo)入已有的數(shù)據(jù)成為了應(yīng)用系統(tǒng)必備功能之一。在數(shù)據(jù)導(dǎo)入過程中,程序可以較好地控制數(shù)據(jù)類型、長(zhǎng)度,自動(dòng)檢查數(shù)據(jù)是否合理、是否沖突等。在數(shù)據(jù)的導(dǎo)入時(shí),需要導(dǎo)入的可以是文本文件、WORD文件、EXCEL表格甚至其它的數(shù)據(jù)表格等,由于原始數(shù)據(jù)格式的不同,程序設(shè)計(jì)方法也不盡相同。由于現(xiàn)在辦公中所用到的很多數(shù)據(jù)是EXCEL電子表格采集或存儲(chǔ)的,該文以EXCEL文件數(shù)據(jù)源為例,結(jié)合所開發(fā)的《綜合實(shí)操管理系統(tǒng)》,采用ASP.NET中的C#語言編程,實(shí)現(xiàn)把EXCEL電子文檔導(dǎo)入到SQL SERVER數(shù)據(jù)庫中,并對(duì)程序的算法和代碼做了進(jìn)一步的研究和分析。
1 數(shù)據(jù)表結(jié)構(gòu)
在《綜合實(shí)操管理系統(tǒng)》中,涉及很多數(shù)據(jù)表都需要輸入原始數(shù)據(jù)。其中院系指導(dǎo)教師表用來保存實(shí)操指導(dǎo)教師的信息,而這些基本信息數(shù)據(jù)量大并已經(jīng)用EXCEL表格保存硬盤中了。所以這里以導(dǎo)入“院系指導(dǎo)教師表”信息為例。
“院系指導(dǎo)教師表”包括了院系教師職工號(hào)、教師名字、所教專業(yè)、職務(wù)、職稱、所在部門、聯(lián)系電話、密碼 、權(quán)限等字段,一條記錄就是一名教師,其中的院系教師職工號(hào)為關(guān)鍵字。在導(dǎo)入時(shí)只需判斷關(guān)鍵字是否重復(fù),不重復(fù)即導(dǎo)入,重復(fù)則忽略。
2 EXCEL表格結(jié)構(gòu)
對(duì)應(yīng)數(shù)據(jù)庫中的數(shù)據(jù)表的結(jié)構(gòu),需要設(shè)計(jì)相同EXCEL表格,其結(jié)構(gòu)特別是不能為空的關(guān)鍵信息要與數(shù)據(jù)庫表格“院系指導(dǎo)教師表”的字段對(duì)應(yīng),其字段順序可相同或者不同,為減少程序設(shè)計(jì)時(shí)疏忽上的錯(cuò)誤,在設(shè)計(jì)電子表格時(shí)可保持其字段順序與數(shù)據(jù)表相互一一對(duì)應(yīng)。
3 程序設(shè)計(jì)的基本算法
3.1 上傳電子表格文件
在界面設(shè)計(jì)時(shí),部署文件上傳控件FileUpload1,其功能是在程序中將Excel文件上傳到服務(wù)器上的指定的文件夾。
3.2 讀出EXCEL文件內(nèi)容保存到DataTable對(duì)象中
判斷EXCEL文件類型,確定擴(kuò)展名是XLS還是XLSX。即判斷是EXCEL2003以下版本還是EXCEL2007以上版本,因?yàn)椴煌陌姹驹诔绦蛑兴抿?qū)動(dòng)程序不同。然后使用OleDbConnection將已經(jīng)上傳到服務(wù)器上的Excel文件讀出并保存到DataTable對(duì)象中備用。
3.3 使用SQL語句保存數(shù)據(jù)
遍歷DataTable對(duì)象,然后用SELECT語句查詢Sql Server數(shù)據(jù)庫,判斷是否存在該條數(shù)據(jù)。如果存在則不做處理,如果不存在,則插入該條數(shù)據(jù)。
4 導(dǎo)入數(shù)據(jù)的程序設(shè)計(jì)
4.1 引入命名空間
因數(shù)據(jù)導(dǎo)入涉及電子表格文件上傳、數(shù)據(jù)查詢、增加等操作,所以在程序中要引入System.IO、System.Data、System.Data.OleDb、System.Data.SqlClient等命名空間。這里System.IO主要實(shí)現(xiàn)文件上傳和存取操作,System.Data.OleDb用于對(duì)電子表格文件的訪問,System.Data.SqlClient實(shí)現(xiàn)對(duì)SQL SERVER數(shù)據(jù)庫的操作。
4.2 上傳EXCEL文件
在上傳文件之前,先判斷是否通過FileUpload1控件選擇了文件,如果沒有則給予提示。如果FileUpload1已經(jīng)選擇了文件,再判斷其類型是否是電子表格文件,如果不是則提示并返回。
5 結(jié)語
當(dāng)開發(fā)人員用C#編寫網(wǎng)站導(dǎo)入程序時(shí),只需要根據(jù)數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)相應(yīng)的電子表格文件,明確讀取數(shù)據(jù)語句中的字段及內(nèi)容和保存語句中的字段和內(nèi)容一一對(duì)應(yīng),即可快速實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入功能。還可把導(dǎo)入程序編寫成獨(dú)立模塊,增加程序通用型和可移植性,為今后程序開發(fā)節(jié)省大量時(shí)間。該程序的代碼在VISUAL STADIO 2010和SQL SERVER 2005環(huán)境下正常運(yùn)行。
參考文獻(xiàn)
[1] 宋毓.基于ASP.NET技術(shù)的圖書館新聞發(fā)布系統(tǒng)的實(shí)現(xiàn)[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2011(17):26-28.
[2] 田路.EXCEL數(shù)據(jù)分析在問77卷調(diào)查中的應(yīng)用[J].成功:教育,2011(8):201.