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

        ?

        對象鏈接與嵌入技術(shù)在產(chǎn)品測試輸出中的應用

        2020-05-19 05:11:37王炎舜
        河南科技 2020年8期

        王炎舜

        摘 要:在某型產(chǎn)品研制過程中,其性能指標需要進行全面測試。過去,測試結(jié)果通常采用手工填寫方式,但是存在效率低、費時費力、容易出錯等問題。本研究采用對象鏈接與嵌入技術(shù),在VC++平臺下操作Excel表格,實現(xiàn)產(chǎn)品測試結(jié)果的批量輸出和圖表繪制功能,大幅度提升某型產(chǎn)品測試數(shù)據(jù)輸出的準確性,提高產(chǎn)品測試數(shù)據(jù)分析及交付效率。

        關(guān)鍵詞:對象鏈接與嵌入技術(shù);VC++;測試數(shù)據(jù)輸出

        中圖分類號:TP311文獻標識碼:A文章編號:1003-5168(2020)08-0031-03

        Application of Object Linking and Embedding Technology

        in Product Test Output

        WANG Yanshun

        (China Air-to-Air Missile Research Institute,Luoyang Henan 471000)

        Abstract: During the development of a certain type of product, its performance indicators need to be thoroughly tested. In the past, test results were usually filled in manually, but there were problems such as low efficiency, time-consuming and labor-intensive, and error-prone. This research used object linking and embedding technology to operate Excel tables under the VC ++ platform to realize the batch output and chart drawing functions of product test results, greatly improving the accuracy of product test data output, and improving the efficiency of product test data analysis and delivery.

        Keywords: object linking and embedding technology;VC ++;test data output

        某型產(chǎn)品具有復雜的技術(shù)指標體系,性能測試期間會產(chǎn)生包含大量參數(shù)的測試文件,人們需要將測試數(shù)據(jù)填寫到測試記錄Excel表格中。針對同一批次產(chǎn)品的測試數(shù)據(jù),人們需要編寫數(shù)據(jù)分析報告;對于各產(chǎn)品某些關(guān)鍵數(shù)據(jù),需要繪制散圖類型的圖表來分析該批次產(chǎn)品質(zhì)量情況。以往采用手動方式將測試數(shù)據(jù)填入測試記錄卡并繪制測試數(shù)據(jù)散點圖,任務量大,效率低且容易出錯。本文采用對象鏈接與嵌入(Object Linking and Embedding,OLE)技術(shù),最終實現(xiàn)產(chǎn)品測試記錄自動化填寫及測試數(shù)據(jù)圖表生成。

        1 OLE技術(shù)簡介

        OLE技術(shù)是一種交互進程間的通信技術(shù),可以使開發(fā)者利用封裝好的對象進行程序間的信息傳遞與操作,已逐漸發(fā)展成為一種基于對象的動態(tài)交互組件規(guī)范。該技術(shù)利用組件對象模型(COM)完成不同程序間的訪問與操作,可以使組件自身的對象與其方法被方便地調(diào)用[1]。在該技術(shù)中,被調(diào)用方是OLE服務器端,調(diào)用方是客戶端(或容器),調(diào)用的各個項目是OLE對象[2]。Microsoft Office的Excel軟件就是一個OLE服務器,在VC++平臺可以用MFC程序完成對Excel的操作,使其完成測試記錄表的輸出和數(shù)據(jù)對比圖表的生成。

        2 測試記錄模板和流程設(shè)計

        某型產(chǎn)品測試所保存的測試數(shù)據(jù)為二進制文件,結(jié)合測試數(shù)據(jù)格式和測試項目分類,依據(jù)不同測試數(shù)據(jù)集的文件名稱區(qū)分測試項目,填入預先設(shè)計好的測試記錄表模板,如圖1所示。

        測試數(shù)據(jù)批量自動化輸出的流程為:首先開啟Excel服務打開模板,之后選取需要填入測試表的測試項目,直到所有需要填寫的項目填寫完畢,隨后進行超差數(shù)據(jù)標紅與缺項統(tǒng)計,最后保存輸出完成的測試記錄表。整個測試記錄數(shù)據(jù)輸出操作流程如圖2所示。

        3 測試記錄批量輸出實現(xiàn)

        Excel作為OLE自動化服務器,其中有許多OLE對象可以被客戶端應用程序調(diào)用。常見的操作對象包括:應用對象Application、工作簿對象WorkBook、工作列表對象WorkSheet、單元格對象Range等。

        要操縱Excel的對象并調(diào)用其方法,首先需要在工程中添加Excel類庫。在Excel 2013中,類庫文件為默認安裝路徑中的Excel.exe文件,即C:\Program Files\Microsoft\Office 15\Excel.exe。通過VC++平臺的類向?qū)В–lassWizard)選擇目標類庫后,選擇所要添加的對象類,即可生成包含所選對象類的excel.cpp文件和excel.h頭文件,然后自動添加到開發(fā)工程。完成類庫的添加后,可以進行應用程序的工程開發(fā)。

        對OLE服務器(即Excel對象)的調(diào)用分為以下幾個步驟。

        3.1 OLE服務初始化

        OLE初始化在CmyApp::InitInstance()中完成,初始化代碼如下:

        if (!AfxOleInit())

        {

        AfxMessageBox(IDP_OLE_INIT_FAILED);

        return FALSE;

        }

        如果OLE服務初始化成功,則AfxOleInit()返回一個非零值,否則返回值為0。

        3.2 創(chuàng)建Excel服務

        操作Excel進行表格填寫和圖表操作需要的對象類為應用對象_Application、工作簿集合Workbooks、工作簿_Workbook、工作表單集合Worksheets、工作表單_Worksheet、單元格Range、圖表對象集合ChartObjects、圖表對象_Chart等。使用各對象前需要定義對象實例,同時定義COleVariant類型的默認參數(shù)如(covOptional等)和LPDISPATCH類型的接口指針。創(chuàng)建Application對象的代碼如下:

        if (!app.CreateDispatch("Excel.Application"),NULL)

        {

        AfxMessageBox("創(chuàng)建Excel服務失??!");

        return;

        }

        app.SetVisible(TRUE);

        須使用SetVisible方法設(shè)置,對用戶可見,否則創(chuàng)建的服務無法正常關(guān)閉,也無法創(chuàng)建新的服務。

        3.3 相關(guān)對象的關(guān)聯(lián)調(diào)用

        根據(jù)操作方式的不同,對工作簿book對象的關(guān)聯(lián)分為兩種:一是添加新的工作簿到工作簿集合,即新建空白Excel文檔進行操作;二是打開預定Excel文檔進行關(guān)聯(lián)操作。前者使用Add方法完成新建文檔并關(guān)聯(lián)的操作,后者使用Open方法打開預設(shè)路徑的文檔。本文使用后一種方法來打開設(shè)計好的測試記錄表模板進行操作,相關(guān)代碼如下:

        books=app.GetWorkbooks();

        ::GetCurrentDirectory(MAX_PATH,path);

        strPath.Format(“%s”,path);

        strPath += “\\Template.xlsx”;

        lpDisp=books.Open(fileName,

        covOptional,covOptional,covOptional,covOptional,

        covOptional,covOptional,covOptional,covOptional,

        covOptional,covOptional,covOptional,covOptional,

        covOptional,covOptional

        );

        ASSERT(lpDisp);

        book.AttachDispatch(lpDisp);

        工作表單集合使用工作簿的GetSheets方法得到,工作表單則通過GetItem方法傳入表單頁索引sheetNum獲取,代碼如下:

        Sheets =book.GetSheets();

        Sheet=sheets.GetItem(COleVariant((short)sheetNum));

        獲取單元格range的關(guān)聯(lián)操作可以通過range對象的AttachDispatch方法得到工作表單sheet內(nèi)的所有單元格,也可以通過sheet對象的GetRange方法傳入表格單元格的索引范圍。使用前者方法得到范圍后,使用SetItem方法輸入坐標索引和設(shè)定值,可以填寫單元格,后者通過SetValue2方法設(shè)定單元格范圍內(nèi)的值。因為需要填寫固定的單元格,后者更便于格式化表格索引參數(shù),故選用GetRange方法實現(xiàn)單元格的填寫,相關(guān)代碼如下:

        //格式化單元格索引

        strRange.Format(“I%d”,i);

        //設(shè)置單元格

        Range=sheet.GetRange(COleVariant(strRange), COleVariant(strRange));

        //填寫單元格

        Range.SetValue2(COleVariant(m_value));

        3.4 釋放各個調(diào)用對象

        在對各對象完成操作后,需要依次釋放各個對象,否則會出現(xiàn)無法再次進行Excel服務注冊的錯誤。

        4 數(shù)據(jù)分析圖表生成方法

        生產(chǎn)報告所需圖表是一組測試數(shù)據(jù)的針對某些指標的散點圖,在選取多組數(shù)據(jù)后,調(diào)用OLE服務寫入Excel并完成圖表生成。打開文檔,使用CfileDIalog類生成一個模態(tài)對話框來選取多組測試數(shù)據(jù),再將所需指標數(shù)據(jù)寫入Excel文檔,操作寫入單元格的方法同上一節(jié)表格輸出。

        生成圖表使用ChartObjections、ChartObjection和_Chart類來完成,從工作表單到圖表對象層層關(guān)聯(lián),最后獲得圖表對象的關(guān)聯(lián)[3]。相關(guān)代碼如下:

        Double left = 50, top = 100, width = 800, height = 300;//圖表坐標與寬高

        lpDisp = sheet.ChartObjects(covOptional);

        chartobjects.AttachDispatch(lpDisp);

        chartobject = chartobjects.Add(left, top, width, height);

        chart.AttachDispatch(chartobject.GetChart());

        chart.SetChartType(-4169);//散點圖類型常量

        關(guān)聯(lián)后,用ChartWizard方法傳入相關(guān)參數(shù)生成圖表,相關(guān)代碼如下:

        lpDisp = sheet.GetRange(_variant_t(“D1”0, _variant_t(“D9”));

        var.pdisVal = lpDisp;

        chart.ChartWizard(var,// Source

        covOptional,//Gallery

        covOptional,//Format

        COleVariant((short)2),//PlotBy

        covOptional,//CategoryLabels

        covOptional,//SeriesLabels

        COleVariant((short)FALSE),//HasLegend

        COleVariant(“title”),//Title

        COleVariant(“x_title”),//CategoryTitle

        COleVariant(“y_title”),//ValueTitles

        covOptional//ExtraTitle

        );

        其中,PlotBy為0按行取值,為1則按列取值;HasLegend表示是否需要圖例,Tile、CategTile和ValueTile可以分別設(shè)置圖表標題、[X]軸標題和[Y]軸標題,其余參數(shù)項填入默認參數(shù)。生成圖表效果如圖3所示。

        5 結(jié)語

        本文通過采用OLE技術(shù)實現(xiàn)了某型產(chǎn)品測試記錄表的自動化輸出和批次測試數(shù)據(jù)的圖表生成。以往依靠手工完成的數(shù)據(jù)填寫和繪制任務需要耗時幾十分鐘,使用自動化技術(shù)完成僅需數(shù)分鐘,該技術(shù)在某型產(chǎn)品的生產(chǎn)交付測試中得到了良好應用,并已推廣到類似產(chǎn)品的測試工作中,工作效率大幅度提升。

        參考文獻:

        [1]呂靜.基于OLE自動化實現(xiàn)Excel動態(tài)報表[J].電腦知識與技術(shù),2017(9):180-181.

        [2]朱晗.基于對象鏈接與嵌入技術(shù)的數(shù)據(jù)校驗系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:華中科技大學,2016.

        [3]劉志江,羅欣,周博,等.VC++平臺下基于OLE技術(shù)的Excel圖表自動化輸出[J].煤礦機械,2013(8):272-275.

        9久9久女女热精品视频免费观看| 欧美日韩精品一区二区视频| 草草浮力影院| 精品乱码一区二区三区四区| 麻豆国产成人AV网| 久久精品国产在热亚洲不卡| 亚洲av一二三区成人影片| 久久精品国产www456c0m| 久久综合色鬼| 日本道免费一区日韩精品| 亚洲av高清天堂网站在线观看| 四虎影视成人永久免费观看视频| 99这里只有精品| 国产高清一区在线观看| 日韩精品在线观看在线| 人妻少妇中文字幕乱码| 亚洲av日韩精品久久久久久| 国产成人AⅤ| 加勒比婷婷色综合久久| 久久久久99精品成人片直播| 狠狠爱无码一区二区三区| 精品亚洲人伦一区二区三区| 97超碰精品成人国产| 亚洲看片lutube在线观看| 五月婷婷激情小说| 亚洲精品一区二区三区日韩| 国产亚洲精品综合一区| 精品无码中文字幕在线| 波多野结衣一区二区三区视频| 国产一区二区三区中出| 强开少妇嫩苞又嫩又紧九色| 天堂在线www中文| 久久成人黄色免费网站| 久久久精品人妻一区二区三区妖精 | 亚洲精品国产福利一二区| 亚州毛色毛片免费观看| 日韩一区二区三区熟女| 日韩欧美成人免费观看| 亚洲av日韩aⅴ永久无码| 中文字幕亚洲精品综合| 高h喷水荡肉爽文np肉色学校|