`
令狐冲0660
  • 浏览: 15186 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

使用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;

/**
 * <p>Word2003版文件工具类
 * 
 * <p>通用的Word2003版文件工具类,可用于从Word文档中抽取文本信息
 * 
 * @author  窦海宁, chong0660@sina.com
 * @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 &reg; 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  窦海宁, chong0660@sina.com
 * @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 &reg; 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  窦海宁, chong0660@sina.com
 * @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软件也可进行文件读写。
1
3
分享到:
评论
2 楼 令狐冲0660 2013-08-13  
留下的祝福 写道
写个强大实用的功能,类似jacob

这个不好弄,,,呵呵,,,WORD文档格式太复杂了,,,EXCEL的还可以弄,,,
1 楼 留下的祝福 2013-08-13  
写个强大实用的功能,类似jacob

相关推荐

    java-poi完美读写word(doc/docx)和TXT。附jar包

    在这个主题中,我们将深入探讨如何使用Java POI库来实现Word(包括.doc和.docx)以及TXT文件的读写操作。 首先,让我们了解一下Java POI的工作原理。POI库提供了HSSF和XSSF两个API,分别用于处理旧版的二进制Excel...

    android使用POI操作word docx文档

    在Android平台上,使用Apache POI库来操作Microsoft Office的Word(docx)文档是一项常见的需求。Apache POI是一个开源项目,主要设计用于处理Microsoft的文件格式,如.docx、.xlsx和.pptx等。本篇文章将深入探讨...

    java Apache poi 对word doc文件进行读写操作

    在实际应用中,Apache POI 的功能不仅限于简单的读写操作,还支持复杂的格式转换、样式调整和模板填充等功能,是 Java 开发者处理 Word 文件的强大工具。然而,需要注意的是,由于 `.doc` 文件格式的复杂性,处理...

    基于poi实现word/excel转换为HTML(且兼容.doc.docx.xls.xlsx)

    Apache POI 是一个流行的开源库,专为处理Microsoft Office格式的文件,如Word(.doc/.docx)和Excel(.xls/.xlsx)。本教程将深入探讨如何使用Apache POI库来实现这些文件向HTML的转换,以实现跨平台和浏览器的兼容...

    poi-tl实现根据模板生成合同和html转doc,doc转docx的Demo

    Apache POI是一个流行的Java库,用于读写Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)等。而`poi-tl`是基于Apache POI的一个扩展库,它提供了更高级的功能,特别是在基于模板生成复杂...

    android使用POI操作替换word docx文档中指定内容

    在Android平台上,Apache POI库通常用于处理Microsoft Office格式的文件,如Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)。在这个场景中,我们关注的是如何利用POI在Android环境中替换Word文档(.docx)中的...

    使用 poi 操作 doc 与 docx 相关读写的jar包

    这篇内容将深入探讨如何使用Apache POI库来操作DOC和DOCX文件,并涉及相关的转换功能。 首先,Apache POI 包含了 HWPFOI 和 XWPFPOI 两个主要模块,分别用于处理旧版的 .doc 文件(基于二进制的 Word 97-2003 格式...

    doc2docx 文件类型转换 java后台

    Apache POI提供了HPSF(Hierarchical Property Set Format)和HWPF(Horrible Word Processor Format)等组件,分别用于处理DOC和DOCX文件。 在实际的转换过程中,可能的步骤包括: 1. 使用HWPF读取DOC文件:首先,...

    Java将doc转docx工具类方法,maven项目,Idea可直接运行

    在早期,Microsoft Word使用的是.doc格式,这是一种二进制文件格式,随着时间的推移,为了提高文件的开放性和可读性,微软推出了基于XML的.docx格式。尽管两种格式都可以被现代版本的Word打开,但.docx格式在版本...

    java_poi_读写word文件doc文档_含所有依赖jar包_demo

    Apache POI提供了HWPF(Horrible Word Processor Format)类库用于处理老版本的Word文档(.doc),而XWPF类库则用于处理较新的OpenXML格式的Word文档(.docx)。在这个案例中,由于是处理.doc文件,我们将主要关注...

    poi读写word模板/JAVA生成word包

    关于压缩包中的"poi读写word模板包",可能包含了一些示例代码或模板文件,帮助开发者理解如何使用Apache POI进行Word模板的读写。解压后,你可以查看这些文件来学习具体实现,包括如何查找和替换模板中的特定字符串...

    POI修改word、excel、pdf、ppt文件属性如作者以及将其转成html

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)、PowerPoint(.ppt, .pptx)等。通过使用POI,开发者可以创建、读取、修改这些文件,并且将...

    Android解析并显示doc,docx,xls,xlsx文件

    `doc`是早期版本的Microsoft Word文档,而`docx`是基于XML的较新格式,包含文本、样式、图像等元素。`xls`是老版Excel表格文件,而`xlsx`同样是XML为基础的新格式,用于存储表格数据和格式。 要解析这些文件,我们...

    poi将word转换成html、样式 表格 图片处理

    Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Word(.doc, .docx)、Excel(.xls, .xlsx)等。在本案例中,我们关注的是如何使用Apache POI将Word文档转换为HTML格式,并且保持原有的样式、表格...

    poi读写office文件样例程序

    对于Word文档,POI提供了HWPFDocument类来读取旧版本的.doc文件,而XWPFDocument则用于处理新版本的.docx文件。开发者可以读取段落、表格、图片等元素,并进行操作。 5. **写入Word文件** 创建或修改Word文档时,...

    POI生成doc文档和docx文档相关jar包

    Apache POI是一个流行的开源库,主要用于处理Microsoft Office格式的文件,包括Word(.doc和.docx)、Excel(.xls和.xlsx)以及PowerPoint(.ppt和.pptx)。在这个场景中,你提到的"POI生成doc文档和docx文档相关jar...

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

    在Java编程语言中,Apache POI是一个非常流行的库,它允许开发者处理Microsoft Office格式的文件,包括Word(.doc和.docx)文档。本篇将详细介绍如何利用Apache POI库来读取Word文件中的内容。 首先,理解Apache ...

    android中poi生成word文档和excel文档

    通常,开发者会使用第三方库如Apache POI-OOXML-Simple,这是一个轻量级的版本,只包含读写XLSX和DOCX文件所需的类。 3. **XML 文件与Word/Excel 文档**:描述中提到了从XML文件中读取数据来生成文档,这可能意味着...

Global site tag (gtag.js) - Google Analytics