一天一个小工具---读取Word文档

现在解析Word文档太轻松了,因为Apache组织的POI项目为我们提供了一套API来解析office相关的文档 ,包括Word、Excel、PPT等。下面就先简单介绍一下解析Word文档的方法;

使用Apache的POI项目要先引入相关的jar包,可在 http://poi.apache.org/download.html 下载。

在工程中加入poi-3.10-FINAL-20140208.jar和commons-codec-1.5.jar

解析Word涉及的主要对象:org.apache.poi.hwpf.extractor.WordExtractor。这个对象是Word文档的提取器,有了它就可以随意提取文档的内容。其中主要的方法是getText();此方法可以获取文档的所有文本内容。

下面几行简单代码就可以实现文档内容读取了

package com.bics.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.hwpf.extractor.WordExtractor;

/**
 * 解析Word文档
 * 
 * HWPF-->doc文档
 * 
 * XWPF-->docx文档
 * 
 * 关于对MSWord的操作的官方文档:http://poi.apache.org/document/quick-guide.html
 * 目前“HWPF is still in early development.”
 * @author BICHSH
 * 
 */
public class MSWordUtil
{
	/**
	 * 读取Word文档的纯文本内容,不包含页眉页脚
	 * 
	 * @param doc
	 *            Word文档
	 * @return 文档的纯文本内容
	 * @throws IOException
	 * @throws FileNotFoundException
	 */
	public static String getContent(File doc) throws FileNotFoundException,
			IOException
	{
		// 指定文件流创建文档提取器,代表要被操作的Word文档
		WordExtractor wordExtractor = new WordExtractor(new FileInputStream(doc));
		String content = wordExtractor.getText();
		return content;
		/**
		 * 其他获取文本方法的介绍:</br> 
		 * 1.String[] : wordExtractor.getParagraphText() 返回以回车结尾的一段文本 
		 * 2.String[] : wordExtractor.getCommentsText();返回注释,就是右键出来的‘添加批注’中的内容
		 */
	}

	public static void main(String[] args) throws FileNotFoundException,
			IOException
	{
		String content = getContent(new File("e:/xxxx.doc"));
	}
}

此外,还可以向文档中插入、删除内容,这就要用另一个对象HWPFDocument,意思为doc文档。该对象中用几个getXXXRange()方法可以获取一个Range对象,表示文档中的一个范围。

	/**
	 * 向文档尾部追加内容
	 * 
	 * @param data
	 *            追加的内容
	 * @param doc
	 *            操作的文档
	 * @throws FileNotFoundException
	 * @throws IOException
	 */
	public static void append(String data, File doc)
			throws FileNotFoundException, IOException
	{
		HWPFDocument hWPFDocument = new HWPFDocument(new FileInputStream(doc));
		Range range = hWPFDocument.getRange();
		range.insertAfter(data);
		hWPFDocument.write(new FileOutputStream(doc));
	}

向首部添加即改为insertBefore()方法即可

添加完了以后还需要保存一下文件。
 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Microsoft Visual Studio 2008环境(具体项目类型为“Visual C#”→“Office” →“2007”→“Word2007 外接程序”),用C#语言开发实现的Word2007扩展插件,对Word文档的处理入库很有用,尤其针对项目,有时候需要将用户给的上万个word文档里数据整理入库(SQL或者Oracle数据库),这个时候就要考虑怎么去读这些word文档,通常用户给的word文档比较规范,对于规范的word文档比较好写程序去读取,但是还是代码不少,还要反复测试,另外就是用户给的上万个word文档格式可能不完全相同,比如一开始省里面定制了一个很规范的word文档,发下去给所有的县市去收集数据,但是发下去后可能下面的县市会对模板进行一定的修改,或者是因为填写人不小心把文档结构进行了微调或者进行了增删,这个时候要100%的将数据入库是比较困难的,如果写程序去读是需要写几套策略去读的,这样工作量就相当大,并且可能需要很多人配合去检查数据表格或者调整表格格式,为解决这个问题,本人就想到有没有一种更简单的办法,因此累计花了三四天的时间诞生了这个智能书签插入工具。一般我们搞开发的时候用到的是事先做好一个word模板,在相应位置插入书签,然后程序里在需要导出表格的时候就调用这个模板,往插了书签的地方写文本或者图片,反向思考,这让我想到了能不能往用户给的上万个word文档里先插入书签,然后我们再写程序去直接读取插了书签的word文档,这样的好处是显而易见的:第一,不管用户给的表格规范不规范,都可以以一定的策略将书签准确无误的插到预期位置;第二,一旦文档里插入了书签,读取word文档的程序会变得很简单,原来上千上万行的代码会精简到几百或者最多几千行代码;第三,这个书签插入工具是通用工具,可以灵活的应对各种格式的文档,一旦做好了就不需要修改或者很少修改;第四,对文档的处理更灵活,更容易分工合作,更容易查错和进行批处理。当然,这个工具也必须满足几个条件:第一,书签插入的大量工作必须是智能化的;第二,用策略不能完全插入到预期位置的书签,需要有人工插入的功能;第三,需要有质量检查的功能。而这些在本插件里已经完全解决,唯一不足的是效率还是没有预期那么好,但是,相对于人工处理或者反复写程序去读取文档,该工具绝对可以省去很多时间和人力物力。该工具绝对是世界上独一无二的,当然如果需要更多功能,聪明的你也可以继续发挥哦……

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值