C#根据关键字检索本地word文档


  1        /// <summary>
2 /// 检索根目录下的子目录及其所有文件,并在datagridview中显示文档名称及路径--递归调用
3 /// </summary>
4 /// <param name="rootPath">根目录</param>
5 /// <param name="strKey">关键字包</param>
6 private void GetAllFiles(string rootPath,List<string> strKey)
7 {
8 DirectoryInfo dir = new DirectoryInfo(rootPath);
9 string[] dirs = System.IO.Directory.GetDirectories(rootPath);//得到所有子目录
10 foreach (string di in dirs)
11 {
12 GetAllFiles(di,strKey);
13 }
14 FileInfo[] files = dir.GetFiles("*.doc"); //查找文件
15 //遍历每个word文档
16 foreach (FileInfo fi in files)
17 {
18 string filename = fi.Name;
19 string filePath = fi.FullName;
20 object filepath = filePath;
21 filename = SearchDoc.SearchInDoc(filepath, strKey, filename); //调用检索文档关键字的方法,并返回检索出的文档名称
22 if (filename != "")
23 {
24 dtBGMC.Rows.Add(filename, filepath); //datagridview逐行显示检索出来的结果
25 }
26 }
27 }
28
29
30
31
32 /// <summary>
33 /// search in a DOC file(查询DOC文件的内容)
34 /// </summary>
35 /// <param name="filepath">文档路径</param>
36 /// <param name="strKey">要搜索的关键字数组</param>
37 /// <param name="filename">文档名称</param>
38 /// <returns></returns>
39 public static string SearchInDoc(object filepath, List<string> strKey, string filename)
40 {
41 string KeyInfilename = "";
42 object MissingValue = System.Reflection.Missing.Value;//Type.Missing;
43 try
44 {
45 wp = new Microsoft.Office.Interop.Word.ApplicationClass();
46 wd = wp.Documents.Open(ref filepath, ref MissingValue,
47 ref readOnly, ref MissingValue,
48 ref MissingValue, ref MissingValue,
49 ref MissingValue, ref MissingValue,
50 ref MissingValue, ref MissingValue,
51 ref MissingValue, ref MissingValue,
52 ref MissingValue, ref MissingValue,
53 ref MissingValue, ref MissingValue);
54 Microsoft.Office.Interop.Word.Find wfnd;
55
56 if (wd.Paragraphs != null && wd.Paragraphs.Count > 0)
57 {
58 int keyscount = 0;
59 for (int i = 0; i < strKey.Count; i++) //循环关键字数组
60 {
61 for (int j = 1; j <= wd.Paragraphs.Count; j++)
62 {
63 wfnd = wd.Paragraphs[j].Range.Find;
64 wfnd.ClearFormatting();
65 wfnd.Text = strKey[i].ToString();
66 if (wfnd.Execute(ref MissingValue, ref MissingValue, ref MissingValue, ref MissingValue,
67 ref MissingValue, ref MissingValue, ref MissingValue, ref MissingValue,
68 ref MissingValue, ref MissingValue, ref MissingValue, ref MissingValue,
69 ref MissingValue, ref MissingValue, ref MissingValue))
70 {
71 keyscount++;
72 break;
73 }
74 }
75 }
76 if (keyscount == strKey.Count)
77 {
78 KeyInfilename = filename;
79 }
80 }
81 }
82 catch (Exception ex)
83 {
84 throw new Exception(ex.Message);
85 }
86 finally
87 {
88 if (wd != null)
89 {
90 wd.Close(ref MissingValue, ref MissingValue, ref MissingValue);
91 System.Runtime.InteropServices.Marshal.ReleaseComObject(wd);
92 wd = null;
93 }
94
95 if (wp != null)
96 {
97 wp.Quit(ref MissingValue, ref MissingValue, ref MissingValue);
98 System.Runtime.InteropServices.Marshal.ReleaseComObject(wp);
99 wp = null;
100 }
101
102 GC.Collect();
103 }
104 return KeyInfilename;
105 }
106 }
107 }

C#根据关键字检索本地word文档,布布扣,bubuko.com

时间: 2024-10-26 10:04:11

C#根据关键字检索本地word文档的相关文章

用lucene.net根据关键字检索本地word文档

目前在做一个winform小软件,其中有一个功能是能根据关键字检索本地保存的word文档.第一次是用com读取word方式(见上一篇文章),先遍历文件夹下的word文档,读取每个文档时循环关键字查找,结果可想而知效率很慢.检索结果是一条接一条显示出来的o(>_<)o ~~.连菜鸟级别的自己看到这效率都觉得很无语.然后想到计算机的本地搜索及google,百度搜索引擎,它们能做到在海量文件中快速搜到匹配某些关键字的文件,应该是运用其它比较先进成熟的技术来实现.于是上网搜了好多资料,发现有一种叫lu

C# 利用Aspose.Words .dl将本地word文档转化成pdf

下载Aspose.Words .dll  http://pan.baidu.com/s/1gfr1vnP 在vs2010中新建窗体应用程序,命名为 wordpdf 添加Aspose.Words .dll  引用 编写代码 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using Sys

在项目中利用TX Text Control进行WORD文档的编辑显示处理

在很多文档管理的功能模块里面,我们往往需要对WORD稳定进行展示.编辑等处理,而如果使用微软word控件进行处理,需要安装WORD组件,而且接口使用也不见得简单易用,因此如果有第三方且不用安装Office的能够展示WORD及进行编辑,那是比较不错的选择,TX Text Control就是这样的控件,本文就是基于这个控件的使用,实现在文档管理项目中的应用. 1.TX Text Control的介绍及使用 TX Text Control是一款功能类似于 MS Word 的文字处理控件,包括文档创建.

Asp.net 在word文档每页指定位置插入图片(二)

word文档插入每页插入图片实现了,本地运行是OK,但是发布到IIS上就报错了, 错误信息为:  检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80040154 没有注册类 经过查资料发现要在服务器上安装word相关组件或者直接安装Office ,没有找到相关组件,就在服务器安装了Office.安装完成后,又报错了 错误信息为:检索 COM 类工厂中 CLSID 为 {000209FF-00

将html转换为word文档的几种方式

1 基于wps直接将页面信息下载成word文档 1 public void test() 2 { 3 4 WPS.Application wps = null; 5 try 6 { 7 wps = new WPS.Application(); 8 } 9 catch (Exception ex) 10 { 11 return; 12 } 13 var httpurl = "http://www.baidu.com"; 14 WPS.Document doc = wps.Document

JSP实现word文档的上传,在线预览,下载

前两天帮同学实现在线预览word文档中的内容,而且需要提供可以下载的链接!在网上找了好久,都没有什么可行的方法,只得用最笨的方法来实现了.希望得到各位大神的指教.下面我就具体谈谈自己的实现过程,总结一下学习中的收获. 我相信很多程序员都遇到过,有些word文档希望直接在浏览器中打开进行预览,但是浏览器往往不是很配合,直接就提示下载,不像pdf文档,浏览器可以直接进行预览.Word文档甚至始终都会通过本地的Office软件打开.那么,问题来了,如何可以在线浏览word文档呢? 其实,我在最初的时候

ASP.NET生成WORD文档,服务器部署注意事项

网上转的,留查备用,我服务器装的office2007所以修改的是Microsoft Office word97 - 2003 文档这一个. ASP.NET生成WORD文档服务器部署注意事项 1.Asp.net 2.0在配置Microsoft Excel.Microsoft Word应用程序权限时 error: 80070005 和8000401a 的解决总   2007-11-01 11:30  检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-00000

php在程序中把网页生成word文档并提供下载

在这篇文章中主要解决两个问题: 1:在php中如何把html中的内容生成到word文档中 2:php把html中的内容生成到word文档中时,不居中显示问题,即会默认按照web视图进行显示. 3:php把html中的内容生成到word文档中时,相关样式不兼容问题 正文:    echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"  xmlns:w="urn:schemas-microsoft-com:

Java Web项目中使用Freemarker生成Word文档

Web项目中生成Word文档的操作屡见不鲜,基于Java的解决方案也是很多的,包括使用Jacob.Apache POI.Java2Word.iText等各种方式,其实在从Office 2003开始,就可以将Office文档转换成XML文件,这样只要将需要填入的内容放上${}占位符,就可以使用像Freemarker这样的模板引擎将出现占位符的地方替换成真实数据,这种方式较之其他的方案要更为简单. 下面举一个简单的例子,比如在Web页面中填写个人简历,然后点击保存下载到本地,效果图如下所示. 打开下