閆 淼
(吉林電子信息職業技術學院 信息技術學院,吉林 吉林 132021)
一般信息系統運行初始,首先需要初始化一些基礎數據,如數據字典,然后再錄入信息系統需要處理的數據。如果人工初始這些數據,效率低,易出錯,這時我們可以提前準備好初始化數據,一次性導入數據庫中,此過程稱為向數據庫導入數據。
當信息系統運行一段時間后,需要將其中一些數據導出作為備份,或將導出數據進行格式處理后生成相應報表,一般將數據庫數據導出為相關文件,此過程稱為由數據庫導出數據。
當數據庫數據導出至Excel文件時,通常有如下幾種數據發生變化:
①形如“001”的字符串數據導出至Excel工作表單元格時,變為數值“1”。
②形如“220203198002210551”的字符串數據導出至Excel工作表單元格時,變為數值“2.20203E+17”。
③形如“2012-1-2”的日期數據導出至Excel工作表單元格時,變為“2012/1/2”,日期格式發生變化。
發生以上數據變化的原因是Excel工作表單元格默認格式為“常規”引起的。在下面的示例中將給出解決方法。
本示例實現客戶表(client)數據的導入與導出。程序運行界面如圖1所示,客戶表各字段類型如圖2所示,準備導入數據的Excel工作表數據如圖3所示,導入數據后客戶表如圖4所示,由客戶表導出數據至Excel工作表顯示如圖3所示。

圖1 導入數據后界面

圖2 客戶表各字段類型

圖3 Excel工作表內導入/導出數據

圖4 客戶表導入數據后
說明:本文僅實現數據導入導出過程中涉及的重要步驟及方法。
實現步驟:
(1)添加引用
為項目添加.NET引用:Microsoft.Office.Interop.Excel,版本11。
(2)導入數據
①獲取Excel工作表數據,生成數據集
方法說明,參數“fileName”表示導入數據所在Excel文件的路徑及文件名;參數“sheetName”表示導入數據所在工作表的名稱,生成結果以“DataSet”類型返回,代碼如下:

②將數據集內數據導入至數據庫相關表
解決辦法是從數據集讀取一條記錄就插入至數據庫客戶表一條,直至數據集內所有記錄插入完畢,為使數據成功導入數據表,可以在代碼中加入了事務處理,即應用“SqlTransaction”類實現事務處理。
1.3.3 腦癱兒童運動障礙評估 腦癱兒童粗大運動功能障礙程度評估:使用腦性癱瘓粗大運動功能分類系統(GMFCS)中國版[4],該系統將腦癱患兒分為4個年齡組:~2歲、~4歲、~6歲、~12歲;每個年齡組根據腦癱患兒運動功能的表現及受限制程度分為Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ,5個級別,其中I級運動功能最高,V級運動功能最低。
(3)導出數據
①將導出數據表生成數據集
根據生成數據集包含的字段,通過SQL語句,生成數據集對象。為實現按照指定日期類型導出數據,可對日期類型字段進行格式轉換,如對客戶表“regDate”字段進行轉換,代碼如下所示:
string strSql="SELECT code,name,sex,IDCard,CONVERT(varchar(10),regDate,120),rank FROM client";
②根據數據表,生成Excel工作表
實現思路:根據導出數據生成的數據集,從數據集讀取一條記錄插入至Excel工作表內一條,至到數據集內全部數據插入為止。
ⅰ)添加代碼頁面引用“using Excel=Microsoft.Office.Interop.Excel;”,以達到簡化引用。
ⅱ)創建Excel工作表對象如下代碼所示:

關于注釋為“A”的代碼說明:
a“mySheet.Cells[i+2,j+1]”表示導出的數據是從Excel工作表第2行1列開始添加的,直到數據集中數據導出完畢。
b “"'"+dt.Rows[i][j].ToString()”,其中“dt.Rows[i][j]”表示數據表對象中i行j列的值,“"'"”中“'”的作用是將數據導入Excel工作表單元格時以文本類型處理,這樣就不會出現第2節數據導出存在的那些問題了。
ⅴ)生成包含導出數據的Excel文件,代碼如下:


使用本文介紹方法實現SQL Server與Excel間數據的導入導出的前提是應用程序所在平臺需要安裝Office辦公軟件,特別是需要安裝Excel軟件。另外建議讀者在實現數據導入導出時,可以考慮使用低版本的Office軟件,如Office2003,因為Office有向后兼容的功能,所以導出的Excel2003文件可以直接在Office2007中打開并編輯。
[1]Watson,等.C# 入門經典[M].齊立波,譯.4 版.北京:清華大學出版社,2008.
[2]劉麗霞,等.C#范例開發大全[M].北京:清華大學出版社,2010.
[3]明日科技.C#開發技術大全[M].北京:人民郵電出版社,2011.