Java抽取word里面文本

来源:互联网 发布:sql存储过程返回值 编辑:程序博客网 时间:2024/06/14 22:36

介绍

现在 microsoft word 有好几个版本 97、2003、2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 97 基本上已经退出市场。本文考虑后面二个版本,要求能够读取 word 中的文字内容,而忽略其中的文字样式、图片等信息。调研发现用 apache 的 POI 可以很好的实现。
读取2003版本(.doc)和2007(.docx)及其以后版本有很大的区别。

POI

主页地址:https://poi.apache.org/

到主页下下载:
poi-bin-3.17-beta1-20170701.tar.gz

需要导入的jar包有:
1. poi-3.17-beta1.jar
2. poi-ooxml-schemas-3.17-beta1.jar
3. poi-ooxml-3.17-beta1.jar
4. xmlbeans-2.6.0.jar
5. openxml4j-bin-beta.jar

前面四个jar包poi-bin-3.17-beta1-20170701.tar.gz里面有,第五个我是自己单独下载的。

实战

import org.apache.poi.POIXMLDocument;import org.apache.poi.POIXMLTextExtractor;import org.apache.poi.hwpf.extractor.WordExtractor;import org.apache.poi.openxml4j.opc.OPCPackage;import org.apache.poi.xwpf.extractor.XWPFWordExtractor;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;/** * Created by yuquanle on 2017/8/25. * POI 读取 word 2003 和 word 2007 中文字内容的 * */public class WordExtract {    public static void main(String[] args) throws Exception {        //word 2003: 图片不会被读取        InputStream is = new FileInputStream(new File("E://test.doc"));        WordExtractor ex = new WordExtractor(is);        String text2003 = ex.getText();        System.out.print(text2003.replaceAll("\\s*",""));        //word 2007: 图片不会被读取        OPCPackage opcPackage = POIXMLDocument.openPackage("E://test.docx");        POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);        String text2007 = extractor.getText();        System.out.println(text2007);    }}

参考:http://blog.csdn.net/hemingwang0902/article/details/4381598

原创粉丝点击