使用POI读写Word文件(兼容doc与docx版本)

阅读更多

调用示例:

 

File wordFile = new File("D:\\temp.doc");

//读取Word文档中所有文本内容,以字符串形式返回
System.out.println(WordFileUtil.extractTextFromWordFile(wordFile));

 

工具类源码:

 

Word2003版本工具类:

 

/**
 * Word2003FileUtil.java
 * Copyright ® 2010 窦海宁
 * All right reserved
 */

package org.aiyu.core.common.util.file.office;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.commons.io.IOUtils;
import org.apache.poi.hwpf.extractor.WordExtractor;

/**
 * 

Word2003版文件工具类 * *

通用的Word2003版文件工具类,可用于从Word文档中抽取文本信息 * * @author 窦海宁, [email protected] * @since AiyuCommonCore-1.0 * @version AiyuCommonCore-1.0 */ public abstract class Word2003FileUtil { /** *

从Excel文档中提取文本信息 * * @param wordFile Excel文件 * * @return 提取后的文本信息 * * @modify 窦海宁, 2013-08-12 */ protected static String extractTextFromWordFile(File wordFile) { String returnValue = null; if (wordFile != null) { if (wordFile.isFile()) { InputStream inputStream = null; try { inputStream = new FileInputStream(wordFile); WordExtractor wordExtractor = new WordExtractor(inputStream); returnValue = wordExtractor.getText(); } catch (Exception ex) { System.err.println(ex.getMessage()); } finally { IOUtils.closeQuietly(inputStream); } } } return returnValue; } }

 
Word2007版本工具类:
 
/**
 * Word2007FileUtil.java
 * Copyright ® 2017 窦海宁
 * All right reserved
 */

package org.aiyu.core.common.util.file.office;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.commons.io.IOUtils;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

/**
 * 

Word2007版文件工具类 * *

通用的Word2007版文件工具类,可用于从Word文档中抽取文本信息 * * @author 窦海宁, [email protected] * @since AiyuCommonCore-1.0 * @version AiyuCommonCore-1.0 */ public abstract class Word2007FileUtil { /** *

从Excel文档中提取文本信息 * * @param wordFile Excel文件 * * @return 提取后的文本信息 * * @modify 窦海宁, 2017-01-18 */ protected static String extractTextFromWordFile(File wordFile) { String returnValue = null; if (wordFile != null) { if (wordFile.isFile()) { InputStream inputStream = null; try { inputStream = new FileInputStream(wordFile); XWPFDocument document = new XWPFDocument(inputStream); XWPFWordExtractor wordExtractor = new XWPFWordExtractor(document); returnValue = wordExtractor.getText(); } catch (Exception ex) { System.err.println(ex.getMessage()); } finally { IOUtils.closeQuietly(inputStream); } } } return returnValue; } }

 
统一调用工具类:
 
/**
 * WordFileUtil.java
 * Copyright ® 2017 窦海宁
 * All right reserved
 */

package org.aiyu.core.common.util.file.office;

import java.io.File;

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;

/**
 * 

Word文件工具类 * *

通用的Word文件工具类,可用于从Word文档中抽取文本信息 * * @author 窦海宁, [email protected] * @since AiyuCommonCore-1.0 * @version AiyuCommonCore-1.0 */ public abstract class WordFileUtil { /** *

从Excel文档中提取文本信息 * * @param wordFile Excel文件 * * @return 提取后的文本信息 * * @modify 窦海宁, 2017-02-06 */ public static String extractTextFromWordFile(File wordFile) { String resultText = null; if (wordFile != null && wordFile.exists()) { String extension = FilenameUtils.getExtension(wordFile.getName()); if (StringUtils.equalsIgnoreCase("doc" , extension)) { //Office2003版文件处理 resultText = Word2003FileUtil.extractTextFromWordFile(wordFile); } else if (StringUtils.equalsIgnoreCase("docx" , extension)) { //Office2007版文件处理 resultText = Word2007FileUtil.extractTextFromWordFile(wordFile); } else { //文件类型有误 } } return resultText; } }

 
统一调用工具类通过文件扩展名(DOC与DOCX,不区分大小写)判断文件版本,暂时没有想到更好的办法;本工具类使用POI_3.15实现,无须目标机器安装OFFICE软件也可进行文件读写。
  • WordFileUtil.rar (2.2 KB)
  • 下载次数: 2

你可能感兴趣的:(java,office,word,poi)