现在解析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()方法即可
添加完了以后还需要保存一下文件。