帥 露 王 彬 蒲 弦 帥志強
中國成達工程有限公司 成都 610041 莆田學院 莆田 351100
靜設備接管法蘭匯總表自動生成軟件的開發
帥 露*王 彬 蒲 弦 帥志強
中國成達工程有限公司 成都 610041 莆田學院 莆田 351100
為提高設備詳細設計階段制作法蘭接管匯總表的效率和質量,編制自動生成程序。先利用Excel制作接管法蘭匯總表模板文件,其次利用Microsoft SQL Server建立接管法蘭匯總表相關參數數據庫,最后通過C#編程,實現對SQL相關參數信息的查詢,Excel表格生成的控制,從而完成接管法蘭匯總表的自動生成軟件的開發。結果表明,所編制的軟件能夠完成對接管法蘭匯總表的自動生成,生成文件能夠滿足施工要求。
接管法蘭匯總表 模塊化 數據庫 軟件開發
在工程項目詳細設計階段,靜設備專業需要繪制大量施工圖,主要包括裝配圖、零部件圖及接管法蘭匯總表等。其中接管法蘭匯總表由于內容多而繁瑣,不僅費工、費時,而且極易出現錯誤。另一方面接管法蘭匯總表形式相對單一,主要在于遵循標準標記規定進行參數表達。因此若能將其模塊化,既能提工作效率,又能提高設計質量。
本文主要思路是通過C#編寫用戶界面,響應用戶操作,然后訪問相關數據庫進行查詢,最后將查詢結果按相應標記方法輸出到預先制作好的Excel模板中,完成接管法蘭匯總表的制作。其中C#與數據庫的交互通過ADO.NET技術完成[1,2],而對Excel則通過Excel對象模型進行訪問[3]。
考慮到接管數量的差異,制作兩種不同規格(A4,A2大小)的Excel模板用作接管法蘭匯總表的基本圖框,A4大小的Excel模板見圖1,程序運行時會根據總項目數選擇相應的模板制作法蘭匯總表。

圖1 接管法蘭匯總表Excel模板
由模板文件可知,其主要輸出的相關信息:接管號、件號、圖號或標準號、名稱、數量、材料、單重、總重及備注等。
制作法蘭匯總表主要涉及接管、法蘭、人孔、補強板、管件等零件相關參數,本文參考相關標準,利用Microsoft SQL Server建立各部件的標準參數數據表。其中接管參數主要包括公稱直徑、外徑、壁厚等級等,而法蘭參數除了公稱直徑、壓力等級等參數外,還包括法蘭外徑、法蘭厚度等參數,雖然這些參數對于制作法蘭匯總表并非必須,但是考慮到數據的完整性以及后續功能的完善和擴展,仍然將其錄入,以備不時之需。
3.1 界面設計
接管法蘭匯總表自動生成程序的主界面見圖2,其中涉及的主要C#控件有Lable、TextBox、Button、Panel、ListBox、ComboBox、TabControl、CheckBox及DataGridView等。

圖2 接管法蘭匯總表自動生成程序用戶界面
對于某一管口而言,當其是人孔時,法蘭界面便無需顯示,同時考慮到某管口可能通過其他零部件圖表達,因此程序中還添加了自定義選項,以提高自主性,這部分功能采用CheckBox和TabControl控件來實現,默認顯示法蘭選項,當選擇其它選項顯示的同時將隱藏法蘭選項,具體效果見圖3。

圖3 人孔、自定義TabControl界面
對于接管參數,程序默認為標準管,當為鍛件管時只需勾選“鍛件管” CheckBox控件便可以激活相應的用戶輸入控件。出于便利性考慮,程序允許用戶只需要在一個界面上輸入就可以完成匯總表的制作,因此這里采用ComboBox控件來容納管口信息,通過后臺的關聯來保持各控件顯示與管口信息的一致性,同時考慮到直觀性,采用DataGridView控件對匯總表進行初步顯示,便于用戶發現錯誤并進行修改。
3.2 程序設計
主要介紹程序設計中的關鍵代碼,闡明程序設計的思路和具體實現過程。
3.2.1 C#與Microsoft SQL Server交互
與Microsoft SQL Server交互主要通過ADO.NET技術完成[1],本程序涉及的SqlClient類主要有SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader等,其具體功能見表1。

表1 常用的SqlClient類
但在使用ADO.NET之前,需要先添加相關命名空間,然后連接SQL Server數據庫,其具體代碼如下。
using System.Data;
using System.Data.SqlClient; //添加命名空間
string connString = @"server=DEWINSPRING;
integrated security=true;
database=STGB";
SqlConnection conn = new SqlConnection(connString); //連接數據庫
連接數據庫后可以用兩種方式對數據庫進行訪問[1],① 始終保持數據庫打開狀態,待用戶結束所有對數據庫的操作再將其關閉,但這種方法必須建立與數據庫的活動連接,這無疑將造成資源的巨大浪費;② 更加實用的方式是使用數據適配器對數據庫進行訪問,其不需要一直保持數據庫為打開狀態,而是將需要修改的數據保存到本地,以脫機的方式進行處理,等工作結束之后再將所有修改保存回數據源中,其實現的具體代碼如下。
SqlDataAdapter da = new SqlDataAdapter();
//數據庫法蘭參數賦值
da.SelectCommand = new SqlCommand(qry, conn);
da.Fill(dflange);
執行以上代碼,能夠將法蘭參數存儲到本地數組中以便后續使用,其他參數可以用同樣的方法獲得。
3.2.2 數據與交互界面的關聯
交互界面的關聯主要包括兩個方面:① 用戶進行界面操作時,后臺響應完成相應動作;② 由于本程序允許用戶在一個界面中操作,因此當用戶選擇不同管口時,應該將其對應管口的參數反映到當前界面上,也就是說將界面顯示和各管口的實時數據關聯起來。下面以法蘭參數為例說明將數據還原于界面顯示的具體過程。
if (listBox1.SelectedItem != null)//當有管口被選中時
{
int i;
i=listBox1.SelectedIndex;//獲取被選中管口的索引
//-------復原管口參數------//
//復原法蘭參數
nozzlenumber.Text = listBox1.SelectedItem.ToString();
listBox1.SelectedItem=dt1.Rows[i]["nozzlenumber"];
flangestd.SelectedItem=dt1.Rows[listBox1.SelectedIndex]["flangestd"];
……
通過以上代碼便將用戶對某管口法蘭的選擇重新顯示,使用戶清楚對管口進行的操作以便進一步修改。
3.2.3 C#與Excel的交互
C#通過Excel對象模型完成對Excel的訪問,其中最常用的對象有Application、Workbook、Worksheet、Range等[3]。但在應用其對象之前必須先添加Excel的COM組件以及其命名空間,其具體方法是在“項目”中選擇“添加”再選擇“COM”組件中的“Microsoft Office 15.0 Object Library”添加,并引用其命名空間即可。C#打開Excel模板文件的代碼如下。
Excel.Application excel = new Excel.Application();
Excel.Workbook book = excel.Application.Workbooks.Add(@"C: mytest.xlsx");
打開Excel模板文件后就可以通過Range等對象對其內容進行修改,具體方法可以參考相應文獻。
3.3 程序的打包和發布
本程序采用微軟自帶的“InstallShield Limited Edition Project”程序進行打包,程序完成時只需要對項目添加“安裝和部署”,參考相關提示便能完成程序的打包和發布,最終生成本程序的安裝包[4]。
軟件運行結果及生成的接管法蘭匯總表分別見圖4和圖5。

圖4 法蘭接管匯總表運行結果界面

圖5 生成法蘭接管匯總表界面
由此可知本軟件可以基本實現法蘭匯總表的自動生成,而且生成法蘭匯總表基本滿足設備施工圖的技術要求。
應用此軟件自動生成接管法蘭匯總表不僅能提高效率還能避免差錯,既省時,又省力。不僅如此,所建立的數據庫還可能為程序的后續開發和完善提供數據支持,而開發本程序的方法對于今后相關程序的開發也具有借鑒意義。
1 阿格沃爾,哈德萊斯頓,沈潔等. C# 2008數據庫入門經典[M].清華大學出版社, 2009.
2 Karli Watson Marco Bellinaso,康博. C#入門經典[M].清華大學出版社, 2002.
3 李文駿,黃金晶. C#.NET開發Excel報表淺析[J]. 軍民兩用技術與產品, 2010, (12): 39-42.
4 劉 藝. InstallShield 2000使用詳解[M].機械工業出版社, 2002.
2016-07-04)
*帥 露:助理工程師。2015年畢業于大連理工大學化工機械專業獲得碩士學位。從事靜設備工程設計與研究工作。 聯系電話:(028) 65537580,Email:ShuaiLu@chengda.com。