馮 峰 丁韶輝
(淮河水利委員會水文局(信息中心) 蚌埠 233001)
2014年8 月,南四湖地區出現嚴重旱情,正式啟用南水北調東線一期工程向南四湖生態應急調水,此后,通過南水北調東線向山東調水進入常態化。為了做好水資源配置與調度管理工作,自2014年起,水利部逐年下達了南水北調東線一期工程年度水量調度計劃,并由南水北調東線總公司負責實施。按照工作安排,淮委水文局在南水北調省際泵站進行調水量監測,并將每日調水量向上級部門報送。
在東線一期工程調水信息報送工作中,需要每日從數據庫查詢調水監測數據、計算調水量、編輯簡報、發送郵件和短信。首先從實時水情數據庫系統(Microsoft SQL Server)查詢各測站的測流時間、流量、水位等數據,然后將數據輸入有確定公式和格式的Excel 表格進行累計調水量計算,下一步結合計算結果編寫具有固定簡報格式的Word 文檔,形成簡報,然后將簡報作為附件群發郵件至各相關部門人員,另外通過短信群發平臺群發調水簡訊。簡報及短信發送工作重復性較強,很大程度上可以利用軟件來實現。
本文采用C#面向對象語言設計軟件界面,結合SQL Server 數據庫查詢、Word 和Excel 文檔處理、郵件、網頁等相關類庫和控件進行程序編寫,實現簡報及短信發送的自動化,極大地提高了工作效率。
C#是微軟公司發布的一種面向對象的、運行于.NET Framework 之上的高級程序設計語言,具有安全、穩定、使用簡單等特點。C#由C和C++衍生而來,繼承了C 和C++強大功能,同時去掉了一些復雜特性。C#綜合了VB 簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程的支持成為.NET開發的首選語言。
.NET Framework 類庫是一個由類、接口和值類型組成的庫,通過該庫中的內容可訪問系統功能,它是生成.NET Framework 應用程序、組件和控件的基礎,使用者可以根據需要使用恰當的命名空間中的類進行編程,提高編程效率。
軟件主要包含四個模塊,即數據庫操作模塊、文檔處理模塊、郵件發送模塊和短信發送模塊。
軟件的設計思路:首先,利用數據庫操作模塊,提取數據庫中近兩天的水位、流量等數據,判斷當天監測數據是否收到,如果收到,將最新的數據按照一定的表結構轉存到本地數據庫;然后取出本地數據,利用文檔處理模塊將取出的數據填入Excel表并自動計算,根據計算結果自動生成Word 簡報文檔;最后通過郵件發送模塊和短信發送模塊進行郵件和短信的發送。
調水期間,測流人員對各泵站的調水流量進行監測,隨后將監測情況上報并最終傳輸至雨水情數據庫。但由于網絡故障等原因,有時會出現漏報或數據上傳故障,實時雨水情庫不能隨意改動,所以需要另外建立數據庫,專門存放各泵站的流量監測數據。
提取與轉存數據庫中的數據,主要使用了SqlDataAdapter、SqlBulkCopy 等類。其中,SqlData-Adapter 類利用數據庫連接和查詢命令從SQL Server數據庫獲取調水流量監測數據,存入DataSet;SqlBulkCopy 類用于將從水情實時數據庫中取得的數據批量加載到本地SQL Server 數據庫。
近兩年,南水北調東線調水量均是利用Excel表格進行計算,為了工作上的延續性及便捷性,本軟件也利用Excel 表格計算。首先將數據庫中的調水監測數據導入Excel 表格,結合Excel 自身的計算功能,算出調水量,然后根據計算結果,結合簡報格式,生成Word 簡報文檔。該模塊主要使用Microsoft.Office.Interop.Excel 和Microsoft.Office.Interop.Word 命名空間中的類。
東線調水簡報每日通過郵件發送到各相關部門工作人員,本軟件可以利用郵件發送模塊實現該功能。郵件發送模塊主要使用MailMessage 和SmtpClient 類,利用SMTP 簡單郵件傳輸協議完成信件發送。程序中添加發件人賬戶、密碼及收件人賬戶,在運行軟件時,首先選擇要發送的簡報作為附件,點擊發送即可完成群發。編寫程序時需添加命名空間System.Net.Mail。
調水期間,除發送簡報郵件外,還需把各泵站調水量通過短信平臺以短信的形式發送到相關部門工作人員,本軟件利用短信發送模塊的WebBrowser控件實現該功能。WebBrowser 控件可以在Windows窗體應用程序中承載網頁,利用成員函數將控件導航到指定的短信平臺網址,自動完成賬號和密碼的填入、登錄;然后跳轉到發送頁面,自動獲取Excel 表格中的計算結果數據作為發送內容,將其與接收方的手機號碼填入網頁,用戶只需確認無誤后點擊發送即可。
將該軟件應用到南水北調東線2017—2018年度調水的簡報發送工作中,軟件能夠完成監測數據的提取、結合Excel 表計算調水量、自動生成調水簡報Word 文檔、發送簡報與短信等工作,軟件使用簡單,發簡報所用時間由原來的25 分鐘左右縮減到2~3 分鐘,大大提高了工作效率。
(1)本文介紹了C#結合SQL Server 數據庫、Office 文檔的開發方式,分析了軟件制作、發送簡報的思路,構建了軟件架構,討論了軟件代碼細節,實現了軟件制作與發送簡報的功能。
(2)調水簡報發送軟件界面簡潔,操作簡便,應用于南水北調東線調水簡報發送工作,極大地提高了工作效率。
(3)本文僅針對南水北調東線調水過程中的簡報發送工作展開分析與研究,對于其他需要頻繁發送簡報的類似工作,具有較高的參考價值,可在此基礎上研究與推廣■