柳秋寒
【摘 要】Microsoft Office是微軟公司推出的系列辦公軟件,用于文字的處理、數(shù)據(jù)的整理以及幻燈片的播放等,現(xiàn)在已經(jīng)成為人們工作中必不可少的工具。但是企業(yè)的業(yè)務(wù)需求千變?nèi)f化,Office系列軟件原有的功能此時略顯不足,因此需要進行二次開發(fā),通過外部程序來操作Office文檔,同時調(diào)用Office組件的接口,實現(xiàn)一些較為復(fù)雜的功能。本文主要講述的是通過C#程序?qū)ord文檔進行操作的方法,實現(xiàn)文檔的打開,刪除,批量替換等功能。
【關(guān)鍵詞】Office;C#;批量替換
0 引言
在word文檔中有替換的功能,但是替換只能夠一次替換某一個詞,如果要多次替換的話則需要多次操作,在實現(xiàn)上較為麻煩。某翻譯公司現(xiàn)在有這樣的一個需求:將一些較為生僻的翻譯存儲在數(shù)據(jù)庫中,當(dāng)翻譯人員拿到一篇文檔的時候,只需要點擊程序上的一個按鈕,則該文檔中所有與數(shù)據(jù)庫中相匹配的詞匯自動轉(zhuǎn)化為對應(yīng)的英文翻譯。這樣的一個軟件能夠極大的減輕翻譯人員的工作,并且能夠使一些生僻翻譯得到統(tǒng)一。具體的步驟如下:
1 用C#打開word文檔
1.1 添加引用
創(chuàng)建word文檔的要用到微軟公司提供的Microsoft Word X Object Library,其中X代表的是word的版本號,如word 2003對應(yīng)的是11.0,word 2007對應(yīng)的是12.0,word 2013對應(yīng)的是15.0。本文以word 2013為例,在程序中選擇“添加引用”→“com”,選擇Microsoft Word 15.0 Object Library項目庫添加到程序中,然后在“解決方案資源管理器”面板下方會自動多出三個引用,分別為Microsoft.Office.Core、Microsoft.Office.Interop.Word 和 VBIDE,這代表項目添加成功。
1.2 添加using引用
在程序的開頭添加以下代碼:
using word=Microsoft.Office.Interop.Word;
using System.IO;
using System. Reflection;
1.3 定義全局對象
為了方便操作,這里定義兩個全局變量,分別為wordApp和wordDoc,它們分別表示的是word主進程和doc文檔,方法如下:
private Microsoft.Office.Interop.Word.ApplicationClass wordApp = null;
private Microsoft.Office.Interop.Word.Document wordDoc = null;
1.4 打開某個word文檔
在這里調(diào)用的是庫中自帶的Open()方法,該方法參數(shù)很多, 其中FileName、ReadOnly、isVisible為必填,分別代表文件的路徑、是否以只讀方式打開、文件是否可見,其他參數(shù)為可選,在這里統(tǒng)一用missing變量代替。代碼如下:
public void OpenWordDoc(String fileName)
{
wordApp = new word.ApplicationClass();
wordDoc = null;
object missing = System.Reflection.Missing.Value;
object FileName =fileName;
object readOnly = false;
object isVisible = true;
wordDoc = wordApp.Documents.Open(ref FileName, ref missing, ref readOnly,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref isVisible, ref missing,
ref missing, ref missing, ref missing);
wordDoc.Activate();
wordApp.Visible = true;
}
2 用C#實現(xiàn)替換操作
替換是word中的一個常見操作,它由兩個部分組成,一是查找關(guān)鍵字,二是將查詢到的關(guān)鍵字替換成別的文本。
2.1 查找關(guān)鍵字
查找文檔的關(guān)鍵字用到了word庫中的Find. Execute方法。該方法參數(shù)眾多,其中FindText、Forward參數(shù)必須要賦值,分別代表要查找的關(guān)鍵字和是否全局查找。
word.find.Execute(ref findText, ref matchCase, ref matchWholeWord,
ref matchWildcards, ref matchSoundsLike, ref matchAllWordForms,
ref forward, ref wrap, ref format, ref replaceWith, ref replace,ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl);
2.2 替換
相比較查找,替換多了三個參數(shù),分別為MatchWildcards、ReplaceWith和Replace。MatchWildcards為bool類型,如果該屬性為true,則查找找的文字包含特殊搜索操作符。相當(dāng)于“查找和替換”對話框中的“使用通配符”復(fù)選框;ReplaceWith代表替換的文本;Object Replace=Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll。含義為替換找到的所有項。
if (this.wordDoc.Content.Find.Execute(ref FindText,ref MissingValue,
ref MissingValue, ref MatchWildcards,
ref MissingValue, ref MissingValue,
ref MissingValue, ref MissingValue, ref MissingValue,
ref ReplaceWith, ref Replace,
ref MissingValue, ref MissingValue))
3 總結(jié)
利用C#編寫外部程序來操作word文檔可以實現(xiàn)更為復(fù)雜的程序功能,利用Office本身提供的庫函數(shù)非常方便,操作簡單,一方面實現(xiàn)了辦公自動化,另一方面提升了工作效率。本文主要介紹了對于文檔打開和替換功能的操作,在替換的過程中進行了優(yōu)化,如關(guān)鍵字變紅加粗以突出顯示,循環(huán)查找等,實現(xiàn)了最初的目的。
【參考文獻】
[1]張華、賈志娟.項目開發(fā)實踐[J].中國鐵道出版社,2011(03).
[2]王昊亮.Visual C#程序設(shè)計教程[J].清華大學(xué)出版社,2012(10).
[3]郭勝.C#.NET程序設(shè)計教程[J].北京工業(yè)大學(xué)出版社,2013(05).
[責(zé)任編輯:湯靜]