鄭 帥,謝明明,王 焱,羅智平
(中國五環工程有限公司,湖北 武漢 430223)
隨著三維設計軟件在化工工程詳細設計工作中的普及,管道材料統計工作已實現依據三維模型數據庫進行自動化精準輸出,大幅提高了管道布置設計人員的工作效率。
但對于項目前期報價階段的管道材料統計工作,由于沒有三維模型數據庫支撐,只能采用傳統工作方式進行統計匯總。在此過程中,需要頻繁查閱材料等級文件,并對材料數量進行分類匯總,工作效率和質量均較難保證。本文討論如何利用程序輔助完成管道材料統計匯總工作,實現規范化生成管道材料匯總表,以提高數據質量和工作效率。
根據工程實際需求,本程序需要解決項目前期報價階段,編制管道材料匯總表的數據規范性問題,并提供數據輸入后自動輸出成品文件的功能。程序規劃架構見圖1,首先將材料等級文件讀取并寫入程序數據庫,然后根據用戶在程序界面中輸入的管道材料信息,與數據庫內的材料等級文件信息進行匹配,最終匯總輸出成品管道材料匯總表。程序功能的實現涉及到對Word/Excel文件、數據庫的讀寫等技術難點。本程序是基于.NET平臺開發,通過調用成熟的.NET類庫來解決上述技術難點。
報價項目的管道材料等級文件以及管道材料匯總表多以Word或Excel格式存儲,為了獲取材料等級信息和輸出成品,程序需要與上述文件發生讀取和輸出交互。本程序是基于.NET平臺開發的,而.NET平臺對Word/Excel文件操作主要有三種方式:Ole方式、調用Word/Excel的COM組件方式、使用第三方類庫(NPOI、Aspose、Spire等)方式。
本程序通過使用Asposefor.NET(包括Aspose.Words與Aspose.Cells)實現與Word/Excel文件的交互操作。
使用Aspose.Words加載Word文件后,會在內存中生成一個文檔對象模型(DOM)映射。DOM內的樹形對象結構見圖2。Document對象是文檔樹的根節點,可通過節點類型和節點間繼承關系獲取其子節點集合(NodeCollection),程序可以通過循環遍歷該集合獲取相應子節點信息并進行讀寫操作。
使用Aspose.Cells加載Excel文件后,同樣會在內存中生成一個映射,該映射包含Workbook、Worksheet、Cells等對象類型。其中,Workbook對象提供訪問整個Excel文件的入口。與Aspose.Words的DOM不同的是,Aspose.Cells內并不存在上述對象間的繼承關系,而是采用了類似Excel的數據存數結構:一個Excel文件對應一個Workbook對象,一個Workbook對象可包含多個Worksheet對象,數據直接存儲到Worksheet下屬的Cells對象內。程序可通過行、列索引直接定位到對應單元格,之后就能對該單元格數據進行讀寫操作。
在獲取Word/Excel文件內的材料等級信息后,需要將這些信息寫入程序數據庫。待用戶輸入查詢條件信息后,程序從數據庫讀取符合查詢條件的材料等級信息,并反饋到程序界面上。上述過程涉及到程序與數據庫間的讀寫交互。本程序采用SQLite數據庫,通過ADO.NET技術實現與SQLite數據庫的交互。
ADO.NET是微軟公司新一代.NET數據庫的訪問模型,是目前數據庫程序設計人員用來開發基于.NET平臺數據庫應用程序的主要接口。ADO.NET是一個類庫,提供了很多用于完成數據庫連接和增刪改查(CRUD)操作的對象,其結構模型見圖3。
ADO.NET提供了兩種操作SQLite數據庫的方式:①使用SQLiteConnection、SQLiteCommand、SQLiteDataReader,其權限只能讀取或查詢數據庫;②使用SQLiteConnection、SQLiteCommand、SQLiteDataAdapter、DataSet數據集,其權限可進行各種數據庫讀寫操作。
本程序涉及的數據庫分為兩類:一類是通過材料等級Word/Excel文件獲取,如管道材料等級表、管道壁厚表及支管連接表等數據,這類數據通過文件導入程序數據庫;另一類通過相關標準規范獲取,如異徑管變徑口徑范圍、三通支管口徑范圍、法蘭匹配螺栓長度及螺栓數量等數據,這類數據在程序數據庫中內置。其中,文件導入界面見圖4所示。
導入操作流程如下:①輸入項目代號,如TEST;②選擇材料等級文件內使用的單位格式(公制/英制);③選擇材料等級文件的格式(Word/Excel);④選擇要導入的材料等級文件類型(等級表/支管表/壁厚表);⑤點擊“瀏覽”按鈕,彈出加載文件窗口,選擇材料等級文件存放路徑;⑥點擊“預覽”按鈕,將會在程序下方預覽窗口內顯示讀取到的相關數據;⑦點擊“寫入”按鈕,將預覽窗口內數據寫入后臺數據庫。
本程序材料統計與匯總界面見圖5,主要包括上下兩部分。界面上方為用戶選擇管道材料區域,界面下方是顯示用戶已錄入材料信息區域。統計與匯總操作流程如下:①輸入管線號(一般從CAD文件復制);②輸入管線號分隔符以及等級、口徑所在的位數(同一個項目一般只需輸入一次),點OK按鈕,程序獲取等級名及口徑信息;③選擇材料類型(TUBE/ELBO/REDU/TEE等),程序會從數據庫篩選符合要求的材料名稱,并在右側候選列表顯示;④用戶在候選列表內選擇所需的材料名稱,此時程序會查詢數據庫,將所選擇元件條目的標準、材質、規格、壁厚等信息自動填充到界面右側對應文本框內;⑤輸入該元件的數量,點“添加”按鈕,將該條記錄寫入數據庫;⑥重復①-⑤步驟,直至將所有管線數據錄入完畢。
待錄入完畢后,點擊“生成Excel”按鈕,即可導出相應的成品Excel文件,包括管道綜合材料表(見圖6)和管道安裝材料表(見圖7)。
從運行結果可以看出,本程序生成的管道材料匯總表文件的內容及格式均可滿足報價項目需求。
通過調用Aspose For.Net的Word/Excel類庫、ADO.NET類庫,實現了程序化輸入材料和規范化輸出材料匯總表文件,證明使用程序輔助報價項目材料統計匯總工作的可行性。在項目報價階段使用本程序,可高效、準確輸出規范化的材料匯總表文件,為項目精細化管理提供有力的信息化技術支撐。同時,本程序使用現有類庫進行集成開發的思路也可為今后工程信息化程序開發工作提供借鑒。