解析Office文档
我希望能够阅读办公文档的内容(对于自定义爬虫)。
需要可读的office版本是2000年到2007年的。我主要想爬取word、excel和powerpoint文档。
我不想检索格式,只想检索其中的文本。
该爬虫基于 lucene.NET(如果可以提供一些帮助)并且是 C# 语言。
我已经使用 iTextSharp 来解析 PDF
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您已经在使用 Lucene.NET,您可能只想利用现有的各种 IFilter 来执行此操作。 看一下开源SeekAFile 项目。 它将向您展示如何使用 IFilter 打开 IFilter 可用的任何文件类型并从中提取此信息。 有适用于 Word、Excel、Powerpoint、PDF 和大多数其他常见文档类型的 IFilter。
If you're already using Lucene.NET you might just want to take advantage of the various IFilters already available for doing this. Take a look at the open source SeekAFile project. It will show you how to use an IFilter to open and extract this information from any filetype where an IFilter is available. There are IFilters for Word, Excel, Powerpoint, PDf, and most of the other common document types.
有一个优秀的开源项目 POI,唯一的缺点 - 它是为 Java 编写的。
.net 端口 在某种程度上还处于测试阶段。
There is an excelent open source project POI, only drawback - it is written for Java.
The .net port is somehow very beta.
这里列出了用于将 Word 文档转换为纯文本的各种工具,然后您就可以执行此操作无论与.
Here is a good list of various tools for converting Word documents to plaintext, which you can then do whatever with.
这是 Krishnan LN 发表的 关于 c-charpcorner 的精彩小帖子它提供了使用 Word Primary Interop 程序集从 Word 文档中获取文本的基本代码。
基本上,您从 Word 文档中获取“WholeStory”属性,将其粘贴到剪贴板,然后将其从剪贴板中拉出,同时将其转换为文本格式。 剪贴板步骤大概是为了去除格式。
对于 PowerPoint,您可以执行类似的操作,但需要循环播放幻灯片,然后为每张幻灯片循环播放形状,并获取每个形状中的“TextFrame.TextRange.Text”属性。
对于 Excel,由于 Excel 可以是 OleDb 数据源,因此使用 ADO.NET 最简单。 这是Laurent Bugnion 的好帖子,介绍了这项技术。
Here's a nice little post on c-charpcorner by Krishnan LN that gives basic code to grab the text from a Word document using the Word Primary Interop assemblies.
Basically, you get the "WholeStory" property out of the Word document, paste it to the clipboard, then pull it from the clipboard while converting it to text format. The clipboard step is presumably done to strip out formatting.
For PowerPoint, you do a similar thing, but you need to loop through the slides, then for each slide loop through the shapes, and grab the "TextFrame.TextRange.Text" property in each shape.
For Excel, since Excel can be an OleDb data source, it's easiest to use ADO.NET. Here's a good post by Laurent Bugnion that walks through this technique.
您也可以考虑查看 DtSearch (www.DtSearch.com)。 虽然它主要是一个搜索工具,但它在从大量文件类型中提取文本方面表现出色,并且比 Oracle/Stellent OutsideIn 技术或 Autonomy 的同等技术等其他选项便宜得多。
我已经使用 DtSearch 多年,发现它对于此类任务来说是不可或缺的。
You might also consider checking out DtSearch (www.DtSearch.com). Although it is primarily a searching tool, it does a great job of extracting text from a large number of file types and is considerably cheaper than other options like the Oracle/Stellent OutsideIn technology or the equivalent from Autonomy.
I've been using DtSearch for years and find it indispensible for this type of task.