热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用ApachePOI抽取OFFICE文本(DOC,DOCX,XLS,XLSX,PPT,PPTX)——DesktopSearch开发笔记【经验积累】

为了对文件内容进行索引,必须先抽取出文件中文本。我们使用ApachePOI提供的API来抽取office文件(DOC,DOCX,XLS,XLSX,PPT,PPTX)中的文本。很多人在使用开
为了对文件内容进行索引,必须先抽取出文件中文本。我们使用Apache POI提供的API来抽取office文件(DOC, DOCX, XLS, XLSX, PPT, PPTX)中的文本。很多人在使用开源API的时候都很纳闷,Javadocs那么大,我要的API在到底在哪个类里边。即使找到了也不明白这么多构造函数该用哪个创建想要的对象。本文给大家讲一下POI中我们该如何创建抽取(DOC, DOCX, XLS, XLSX, PPT, PPTX)的对象。
  • 下载Apache POI(http://poi.apache.org/download.html#POI-3.10-beta2)
  • 把下面5个jar包和两个lib文件夹中的jar导入项目classpath
poi-3.10-beta1-20130628.jar
poi-excelant-3.10-beta1-20130628.jar
poi-ooxml-3.10-beta1-20130628.jar
poi-ooxml-schemas-3.10-beta1-20130628.jar
poi-scratchpad-3.10-beta1-20130628.jar
/lib
/ooxml-lib


DOC

org.apache.poi.hwpf.extractor.WordExtractor

     这个类只能处理word 2003文档(.doc)
     (1) 使用ExtractorFactory.createExtractor(InputStream) 创建抽取对象,返回的是公共接口对象,因此强制转换
               InputStream fis = new FileInputStream(filePath);
               WorderExtractor extractor = (WordExtractor) ExtractorFactory.createExtractor(fis);
     (2) 使用WordExtractor创建抽取对象
                
                介绍一下最后两种:
                最后第二种接收InputStream来创建对象;
                最后一种接收POIFSFileSystem来创建对象:
                        
                         POIFSFileSystem也接收InputStream来创建对象。
                 
                 回过头来看看最后第三个构造函数,接收HWPFDocument来创建对象;
                         
                         HWPFDDocument通过接收InputStream或者POIFSFileSystem来创建对象。


DOCX 

org.apache.poi.POITextExtractor

        org.apache.poi.POIXMLTextExtractor
                org.apache.poi.xwpf.extractor.XWPFWordExtractor

      这个类能够处理excel2007+(.docx)

     (1)该类对象的父类可以使用ExtratorFactory生成,但需要接收的参数是个virtual 对象OPCPackage,该对象不好确定。因此我们直接使用(2)中的方法创建对象
     (2)新建XWPFWordExtractor对象
               
                我们使用第二个构造函数,通过接收XWPFDocument对象来创建
                     
                      XWPFDocument可以接收inputStream对象。


XLS

org.apache.poi.hssf.extractor.ExcelExtractor

     这个类只能处理excel 2003(.xls)
     (1)同DOC,通过ExtractorFactory创建
     (2)新建ExcelExtractor对象
               
               1)同DOC,通过接收POIFSFileSystem来创建对象
               2)通过接收HSSFWorkbook来创建对象
                    
                    HSSFWorkbook对象可以通过接收POIFSFileSystem或者InputStream对象来创建
               

           样例代码:

InputStream inp = new FileInputStream(this.filePath);
HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
extractor = new ExcelExtractor(wb);
//filter formulas from the results
this.extractor.setFormulasNotResults(true);
//filter Sheet name from the results
this.extractor.setIncludeSheetNames(false);
cOntent= this.extractor.getText();
XLSX

org.apache.poi.POITextExtractor

       org.apache.poi.POIXMLTextExtractor
                org.apache.poi.xssf.extractor.XSSFExcelExtractor



         直接新建XSSFExcelExtractor对象:
               
               通过接收XSSFWorkbook对象来创建:
                    
                     发现XSSFWorkbook可以接收inputStream对象


PPT

org.apache.poi.hslf.extractor.PowerPointExtractor

          (1)同DOC,用ExtractorFactory创建对象
          (2)直接使用PowerPointExtractor创建对象
             
               通过接收HSLFSlideShow对象、POIFSFileSystem对象或文件名即可创建。               


PPTX

org.apache.poi.POITextExtractor

         org.apache.poi.POIXMLTextExtractor
                org.apache.poi.xslf.extractor.XSLFPowerPointExtractor



           同XLSX,直接创建XSLFPowerPointExtractor对象
               
               (1)接收XMLSlideShow对象
                         
                             通过接收InputStream来创建XMLSlideShow对象

               (2)接收XSLFSlideShow对象
                           
                              通过接收文件路径即可创建XSLFSlideShow对象











推荐阅读
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
author-avatar
非策不劃小子白
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有