使用C#自带的Microsoft.Office.Interop.Word类对word文档进行操作

编程入门 行业动态 更新时间:2024-10-28 12:28:07

从网上拼拼凑凑,汇总一下目前我的小项目中需要用到的几种方法,以后有新的需求还会再更新。

  1. 首先引入一下几个包:
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using System.Text.RegularExpressions;

最后的“System.Text.RegularExpressions”用于字符串的正则表达式检查;
2. 在winform程序窗体类load()方法之前,创建以下变量;

MSWord.Application wordApp;                   //Word应用程序变量 
MSWord.Document wordDoc;                  //Word文档变量
Object Nothing;//存放Missing.Value;
Regex reg = new Regex(@"[\u4e00-\u9fa5]");//判断是否有中文的正则表达式
  1. 构造函数
public WordHelper()
        {
            OpenApp();
        }```
 4.openApp()

public void OpenApp()
{
wordApp = new MSWord.ApplicationClass(); //初始化
wordApp.Visible = false;//使文档可见(程序运行时,word文档不会闪屏)
}```

  1. 打开指定路径的word文档
public void OpenWord(string str_path)
        {
            wordDoc = wordApp.Documents.Open(str_path,Missing.Value);
        }```
 5. 关闭word文档

wordDoc.Close(Nothing, Nothing, Nothing);```

  1. 关闭word应用
public void appQuit()//完全清除word占用资源
        {
            try
            {
                wordApp.Quit(Nothing, Nothing, Nothing);
            }
            catch (Exception)
            {
                throw;
            }
        }```


 7. 全文查找字符串

//true为查找到,false为未查找到
public bool checkText(string des_text)
{
bool ret;
object nullobj = Type.Missing;
#region 1、查找常规文本
wordApp.Selection.Find.ClearFormatting();
wordApp.Selection.Find.Text = des_text;
ret =wordApp.Selection.Find.Execute(ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj);
#endregion
wordDoc.Close(Nothing, Nothing, Nothing);
return ret;
}```

  1. 替换(当时我还有其他功能,主函数有所剪辑,所有传入参数并未完全使用)
 public  void replaceNum(string old_num,string new_num,string source_path,string new_path,bool isSaveAs)
        {
            object nullobj = Type.Missing;
            object objReplace;
            #region 1、查找常规文本
            wordApp.Selection.Find.ClearFormatting();
            wordApp.Selection.Find.Replacement.ClearFormatting();
            wordApp.Selection.Find.Text = old_num;
            wordApp.Selection.Find.Replacement.Text = new_num;
            objReplace = MSWord.WdReplace.wdReplaceAll;
            wordApp.Selection.Find.Execute(ref nullobj, ref nullobj, ref nullobj,
                                        ref nullobj, ref nullobj, ref nullobj,
                                        ref nullobj, ref nullobj, ref nullobj,
                                        ref nullobj, ref objReplace, ref nullobj,
                                        ref nullobj, ref nullobj, ref nullobj);
            //保存
            if (isSaveAs)
            {
                wordDoc.SaveAs2(new_path);
                wordDoc.Close(Nothing, Nothing, Nothing);
            }
            else
            {
                wordDoc.Save();
                wordDoc.Close(Nothing, Nothing, Nothing);
                File.Move(source_path, new_path);
            }
        }```

 9. 移动文档,当传入的两个参数的上一级目录相同时,也可作为重命名操作

public void moveDoc(string src,string des)
{
try
{
File.Move(src,des);
}
catch (Exception)
{
throw;
}
}

获取上一级目录的方法为:

new_path1 = Path.GetDirectoryName(new string(src_path));

目前就这么多功能。
PS,如果wordApp = new MSWord.ApplicationClass(); //初始化报错,错误描述如下:错误	2	无法嵌入互操作类型“Microsoft.Office.Interop.Word.ApplicationClass”。请改用适用的接口。	那么一定要进入项目的引用目录下,找到之前添加的引用:Microsoft.Office.Interop.Word,在其属性中有一项嵌入互操作型:true,将true改成false即可。

 
 

更多推荐

使用C#自带的Microsoft.Office.Interop.Word类对word文档进行操作

本文发布于:2023-06-14 06:00:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1445007.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自带   操作   文档   Microsoft   Interop

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!