潘旭輝
摘 要:為了解決部分縣級計量所以Word郵件合并功能批量打印證書后產(chǎn)生的數(shù)據(jù)統(tǒng)計問題,文章利用VB.NET程序語言設(shè)計了一種軟件工具,可以把大量的Excel文件進行合并后導(dǎo)入數(shù)據(jù)庫,實現(xiàn)計量檢定數(shù)據(jù)的快速查詢和統(tǒng)計,有利于縣級計量所當前面臨任務(wù)重、經(jīng)費少和人力資源不足的現(xiàn)狀下提高數(shù)據(jù)統(tǒng)計的工作效率和節(jié)約人力資源。
關(guān)鍵詞:計量 Excel合并 數(shù)據(jù)統(tǒng)計 VB.NET
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1674-098X(2016)03(c)-0085-02
1 設(shè)計背景
縣級計量測試所承擔著本地區(qū)量值傳遞、保障計量單位的統(tǒng)一和量值準確可靠,執(zhí)行強制檢定和法律規(guī)定的其他檢定、測試任務(wù),為計量行政部門依法實施計量監(jiān)督,提供技術(shù)保證,是國家計量體系重要的支點。在支持經(jīng)濟社會發(fā)展的過程中,發(fā)揮了越來越重要的作用,同時也表現(xiàn)出自身的一些不足:檢定人員少,人力資源不足;科技研發(fā)能力弱;計量器具檢定任務(wù)重;財政經(jīng)費有限。很多縣級計量測試所沒有能力去開發(fā)計量管理軟件系統(tǒng),同時也沒有能力去購買一套價格不菲的計量管理軟件并承擔軟件后續(xù)的升級支持費用。證書打印還只能依靠Word的郵件合并功能進行批量打印,給后續(xù)的數(shù)據(jù)統(tǒng)計帶來很大的問題。人工的方式進行統(tǒng)計,不僅耗時耗力,結(jié)果還不準確。設(shè)計一種計量數(shù)據(jù)統(tǒng)計工具,對于提高縣級所的數(shù)據(jù)統(tǒng)計能力、節(jié)約人力資源有著非常大的意義。
2 設(shè)計方法
首先要對利用Word的郵件合并功能批量打印證書的程序進行了解。Word郵件合并方式批量打印證書的步驟一般是先建立Excel表格,將檢定證書所需的信息以二維表格的形式輸入;然后創(chuàng)建一個新的Word,設(shè)計證書的版面,切換到郵件合并選項,選擇建立的Excel文件,將文件中的要素插到Word指定的位置,完成合并后,Word中就會呈現(xiàn)證書內(nèi)容;最后開始批量打印。建立的Excel表格就是該設(shè)計要針對的目標數(shù)據(jù)。對一個縣級所,一年可能有上千或數(shù)千個Excel表格數(shù)據(jù)。
設(shè)計的第一步是建立數(shù)據(jù)庫,文章的設(shè)計思路是把批量的Excel數(shù)據(jù)表合并為一個表,再導(dǎo)入數(shù)據(jù)庫,完成數(shù)據(jù)庫的建立。第二步是在建好數(shù)據(jù)庫的基礎(chǔ)上,設(shè)計查詢功能,使用者可以以檢定證書各要素為選項進行搜索,呈現(xiàn)搜索后的數(shù)據(jù),同時自動統(tǒng)計縣級所經(jīng)常需要的服務(wù)企業(yè)的數(shù)量和檢定的計量器具的數(shù)量。
設(shè)計的軟件工具選擇為VB.NET,它是基于微軟.NET Framework之上的面向?qū)ο蟮木幊陶Z言,可以方便地對Excel和數(shù)據(jù)庫進行操作。集成開發(fā)環(huán)境為Visual Studio 2010。
3 設(shè)計實現(xiàn)
3.1 建立數(shù)據(jù)庫
此步驟依次由選擇合并文件夾、合并Excel表格、整理合并后表格、連接數(shù)據(jù)庫、執(zhí)行復(fù)制操作、更新數(shù)據(jù)庫組成。
3.1.1 選擇合并文件夾
類庫中的FolderBrowserDialog類提供了一種方法,它提示用戶瀏覽并最終選擇一個文件夾。利用它的SelectedPath方法獲取用戶選擇的文件夾的路徑。
使用類庫中的Directoryinfo類,此類主要用于創(chuàng)建、移動和枚舉目錄和子目錄。利用它的GetFiles方法獲取選擇的文件夾下的Excel文件名稱。
3.1.2 合并Excel文件
從獲取的第一個Excel文件開始,一直到最后一個Excel文件依次執(zhí)行下列程序。
(1)打開文件,獲取文件焦點,確定該文件的數(shù)據(jù)總行數(shù)。默認連續(xù)3行C列(列名:送檢單位)出現(xiàn)空值為數(shù)據(jù)行結(jié)束信號。
(2)考慮Excel文件實際列數(shù)不超過16列,故默認數(shù)據(jù)列數(shù)為16列,復(fù)制區(qū)域(A1:P總行數(shù))內(nèi)數(shù)據(jù),執(zhí)行復(fù)制操作。WorkSheet2.Range("A1:P" & sum).Copy()
(3)新Excel文件打開,獲取焦點,執(zhí)行粘貼操作。
WorkSheet1.Range("A" & sum1 & ":P" & sum + sum1).PasteSpecial()
(4)合并結(jié)束后,保存并顯示合并的文件數(shù)量,然后釋放資源。
3.1.3 檢查、調(diào)整合并后的Excel表格
打開合并后的文件,統(tǒng)一格式,排序去除各個文件原來的標題行。
每個Excel文件都有相同的標題行,合并后就會出現(xiàn)大量的標題行,如果不去除,標題行將作為數(shù)據(jù)存入數(shù)據(jù)庫。
3.1.4 連接數(shù)據(jù)庫
設(shè)置好ADO.NET的連接字符串和SQL查詢語句,連接數(shù)據(jù)庫并執(zhí)行ADO.NET對象DataAdapter的填充命令,在內(nèi)存中建立兩個虛表Table1和Table2,分別對應(yīng)Access數(shù)據(jù)庫中的表和合并后的Excel表格。
3.1.5 執(zhí)行復(fù)制操作
遍歷Tabel2,分別把Table2的每一項數(shù)據(jù)傳遞到Table1。
MyRow = MyTable1.NewRow()
MyRow("號") = MyTable2.Rows(i)("號")
MyRow("送檢單位") = MyTable2.Rows(i)("送檢單位")
……………
3.1.6 更新數(shù)據(jù)庫
DataAdapter的Update命令更新Access數(shù)據(jù)庫,同時釋放占用的資源。
3.2 設(shè)計查詢功能
查詢功能分為兩個部分,可以查詢此次合并數(shù)據(jù)和歷史數(shù)據(jù)。查詢此次數(shù)據(jù)時,數(shù)據(jù)庫連接合并后的Excel文件,查詢歷史數(shù)據(jù)時,數(shù)據(jù)庫連接Access數(shù)據(jù)庫。以檢定證書的要素如證書號、送檢單位、計量器具名稱等為搜索項,可以設(shè)定搜索起始日期。
ComboBox控件適用于建議用戶選擇控件所列舉的選項,在該控件的下拉選項中輸入證書要素。TextBox控件用于輸入搜索內(nèi)容,MonthCalendar控件用于選擇起始日期。
用戶輸入搜索內(nèi)容,選定起始日期后,執(zhí)行搜索命令,搜索結(jié)果以證書號增序排列,同時顯示搜索結(jié)果信息,查詢結(jié)果如圖1所示。
4 結(jié)語
該文設(shè)計的這種軟件工具,可以高效地解決以Word的郵件合并功能批量打印證書后計量數(shù)據(jù)統(tǒng)計的問題。在當下很多縣級計量所計量管理自動化水平不高,證書打印還停留在Word郵件合并方式,打印證書后存在計量數(shù)據(jù)統(tǒng)計問題的背景下,對縣級所提高數(shù)據(jù)統(tǒng)計能力,節(jié)約人力資源具有很大的意義。
參考文獻
[1] 魏崢,Visual Basic.NET程序設(shè)計教程[M].北京:清華大學(xué)出版社,2005.