亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Excel VBA的批量數(shù)據(jù)提取工具開發(fā)

        2019-05-23 10:44:40劉歡彭書強
        電腦知識與技術(shù) 2019年5期
        關(guān)鍵詞:批量

        劉歡 彭書強

        摘要:為了批量提取管道力學(xué)計算軟件PipeStress輸出的結(jié)果文件中的數(shù)據(jù),需要使用計算機從結(jié)果文件中提取支架的反力及反力方向矢量等數(shù)據(jù)?;赩BA簡單易學(xué)易用的特點,提出使用Excel電子表格讀取結(jié)果文件,并使用VBA語言編程進行數(shù)據(jù)處理的方法。經(jīng)過實際應(yīng)用表明,該工具能滿足實際需求,大大提高了工作效率,節(jié)省了大量的人力和時間,使用、維護簡便,可靠性高。

        關(guān)鍵詞:批量;數(shù)據(jù)提??;Excel;VBA

        中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2019)05-0196-03

        The Development of Bulk Data Extraction Tool Based on Excel VBA

        LIU Huan1, PENG Shu-qiang2

        (1. Guangzhou Nansha Human Resources Development Co., Ltd., Guangzhou 510000, China; 2. Process Dept., China Petroleum Engineering & Construction Corp. North China Company, Renqiu 062550, China)

        Abstract: In order to extract bulk data from the output result file of PipeStress (Pipeline mechanics calculation software), it is necessary to use computer to extract the reaction force and direction vector of the support from the result file. Based on the characteristics of VBA, which is easy to learn and use, this article invents a method of reading the result file in Excel spreadsheet and processing data by programming in VBA. The practical application shows that this method can satisfy real requirement, greatly improves the work efficiency and saves a lot of manpower and time. Its easy to use and maintain, and high reliability.

        Key words: bulk; data extraction; Excel; VBA

        某電站采用管道系統(tǒng)有限元分析軟件PipeStress對電站的管道系統(tǒng)進行應(yīng)力分析,軟件輸出的結(jié)果文件(*.ppo)包含了各工況組合下的支架(或阻尼器等)的支撐載荷、接管載荷、支架(和自由端、穿墻點等)處的節(jié)點位移。在實際的管道力學(xué)分析項目中,會根據(jù)管道系統(tǒng)結(jié)構(gòu)的復(fù)雜程度將管道分成若干個計算單元。對于復(fù)雜的計算單元有多達40-50個支架、10個以上位移輸出節(jié)點。配管專業(yè)需要從結(jié)果文件中提取各個支架的最大支撐載荷以及穿墻點等處的最大位移來分析管道布置的合理性,并根據(jù)分析的結(jié)果調(diào)整管道結(jié)構(gòu)。對于一個大型的電站項目,計算的管道單元往往多達幾百甚至上千個,涉及的支架達1萬多個,從這么多的計算單元中找出各個支架的反力和位移需要耗費大量人力和時間,而且由于人為因素的影響還會存在一定的錯誤率,后期再人工校對數(shù)據(jù)又要耗費大量的時間,極大地影響工程進度。

        VBA( Visual Basic for Application) 是微軟在 Office中內(nèi)置的宏編程語言。它語法形式上與VB相同,易學(xué)易用,功能卻非常強大,可以操控各種 Office對象,為用戶文檔增添強大的功能。例如 Excel VBA可控制各單元格的內(nèi)容、格式,VBA 還具有各種圖形用戶界面控件,可開發(fā)出各種 Windows 圖形界面的應(yīng)用程序,可以使用程序批量處理大量文檔數(shù)據(jù),減輕手工文檔處理的煩瑣勞動。

        1 工具設(shè)計的思想

        限于篇幅,本文主要介紹支撐載荷提取工具的設(shè)計。為了使工具能夠?qū)崿F(xiàn)“一鍵操作”,支撐載荷數(shù)據(jù)提取工具主要實現(xiàn)以下功能:1)批量讀取多個計算單元的結(jié)果文件;2)提取每個計算單元中的各個支架在指定組合工況局部坐標(biāo)系下的最大反力以及對應(yīng)的反力矢量方向;3)列出支架所在的計算單元號、版本號以及對應(yīng)的節(jié)點號、支架功能。工具實現(xiàn)的功能流程圖如下圖1.

        2 工具實現(xiàn)的關(guān)鍵技術(shù)

        工具設(shè)計最關(guān)鍵的是支架名的統(tǒng)一,由于在使用PipeStress軟件時支架的命名因人而異,如果不統(tǒng)一命名規(guī)則,就無法實現(xiàn)通過識別支架名讀取支架對應(yīng)的反力和力的方向矢量,因此在設(shè)計工具前先確定好支架及其他必要輸出點對應(yīng)的節(jié)點命名方式,如標(biāo)準(zhǔn)支架名為3BFX10ST0071-GL,“-”前為支架名,其后為支架功能。確定好命名規(guī)則后,就可以進行接下來的程序開發(fā)了。本工具的開發(fā)主要包括以下3點關(guān)鍵技術(shù)。

        2.1 批量讀取文件名

        一個計算單元對應(yīng)一個結(jié)果文件(*.ppo,下用PPO代替),如果有多個結(jié)果文件,就需要依次讀取各個文件,作者通過識別文件名來實現(xiàn)依次讀取,在此之前需要將所有要讀取的PPO文件放入同一個路徑下的某個文件夾中,然后程序?qū)⒃撀窂较碌乃械腜PO文件名依次寫入工作表,另外結(jié)果文件的命名方式采用的是計算單元號+版本號,這便為后續(xù)識別支架所在的單元號及版本號提供了思路,具體代碼如下:

        Public Sub readname( ) '讀取PPO文件名

        On Error GoTo errhandle

        n =0

        i =5

        Do

        If n < 1 Then

        Sheets(4).Cells(i,1)=Dir("D:\VBA\*.ppo") '將指定路徑下的第一個PPO文件名保存在工作表sheet4的A5單元格

        i = i + 1

        Else: Sheets(4).Cells(i,1)=Dir '將同一路徑下的下一個PPO文件名依次保存在A6,A7……

        i = i + 1

        End If

        n = n + 1

        Loop

        errhandle:

        End Sub

        2.2 讀取原始結(jié)果文件

        識別完需要讀取的PPO文件名后,就從第一個PPO文件開始依次讀取PPO中的原始數(shù)據(jù),由于是在Excel中完成讀取過程,因此首先要將原始數(shù)據(jù)寫入Excel中,具體實現(xiàn)方法如下:

        Public Sub readdata( ) '將PPO文件中每一行的數(shù)據(jù)讀取到工作表sheet1的A列

        On Error Resume Next

        Dim i As Long,J As Long

        Dim mydata As String

        Open "D:\VBA\" & Sheets(4).Cells(J , 1) For Input As #1 '打開指定路徑下的PPO文件(i和J是變量,初始值i=0,J=1,變量J是控制讀取下一個ppo文件的關(guān)鍵變量)

        Do While Not EOF(1) '循環(huán)至文件尾

        Line Input #1, mydata '讀取PPO文件一行數(shù)據(jù)并將其賦予變量mydata

        Sheets(1).Cells(1, 1).Offset(i, 0).Value = mydata '變量mydata的值賦給工作表sheet1的A列

        i = i + 1

        Loop

        Close #1 '關(guān)閉指定的PPO文件

        Sheets(1).Cells(1, 1).Value = ""

        Sheets(1).Cells(1, 2).Value = ""

        End Sub

        2.3 提取支架相關(guān)數(shù)據(jù)

        結(jié)果文件中支架及其反力的分布存在一定的規(guī)律,每頁支架反力抬頭有提示文字Mark,支架所在行帶有特征記號Sign,在支架所在行提供了支架名、支架功能、節(jié)點號以及力的方向矢量,在接下來的若干行中提供了指定組合工況下支架的反力,根據(jù)這個規(guī)律,可以先根據(jù)Mark通過IF函數(shù)確定開始查找位置并記錄行數(shù)row1,然后從row1+1行開始到其后的若干行通過FIND函數(shù)查找Sign直至找到支架所在行,從該行中提取支架名稱、支架功能和力的方向矢量,用同樣的方法提取支架反力,代碼如下:

        Public Sub getsupport() '將PPO文件中局部坐標(biāo)系下,指定組合工況CASE下的載荷提取出來放在sheet2中

        Dim i As Long, j As Integer, k As Integer

        Dim arr(200, 10), es As Range

        i = 1

        j = 1

        Do While i< Sheets(1).Cells(Rows.Count,1).

        End(xlUp).Row

        If Left(Sheets(1).Cells(i, 1), numb) = "Mark" then '通過提示文字Mark確定開始查找位置

        With Worksheets(1).Range("A" & i + 1, "A" & i + 100) '從A列第i+1行開始查找直至第i+100行

        If Not .Find("Sign") Is Nothing Then

        Set es = .Find("Sign")

        Sheets(2).Range("N" & j) = Left(es, numb) '查找支架特征標(biāo)記Sign,并將支架名返回給工作表sheet2的N列

        Else

        i = i + 1

        End If

        End With

        With Worksheets(1).Range("a" & i + 1, "a" & i + 200) '從A列第i+1行開始查找直至第i+200行

        If Not es = .Find("CASE") Is Nothing Then '如果找到工況組合CASE,則將查找值返回給數(shù)組arr()

        arr(k, j) = es.Value

        Else

        i = i + 1

        End If

        End With

        End IF

        Loop

        End Sub

        3 工具運行

        利用VBA的圖形控件設(shè)置一個啟動按鈕,如下圖2所示,圖中1即為控件,“讀取力學(xué)報告”控件,單擊該按鈕即可實現(xiàn)一鍵解決批量讀取結(jié)果文件、提取支架信息、自動輸出讀取結(jié)果等功能。讀取的結(jié)果文件名依次寫入?yún)^(qū)域2所在列,單元格3的值代表所有需要讀取的結(jié)果文件數(shù)。

        輸出讀取結(jié)果如下:

        4 結(jié)束語

        基于Excel VBA的數(shù)據(jù)讀取工具已經(jīng)開發(fā)完成并獲得了實際應(yīng)用,取得了非常好的效果,大大提高了工作效率,節(jié)省了人力和時間。利用Excel應(yīng)用程序中的VBA編程功能非常好地解決了批量數(shù)據(jù)提取的問題,為此類問題的解決提供了思路和方法,也可以為類似大數(shù)據(jù)處理提供參考。通過實際使用效果可以發(fā)現(xiàn),利用數(shù)組可以大大提高讀寫速度,對于大批量的數(shù)據(jù)處理具有非常明顯的優(yōu)勢。

        參考文獻:

        [1] 韓加國.Excel VBA從入門到精通[M].北京:化學(xué)工業(yè)出版社,2009.

        [2] 馬維峰.Excel VBA應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2006.

        [3] Excel Home. Excel VBA實戰(zhàn)技巧精粹[M].北京:人民郵電出版社,2013.

        [4] 鄧朝輝.基于Excel VBA的事業(yè)單位崗位設(shè)置評分系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機與現(xiàn)代化, 2012, 206(12):213-215.

        [5] 王志軍.運用Excel公式進行數(shù)據(jù)處理技巧八則[J].電腦知識與技術(shù), 2015(10):44-46.

        【通聯(lián)編輯:梁書】

        猜你喜歡
        批量
        批量提交在配置分發(fā)中的應(yīng)用
        淺議高校網(wǎng)銀批量代發(fā)
        基于AUTOIT3和VBA的POWERPOINT操作題自動批量批改
        考慮價差和再制造率的制造/再制造混合系統(tǒng)生產(chǎn)批量研究
        久久国产A√无码专区亚洲| 加勒比一本heyzo高清视频| 日本黄网站三级三级三级| 性夜夜春夜夜爽aa片a| 人妻无码∧V一区二区| 精品人妻一区二区三区狼人 | 色婷婷综合中文久久一本| 精品不卡久久久久久无码人妻| 久久精品国产亚洲av专区| 丰满少妇被猛烈进入高清播放| 亚洲精品久久中文字幕| 2021国产精品久久| 国产久久久自拍视频在线观看| 国产精品一区二区av麻豆| 久久久国产一区二区三区四区小说| 无码伊人66久久大杳蕉网站谷歌| 少妇被粗大猛进进出出男女片 | 日韩在线视精品在亚洲| 麻豆成人久久精品二区三区免费| 乱老年女人伦免费视频| 一道久在线无码加勒比| 日韩人妻无码精品系列专区无遮 | 人妖av手机在线观看| 九九久久精品无码专区| 国产成人精品日本亚洲专区6| 国产一区在线视频不卡| 最近中文字幕国语免费| 亚洲欧美日韩一区在线观看| 日本女优中文字幕在线观看| 日本一区二区视频免费在线看| 久久人与动人物a级毛片| 人妻少妇一区二区三区| 一本大道久久a久久综合精品| 亚洲国产成人av在线观看| 波多野结衣中文字幕在线视频| 一个人看的在线播放视频| 亚洲欧洲日产国码av系列天堂| 精品国产乱码久久久软件下载| 亚洲成熟丰满熟妇高潮XXXXX| 国内自拍色第一页第二页| 国产乱xxⅹxx国语对白|