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

        ?

        基于VSTO的word文檔格式檢查插件的開發(fā)與研究

        2016-11-24 17:19:14劉艷平
        電腦知識與技術(shù) 2016年26期

        劉艷平

        摘要:隨著無紙化辦公的不斷推進(jìn),Microsoft Office辦公軟件逐漸成為主要的辦公工具。利用Word寫作文檔時,難免會出現(xiàn)各種格式和內(nèi)容錯誤,人工校對錯誤難免產(chǎn)生疏漏。因此研究基于VSTO的文檔格式自動化檢查輔助插件能夠幫助使用者檢查相關(guān)錯誤。從VSTO的特性入手,首先分析了Word的對象層次模型,然后就標(biāo)題格式檢查、正文重復(fù)詞組、段落格式化、表格信息校對等功能的實現(xiàn)進(jìn)行了研究。

        關(guān)鍵詞:VSTO;格式檢查;Office 插件

        中圖分類號:TP317 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)26-0106-03

        The Development and Research of Word Document Format-Checking Plug-in Based on VSTO

        LIU Yan-ping

        (Unit of 91413 PLA, Qinhuangdao 066000, China)

        Abstract: With the continuous advancement of paperless office, Microsoft Office software have gradually become the main office tools. Using Word writing documents, there will inevitably be errors in various formats and contents, proofreading errors will inevitably produce omissions. Therefore, the research of document format-checking plug-ins based on VSTO can help users to check the errors. Beginning with the characteristics of VSTO, the object hierarchy model of Word is analyzed firstly. Then, the implementation of the title format-checking, the main body of repeated phrases, paragraph formatting, and Table information checking are studied.

        Key words: VSTO; Format-Checking; Office Plug-in

        1 背景

        Microsoft Office是微軟公司提供的一套功能強(qiáng)大的辦公軟件,具有強(qiáng)大的文件處理能力,但是在處理部分業(yè)務(wù)內(nèi)容時,Office自動化程度不夠,功能組合不夠靈活等問題較為突出,因此一般情況下通常會開發(fā)一些功能插件輔助完成個人業(yè)務(wù),例如Excel中創(chuàng)建針對不同項目的預(yù)算工作表,Word的合同自動生成功能等。

        VSTO(Visual Studio Tools for Office )是一個用于創(chuàng)建自定義Office應(yīng)用程序的Visual Studio工具包,是VBA(Visual Basic for Application)的替代,這個工具包里面提供了許多類庫可以調(diào)用與Office客戶端進(jìn)行交互[1]。相比傳統(tǒng)的VBA,VSTO可以使用Visual studio開發(fā)環(huán)境中的眾多功能和CLR提供的內(nèi)存管理,垃圾回收等功能,使得可以開發(fā)性能更高,功能更加豐富的外接程序[2]。VSTO最早支持Office 2000開發(fā)相關(guān)組件,最新版本已經(jīng)支持Office 2015。VSTO可以開發(fā)文檔級自定義項和應(yīng)用程序級自定義項,文檔級自定義項是只和單一、特定的文檔相關(guān)聯(lián),應(yīng)用程序級外接程序與某個Microsoft Office應(yīng)用程序相關(guān)聯(lián)。

        Microsoft Office Word是一款強(qiáng)大的文字處理軟件,可以很好地處理常見的文字任務(wù),但是在處理繁瑣的、機(jī)械性的、智能性的任務(wù)時,功能支持較為不佳。在工作中,部分單位常要處理大量的文字任務(wù),文檔的格式問題極易忽略和漏改,這種“低級”問題常會給文檔閱讀者留下不好的印象,讓文檔寫作者頭疼不已。本文的研究針對Word的常見文檔格式檢查插件的開發(fā)技術(shù)。

        2 Word對象模型

        在Visual Studio中開發(fā)Word的解決方案時,是通過與Word的對象模型交互實現(xiàn)的,這種對象模型由Word的主互操作程序集中提供的類和接口組成,并且在Microsoft.Office.Intertop.Word命名空間中定義。這些對象排列在一個與用戶界面密切相關(guān)的層次結(jié)構(gòu)中,Word對象模型抽象圖如圖1所示。

        從圖1可以看出,對象模型存在重疊,這種層次關(guān)系可以方便開發(fā)者通過多種方式訪問相同類型的對象,例如要設(shè)置Bookmarks格式,可以訪問當(dāng)前選定內(nèi)容、當(dāng)前文檔的范圍。在對象層次模型中,Application對象代表Microsoft Word應(yīng)用程序,該對象的屬性可以控制Word環(huán)境;Document對象代表Word文檔及其所有內(nèi)容,是Word編程的中樞;Selection對象代表當(dāng)前選擇的區(qū)域,沒有選中區(qū)域時代表光標(biāo)插入點(diǎn),Selection對象可以表示不連續(xù)的區(qū)域;Range對象表示文檔的一個連續(xù)區(qū)域,一個文檔可以包含多個Range;Bookmarks是具有名稱的、可隱藏的書簽。圖1所示的對象層次結(jié)構(gòu)明確了對象之間的調(diào)用路徑和方式,通過這5個基本對象的屬性、方法實現(xiàn)對Word文檔的操作。

        3 插件功能的實現(xiàn)

        3.1 項目的建立

        建立Office操作項目的方式為通過Visual Studio開發(fā)平臺提供的模板,以C#語言開發(fā)Word2010為例,建立過程為“文件”→“新建項目”→“Visual C#”→“Office”→“2010”→“Word 2010 外接程序”→“輸入項目名稱”→完成。剛創(chuàng)建的VSTO外接程序只有一個ThisAddIn.cs文件,該文件即是一個宿主項,此宿主項提供對宿主應(yīng)用程序(Office Word)和成員的對象模型的訪問,可以通過宿主項添加數(shù)據(jù)綁定的能力和提供額外的事件來擴(kuò)展本地Office文檔。同時該類中有ThisAddIn_Startup和ThisAddIn_Shutdown兩個方法,ThisAddIn_Startup方法的邏輯是在加載外接程序時運(yùn)行的,VSTO外接程序主要是在該方法中調(diào)用運(yùn)行,ThisAddIn_Shutdown方法中的內(nèi)容是在卸載外接程序時運(yùn)行,例如警告對話框等[3]。新建的項目的頭部增加了如下兩行代碼:

        using Office = Microsoft.Office;

        using Microsoft.Office.Tools;

        using Word = Microsoft.Office.Interop.Word;

        此為Visual Studio自動引用的主互操作程序集(PIA),程序集中包含了Word的各級對象以及對象的屬性和方法,從而能夠與Office的COM對象交互。

        3.2 標(biāo)題格式

        標(biāo)題的章節(jié)號往往是手動添加,在修改文檔時,有時會調(diào)整章節(jié)順序,造成章節(jié)順序錯序,需要對標(biāo)題章節(jié)號進(jìn)行修改,手工修改容易因視覺疲勞產(chǎn)生疏漏,因此通過插件判別章節(jié)需要是否正確具有一定的實際意義。

        標(biāo)題序號的判斷過程為:如果是一級標(biāo)題,如果不是第一個標(biāo)題,則該一級標(biāo)題比上一個一級標(biāo)題大1,如果是第一個標(biāo)題則為1;如果是二級標(biāo)題,則此二級標(biāo)題的第一個部分和上一個一級標(biāo)題相同,第二個部分屬遞增模式,如果是三級標(biāo)題,則該標(biāo)題的前兩個部分和上一個二級標(biāo)題相同,第三個部分屬遞增模式。VSTO實現(xiàn)該過程的簡要過程如下:

        Word.Application app= Globals.ThisAddIn.Application;

        Word.Paragraphs paras = app.ActiveDocument.Paragraphs;

        int count=paras.Count;

        for(int k=1;k<=count;k++)

        {

        switch(paras[k].OutlineLevel)

        {

        case Word.WdOutlineLevel.wdOutlineLevel1:

        step1:字符串分割,取標(biāo)題序號,判斷序號格式是否正確

        step2:和上一個一級標(biāo)題比較,判斷序號是否遞增

        break;

        case Word.WdOutlineLevel.wdOutlineLevel2:

        case Word.WdOutlineLevel. wdOutlineLevel3:

        }

        VSTO向段落(paragraph)設(shè)置了大綱層次屬性,屬性用WdOutlineLevel枚舉(enum)集合表示,WdOutlineLevel集合包括9個級別的標(biāo)題和正文。在上文的實現(xiàn)過程中,可以通過判斷段落的大綱層次識別當(dāng)前段落是幾級標(biāo)題,然后通過正則表達(dá)式獲取標(biāo)題序號,判斷當(dāng)前序號的格式和內(nèi)容是否正確[4]。

        3.3 正文格式

        在文章寫作中,在整合不同來源的文章時,可能導(dǎo)致引入內(nèi)容和源內(nèi)容的格式不同,這種不同可能是行間距、字體大小、字體背景以及顏色的不同,如果手動檢查調(diào)整所有段落的格式,工作量大,部分錯誤可能被疏漏,因此需要研究一種自動化的統(tǒng)一設(shè)定段落格式的工具。

        在操作時,需要選中一個設(shè)定完畢格式的段落,然后選擇格式化所有正文段落。在實現(xiàn)時,首先保存選定段落的格式,然后依次判斷每個段落的大綱級別是不是段落,如果是就把該段落的格式設(shè)定為已保存的格式。

        Word.Paragraphs paras = app.ActiveDocument.Paragraphs;

        int count=paras.Count;

        var format= app.Selection.ParagraphFormat;

        for(int k=1;k<=count;k++)

        if(para[i]. OutlineLevel== wdOutlineLevel)

        {

        paras[i]. Format= format

        }

        在文檔寫作時,絕大多數(shù)時候字或詞組不會連續(xù)出現(xiàn),如果連續(xù)出現(xiàn),則可能是錯誤的,因此開發(fā)自動檢測重復(fù)字段的功能,向文檔寫作者提示重復(fù)字段具有現(xiàn)實意義。重復(fù)字段的檢查依賴正則表達(dá)式,開發(fā)時首先引入正則表達(dá)式的命名空間和相關(guān)類庫:

        using System.Text.RegularExpressions;

        然后取得當(dāng)前選定區(qū)域的內(nèi)容:

        string content = Globals.ThisAddIn.Application.ActiveDocument.Content;

        var words = Globals.ThisAddIn.Application.Selection.Words;

        設(shè)計正則表達(dá)式并將重復(fù)字段的背景色置位黃色的的實現(xiàn)過程如下:

        string pattern = @"(.{1,5})\1+[5]";

        Regex regex = new Regex(pattern);

        foreach (Match match in regex.Matches(input))

        {

        if (regex.IsMatch(input))

        {

        i = match.Index;

        l = match.Length;

        for(var k=I;i<=(i+l);i++)

        {

        words[k].HighlightColorIndex = Word.WdColorIndex.wdYellow;

        }

        }

        else{

        MessageBox.Show(“沒有重復(fù)詞組”)}

        }

        3.4 檢查表格中數(shù)字串

        在信息登統(tǒng)計時,往往會處理銀行卡號、手機(jī)號、身份證號等長度較長的數(shù)字串,這些數(shù)字信息中常有重復(fù)的連續(xù)數(shù)字出現(xiàn),導(dǎo)致多輸入或者少輸入若干位,通過插件檢測數(shù)字串的長度,進(jìn)行初步的錯誤排查,能較大程度降低減少信息核對的工作量。

        在功能開發(fā)時,如果當(dāng)前鼠標(biāo)未選中單元格集,則檢查當(dāng)前鼠標(biāo)所在單元格的列中的所有數(shù)字單元格的內(nèi)容,如果選中了單元格集,則只判斷當(dāng)前選中內(nèi)容,實現(xiàn)方法的主要過程如下所示:

        var cells = app.Selection.Range.Cells;

        int count=cells.Count;

        if (count == 1)

        {

        context = cells[k].Range.Text;

        length = context.Length-2;

        }

        string context;

        int length;

        for (int k=1;k<=count;k++)

        {

        context = cells[k].Range.Text;

        length = context.Length-2;

        MessageBox.Show(length.ToString());

        if (length != 11)

        {

        cells[k].Range.HighlightColorIndex = Word.WdColorIndex.wdRed;

        }

        }[6]

        上文的方法檢測了手機(jī)號的長度是否為11,在開發(fā)檢查身份證信息功能時,可以在此基礎(chǔ)上進(jìn)行功能擴(kuò)展。

        4 結(jié)束語

        相比VBA,VSTO有了更多的開發(fā)選擇,在強(qiáng)大的Visual Studio開發(fā)環(huán)境下,可以向Office系列的應(yīng)用程序增加和業(yè)務(wù)緊密相關(guān)的輔助性功能,也可以將應(yīng)用程序二次開發(fā)為一個完整的桌面程序。

        本文研究了VSTO在Word插件開發(fā)方面的應(yīng)用,實現(xiàn)了標(biāo)題序號檢查、正文格式檢查、重復(fù)內(nèi)容檢查、表格數(shù)字信息檢查等功能,能夠在一定程度上減少文檔寫作的工作量。VSTO強(qiáng)大的功能還需要進(jìn)一步研究,接下來的研究工作主要研究VSTO與數(shù)據(jù)庫的結(jié)合。

        參考文獻(xiàn):

        [1] McGrath K. VSTO開發(fā)指南[M]. 李永倫,譯.北京: 機(jī)械工業(yè)出版社, 2009: 5-7.

        [2] 張印. 基于VSTO的高校畢業(yè)論文格式化處理軟件的設(shè)計與實現(xiàn)[D]. 北京: 北京郵電大學(xué), 2012.

        [3] 張未未, 吳宇峰, 劉仁權(quán), 等. 基于VSTO技術(shù)的Office計時器插件的設(shè)計與實現(xiàn)[J]. 電子設(shè)計工程, 2016(11): 31-34,37.

        [4] Microsoft. the Word 2010 Primary Interop Reference[DB/OL].(2016-01-08).https://msdn.microsoft.com/en-us/library/ff597928(v=office.14).aspx.

        [5] Goyvaerts, Steven Levithan.正則表達(dá)式經(jīng)典實例[M]. 郭耀, 遲騁,譯. 北京: 人民郵電出版社, 2014: 25-28.

        [6] 周順, 朱成彪, 辛皓煒. 一種基于VSTO的Office操作題自動評分算法[J]. 電子制作, 2015(8): 102-103.

        日本岛国一区二区三区四区| 久久免费国产精品| 精品综合久久久久久8888| 美腿丝袜一区在线观看| 日本一区二区三级在线观看 | 国产精品无码久久久久久| 美女视频一区| 人妻少妇av中文字幕乱码免费| 少妇人妻无奈的跪趴翘起| 精品久久久久久久久午夜福利| 久草热8精品视频在线观看| 日韩人妻无码中文字幕一区| 久久久大少妇免费高潮特黄| 五月av综合av国产av| 成人无码区免费a片www| 欧美亚洲尤物久久综合精品| 午夜蜜桃视频在线观看| 综合色就爱涩涩涩综合婷婷| 日本强好片久久久久久aaa| 国产在线观看精品一区二区三区| 精品乱色一区二区中文字幕 | 国产女人91精品嗷嗷嗷嗷| 日本高清成人一区二区三区| 天天做天天爱夜夜爽女人爽 | 国产自产精品露脸刺激91在线| 精品国产车一区二区三区| 免费a级毛片在线播放| 亚洲一线二线三线写真| 在线丝袜欧美日韩制服| 国产色噜噜| 国产目拍亚洲精品二区| av在线免费观看蜜桃| 无码人妻丰满熟妇区五十路百度 | 激情第一区仑乱| 久久久久久国产精品免费网站| 蜜桃视频一区二区三区| 少妇久久久久久被弄高潮| 精品人妻无码一区二区色欲产成人| 素人激情福利视频| 日本中文一区二区在线| 精品国产人妻一区二区三区|