Apache poi操作doc,docx,xsl,xslx文件

为了对文件内容进行索引,必须先抽取出文件中文本。我们使用Apache POI提供的API来抽取office文件(DOC, DOCX, XLS, XLSX, PPT, PPTX)中的文本。很多人在使用开源API的时候都很纳闷,Javadocs那么大,我要的API在到底在哪个类里边。即使找到了也不明白这么多构造函数该用哪个创建想要的对象。本文给大家讲一下POI中我们该如何创建抽取(DOC, DOCX, XLS, XLSX, PPT, PPTX)的对象。
[java]  view plain  copy
  1. poi-3.10-beta1-20130628.jar  
  2. poi-excelant-3.10-beta1-20130628.jar  
  3. poi-ooxml-3.10-beta1-20130628.jar  
  4. poi-ooxml-schemas-3.10-beta1-20130628.jar  
  5. poi-scratchpad-3.10-beta1-20130628.jar  
  6. /lib  
  7. /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对象来创建
               

           样例代码:

[java]  view plain  copy
  1. <span style="font-family:Times New Roman; font-size:14px">InputStream inp = new FileInputStream(this.filePath);  
  2. HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));  
  3. extractor = new ExcelExtractor(wb);  
  4. //filter formulas from the results  
  5. this.extractor.setFormulasNotResults(true);  
  6. //filter Sheet name from the results  
  7. this.extractor.setIncludeSheetNames(false);  
  8. content = this.extractor.getText();</span>  

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对象


转载文章地址:http://blog.csdn.net/HarryHuang1990/article/category/1104274

Apache POI是一个Java库,用于处理Microsoft Office文件格式,包括DOC (Word文档) 和 DOCX (新的Word文档格式)。如果你想要将DOC格式转换为DOCXPOI提供了一个方便的功能,特别是通过`HSSFWorkbook`和`XSSFWorkbook`对象。 以下是使用Apache POI进行DOCDOCX转换的基本步骤: 1. **添加依赖**:首先需要在你的项目中添加Apache POI的依赖。如果你使用Maven,可以在pom.xml文件中添加: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>最新版本号</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>最新版本号</version> </dependency> ``` 2. **读取源DOC文件**: 使用`HSSFWorkbook`打开输入的DOC文档,例如: ```java FileInputStream inputStream = new FileInputStream("input.doc"); HSSFWorkbook workbook = new HSSFWorkbook(inputStream); ``` 3. **创建目标DOCX文档**: 创建一个新的`XSSFWorkbook`实例,这将是转换后的DOCX文档。 ```java XSSFWorkbook outputStreamWorkbook = new XSSFWorkbook(); ``` 4. **复制内容**: 遍历源工作簿中的每个Sheet(表格),然后将单元格数据复制到DOCX的工作表中。 5. **保存转换后的文件**: 将`XSSFWorkbook`的内容写入新的DOCX文件: ```java try (OutputStream outputStream = new FileOutputStream("output.docx")) { outputStreamWorkbook.write(outputStream); } ``` 6. **关闭资源**: ```java workbook.close(); outputStreamWorkbook.close(); ``` 注意:这是一个基本示例,实际操作中可能需要处理错误、异常以及更复杂的格式调整。Apache POI提供了丰富的API来处理各种办公文档细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值