如何用C#提取Word、Excel等文件的文本(无需安装Office)
之所以要安装Indexing Service服务,是因为最近在.NET中用到了IFilter来读取Word文件的文字。
精简XP系统如何安装Indexing Service服务:
到网上找与现有系统一致的原版系统镜像,直接运行镜像安装系统,选择“安装更新”即可。
“安装更新”实际的效果是保留现有程序,自动安装缺少的系统组件或者服务(因此多出的服务和启动项用工具处理处理就没事了,装完之后系统补丁都没了得再装)。
提取文本的方法详细见老外的开源项目:Using-IFilter-in-C#。
该方法读取Word文本内容无需安装Office,完美提取中文,读取速度快,即使Word中有表格、图片。
也支持Excel、PPT,Txt等文件。(测试环境:XP Professional SP3、Server 2003 Enterprise SP1,Server 2008 Enterprise SP2)
实际测试还发现即使Indexing Service服务未启动也不影响功能,但是系统至少得有Indexing Service服务(XP系统之后的系统对应Windows Search服务,见MSDN资料)。
园子里有人已经在我之前写过使用IFilter提取Word文本的文章,只是他的程序对中文标点支持不好,目前已经有不少人讨论和测试过:.net 下如何将文档文件(Word, Pdf等) 中的文本提取出来
我用这个提取文本的方法实现了不使用Word的COM组件(使用COM组件的方法见Microsoft.Office.Interop.Word的方法),即不安装Word统计Word文档的字数。
正则表达式:Regex.Matches(temStr, @"(?i)[a-z_'0-9-]+").Count + Regex.Matches(temStr, @"[\u0391-\uFFE5]").Count+Regex.Matches(temStr, @"(?i)[^a-z_'0-9\u0391-\uFFE5-]+").Count;//单词数+汉字数(含中文标点)+其他,正则表达式参考的CSDN相关帖子。