`
hz_chenwenbiao
  • 浏览: 1010170 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用POI读取Word207和Excel2007的例子 (转)

阅读更多

天在写全文检索功能时,POI读取Word2007和Excel2007文档时遇到问题,于是扩展了一下原来的功能,以下是使用POI读取Word2007和Excel2007的例子:

package com.test; 

/** 
* 需要的jar包: 
* poi-3.0.2-FINAL-20080204.jar 
* poi-contrib-3.0.2-FINAL-20080204.jar 
* poi-scratchpad-3.0.2-FINAL-20080204.jar 
* poi-3.5-beta6-20090622.jar 
* geronimo-stax-api_1.0_spec-1.0.jar 
* ooxml-schemas-1.0.jar 
* openxml4j-bin-beta.jar 
* poi-ooxml-3.5-beta6-20090622.jar 
* xmlbeans-2.3.0.jar 
* dom4j-1.6.1.jar 
*/ 

import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 

import org.apache.poi.POIXMLDocument; 
import org.apache.poi.POIXMLTextExtractor; 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.hwpf.extractor.WordExtractor; 
import org.apache.poi.openxml4j.exceptions.OpenXML4JException; 
import org.apache.poi.openxml4j.opc.OPCPackage; 
import org.apache.poi.xssf.usermodel.XSSFCell; 
import org.apache.poi.xssf.usermodel.XSSFRow; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
import org.apache.poi.xwpf.extractor.XWPFWordExtractor; 
import org.apache.xmlbeans.XmlException; 

public class WordAndExcelExtractor { 
public static void main(String[] args){ 
  try{ 
   String wordFile = "D:/松山血战.docx"; 
   String wordText2007 = WordAndExcelExtractor.extractTextFromDOC2007(wordFile); 
   System.out.println("wordText2007======="+wordText2007); 
   
   InputStream is = new FileInputStream("D:/XXX研发中心技术岗位职位需求.xls");   
   String excelText = WordAndExcelExtractor.extractTextFromXLS(is);   
   System.out.println("text2003==========" + excelText); 
   
   String excelFile = "D:/Hello2007.xlsx";   
   String excelText2007 = WordAndExcelExtractor.extractTextFromXLS2007(excelFile); 
   System.out.println("excelText2007==========" + excelText2007); 

   
  }catch(Exception e ){ 
   e.printStackTrace(); 
  } 
} 

/** 
  * @Method: extractTextFromDOCX 
  * @Description: 从word 2003文档中提取纯文本 
  * 
  * @param 
  * @return String 
  * @throws 
  */ 
    public static String extractTextFromDOC(InputStream is) throws IOException { 
        WordExtractor ex = new WordExtractor(is); //is是WORD文件的InputStream 

        return ex.getText(); 
    } 

/** 
  * @Method: extractTextFromDOCX 
  * @Description: 从word 2007文档中提取纯文本 
  * 
  * @param 
  * @return String 
  * @throws 
  */ 
    public static String extractTextFromDOC2007(String fileName) throws IOException, OpenXML4JException, XmlException { 
     OPCPackage opcPackage = POIXMLDocument.openPackage(fileName); 
     POIXMLTextExtractor ex = new XWPFWordExtractor(opcPackage);  

        return ex.getText(); 
    } 

/** 
  * @Method: extractTextFromXLS 
  * @Description: 从excel 2003文档中提取纯文本 
  * 
  * @param 
  * @return String 
  * @throws 
  */ 
    @SuppressWarnings("deprecation") 
private static String extractTextFromXLS(InputStream is) 
        throws IOException { 
        StringBuffer content  = new StringBuffer(); 
        HSSFWorkbook workbook = new HSSFWorkbook(is); //创建对Excel工作簿文件的引用 

        for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) { 
            if (null != workbook.getSheetAt(numSheets)) { 
                HSSFSheet aSheet = workbook.getSheetAt(numSheets); //获得一个sheet 

                for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) { 
                    if (null != aSheet.getRow(rowNumOfSheet)) { 
                        HSSFRow aRow = aSheet.getRow(rowNumOfSheet); //获得一行 

                        for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) { 
                            if (null != aRow.getCell(cellNumOfRow)) { 
                                HSSFCell aCell = aRow.getCell(cellNumOfRow); //获得列值 
                                                                
                                if(aCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){ 
                                 content.append(aCell.getNumericCellValue()); 
                                }else if(aCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){ 
                                 content.append(aCell.getBooleanCellValue()); 
                                }else { 
                                 content.append(aCell.getStringCellValue()); 
                                } 
                            } 
                        } 
                    } 
                } 
            } 
        } 

        return content.toString(); 
    } 
    
    /** 
     * @Method: extractTextFromXLS2007 
     * @Description: 从excel 2007文档中提取纯文本 
     * 
     * @param 
     * @return String 
     * @throws 
     */ 
    private static String extractTextFromXLS2007(String fileName) throws Exception{ 
     StringBuffer content = new StringBuffer(); 
     
     //构造 XSSFWorkbook 对象,strPath 传入文件路径    
  XSSFWorkbook xwb = new XSSFWorkbook(fileName); 
  
  //循环工作表Sheet 
  for(int numSheet = 0; numSheet < xwb.getNumberOfSheets(); numSheet++){ 
   XSSFSheet xSheet = xwb.getSheetAt(numSheet); 
   if(xSheet == null){ 
    continue; 
   } 
   
   //循环行Row 
   for(int rowNum = 0; rowNum <= xSheet.getLastRowNum(); rowNum++){ 
    XSSFRow xRow = xSheet.getRow(rowNum); 
    if(xRow == null){ 
     continue; 
    } 
    
    //循环列Cell 
    for(int cellNum = 0; cellNum <= xRow.getLastCellNum(); cellNum++){ 
     XSSFCell xCell = xRow.getCell(cellNum); 
     if(xCell == null){ 
      continue; 
     } 
     
     if(xCell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN){ 
      content.append(xCell.getBooleanCellValue()); 
     }else if(xCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC){ 
      content.append(xCell.getNumericCellValue()); 
     }else{ 
      content.append(xCell.getStringCellValue()); 
     } 
    } 
   } 
  } 
  
  return content.toString(); 
    } 
    
}  

  这就是读取MS Office高版本的文档的方式。

分享到:
评论
1 楼 394580844 2011-09-09  
请问下POI在提取office文档内容时,内存消耗怎么样?

相关推荐

    POI读取 word 2003 和 word 2007 的例子

    在这个例子中,我们将深入探讨如何使用Apache POI读取Word 2003和Word 2007的文档,并将内容以字符串形式输出。 首先,我们需要了解Apache POI中的两个主要组件,它们是HWPF(Horrible Word Processor Format)用于...

    java 利用POI读取Word文件中的内容

    通过学习和理解这个例子,你可以更好地掌握使用Apache POI读取Word文件的技巧。 总之,Apache POI为Java开发者提供了一种方便的方式,使他们能够轻松地与Microsoft Word文档进行交互,读取其中的文字、表格和图像等...

    java poi读取word

    首先,让我们了解如何通过Java POI读取Word文档。在Java中,我们需要导入`org.apache.poi.xwpf.usermodel`包,因为这个包包含了处理`.docx`文件所需的类。`.docx`是Word 2007及更高版本使用的XML格式。以下是一个...

    Java使用poi读取Excel文件例子

    这个例子将重点讲解如何使用Apache POI读取Excel(.xlsx)文件。首先,我们需要理解Excel文件的基本结构以及POI库提供的API。 Excel的.xlsx文件是由一系列的工作表(worksheet)组成,每个工作表包含多个单元格...

    POI读取word文件

    接下来,我们将探讨如何使用POI读取Word文件。对于.docx格式的文件,我们可以使用XWPFDocument类;而对于.doc格式的文件,需要使用HWPFDocument类。以下是一个简单的例子,展示如何读取.docx文件: ```java import ...

    poi 读取03和07excel文档的小例子,含jar包

    本示例将详细讲解如何使用Apache POI库来读取Excel的2003 (.xls) 和2007 (.xlsx)格式的文档,并提供所需的jar包。 首先,确保你的项目中已经包含了Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加...

    poi word转html例子及jar包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word(.doc、.docx)、Excel(.xls、.xlsx)和PowerPoint(.ppt、.pptx)。在Java环境中,Apache POI 提供了API,使得开发者能够读取、创建...

    POI操作WORD 官方测试案例 DEMO.zip

    用它可以使用 Java 读取和创建, 修改 MS Excel 文件. 而且, 还可以使用 Java 读取和创建 MS Word 和 MSPowerPoint 文件。Apache POI 提供 Java 操作 Excel 解决方案(适用于 Excel97-2008)。 2 Apache POI的组件 ...

    java 使用poi组件处理 excel word

    Apache POI 是一个开源项目,它的主要功能是读取和写入Microsoft Office格式的文件,如.XLS(Excel 97-2003)和.XLSX(Excel 2007及以上版本),以及.WRD(Word 97-2003)和.DOCX(Word 2007及以上版本)。通过POI,...

    SpringBoot整合poi实现Excel文件的导入和导出.pdf

    // 使用POI读取Excel文件 XSSFWorkbook workbook = new XSSFWorkbook(is); XSSFSheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 for (Row row : sheet) { // 遍历行,处理每个单元格 for (Cell ...

    POI使用word模板文件循环输出行并导出word

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档...

    poi-3.0.jar 用于excel word的读取与写入

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Excel和Word文档。在标题中提到的"poi-3.0.jar"是这个库的一个版本,它提供了API来读取、写入和修改这些文件。在这个场景中,我们主要...

    c# 无需安装word excel就可以读取和生成word excel等文档

    总结来说,通过使用NPOI和Aspose.Words这样的库,开发者能够在C#环境中无需安装Word和Excel的情况下读取和生成Word Excel等文档,极大地提升了工作效率并降低了对用户系统的要求。同时,这些库还支持创建图表和其他...

    java引用POI将word、excel转化为html

    POI支持HSSF(用于处理Excel)和XSSF(用于处理Excel 2007及以上版本)以及HWPF(用于处理Word)和XWPF(用于处理Word 2007及以上版本)。 2. **准备环境** 在开始之前,确保已经添加了Apache POI的依赖到你的项目...

    Java利用poi对word插入文字图片

    在Java编程领域,Apache POI库是一个非常实用的工具,它允许开发者读写Microsoft Office格式的文件,如Word、Excel和PowerPoint。本项目“Java利用poi对word插入文字图片”是一个具体的示例,旨在教给你如何使用...

    poi操作word手册例子

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。本手册将深入探讨如何使用Apache POI库来操作Word文档,特别关注在Java环境中进行读取、写入和修改Word内容的...

    poi导出word例子(图片)

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)。在这个例子中,我们将聚焦于使用POI库在Java中导出包含图片的Word文档。这个过程涉及到几个...

    poi帮助文档附带poi操作excel例子

    在这个“poi帮助文档附带poi操作excel例子”中,我们可以深入学习如何使用POI进行Excel文件的操作。 首先,POI.chm文件是帮助文档,它包含了关于Apache POI的详细API参考和教程。这个文件将引导用户了解如何创建、...

    利用POI读取word、Excel文件的最佳实践教程

    以下是使用POI读取Word文档的一个例子: ```java private static String readDoc(String filePath, InputStream is) { String text = ""; try { if (filePath.endsWith("doc")) { WordExtractor ex = new ...

    poi解析导入word (简单Demo使用)

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在"poi解析导入word (简单Demo使用)"这个主题中,我们将深入探讨如何使用Apache POI库来读取、修改和创建Word...

Global site tag (gtag.js) - Google Analytics