APP下载

C#对Office文档的操作方法

2016-03-30柳秋寒

科技视界 2016年2期
关键词:微软公司关键字文档

柳秋寒

【摘 要】Microsoft Office是微软公司推出的系列办公软件,用于文字的处理、数据的整理以及幻灯片的播放等,现在已经成为人们工作中必不可少的工具。但是企业的业务需求千变万化,Office系列软件原有的功能此时略显不足,因此需要进行二次开发,通过外部程序来操作Office文档,同时调用Office组件的接口,实现一些较为复杂的功能。本文主要讲述的是通过C#程序对word文档进行操作的方法,实现文档的打开,删除,批量替换等功能。

【关键词】Office;C#;批量替换

0 引言

在word文档中有替换的功能,但是替换只能够一次替换某一个词,如果要多次替换的话则需要多次操作,在实现上较为麻烦。某翻译公司现在有这样的一个需求:将一些较为生僻的翻译存储在数据库中,当翻译人员拿到一篇文档的时候,只需要点击程序上的一个按钮,则该文档中所有与数据库中相匹配的词汇自动转化为对应的英文翻译。这样的一个软件能够极大的减轻翻译人员的工作,并且能够使一些生僻翻译得到统一。具体的步骤如下:

1 用C#打开word文档

1.1 添加引用

创建word文档的要用到微软公司提供的Microsoft Word X Object Library,其中X代表的是word的版本号,如word 2003对应的是11.0,word 2007对应的是12.0,word 2013对应的是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文档

在这里调用的是库中自带的Open()方法,该方法参数很多, 其中FileName、ReadOnly、isVisible为必填,分别代表文件的路径、是否以只读方式打开、文件是否可见,其他参数为可选,在这里统一用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#实现替换操作

替换是word中的一个常见操作,它由两个部分组成,一是查找关键字,二是将查询到的关键字替换成别的文本。

2.1 查找关键字

查找文档的关键字用到了word库中的Find. Execute方法。该方法参数众多,其中FindText、Forward参数必须要赋值,分别代表要查找的关键字和是否全局查找。

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 替换

相比较查找,替换多了三个参数,分别为MatchWildcards、ReplaceWith和Replace。MatchWildcards为bool类型,如果该属性为true,则查找找的文字包含特殊搜索操作符。相当于“查找和替换”对话框中的“使用通配符”复选框;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 总结

利用C#编写外部程序来操作word文档可以实现更为复杂的程序功能,利用Office本身提供的库函数非常方便,操作简单,一方面实现了办公自动化,另一方面提升了工作效率。本文主要介绍了对于文档打开和替换功能的操作,在替换的过程中进行了优化,如关键字变红加粗以突出显示,循环查找等,实现了最初的目的。

【参考文献】

[1]张华、贾志娟.项目开发实践[J].中国铁道出版社,2011(03).

[2]王昊亮.Visual C#程序设计教程[J].清华大学出版社,2012(10).

[3]郭胜.C#.NET程序设计教程[J].北京工业大学出版社,2013(05).

[责任编辑:汤静]

猜你喜欢

微软公司关键字文档
浅谈Matlab与Word文档的应用接口
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
Task 3
有人一声不吭向你扔了个文档
成功避开“关键字”
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
美法院要求微软提交海外数据
疯狂QA
智能垃圾箱