调用示例:
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; /** * <p>Word2003版文件工具类 * * <p>通用的Word2003版文件工具类,可用于从Word文档中抽取文本信息 * * @author 窦海宁, [email protected] * @since AiyuCommonCore-1.0 * @version AiyuCommonCore-1.0 */ public abstract class Word2003FileUtil { /** * <p>从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; /** * <p>Word2007版文件工具类 * * <p>通用的Word2007版文件工具类,可用于从Word文档中抽取文本信息 * * @author 窦海宁, [email protected] * @since AiyuCommonCore-1.0 * @version AiyuCommonCore-1.0 */ public abstract class Word2007FileUtil { /** * <p>从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; /** * <p>Word文件工具类 * * <p>通用的Word文件工具类,可用于从Word文档中抽取文本信息 * * @author 窦海宁, [email protected] * @since AiyuCommonCore-1.0 * @version AiyuCommonCore-1.0 */ public abstract class WordFileUtil { /** * <p>从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软件也可进行文件读写。