java poi解析word

之前做过用java读取word文档,获取word文本内容。

但发现docx的支持,doc就异常了。

后来找了很多资料发现是解析方法不一样。

首先要导入poi相关的jar包

我用的是maven,pom.xml引入如下:

 

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>3.8</version>
        </dependency>

 

java获取word文本内容如下:

public BaseResp getParsedTxt(MultipartFile file) throws Exception {
        BaseResp br=new BaseResp("200","") ;
        String textType = file.getContentType();
        String txt = "";
        if(textType.equals(TXT_TYPE)){
            String code = getCharset(file);
            txt = new String(file.getBytes(),code);
        }else if(textType.equals(DOC_TYPE)){
            HWPFDocument doc = new HWPFDocument(file.getInputStream());
            Range rang = doc.getRange();
            txt = rang.text();
            System.out.println(txt);
        }else if(textType.equals(DOCX_TYPE)){
            File uFile = new File("tempFile.docx");
            if(!uFile.exists()){
                uFile.createNewFile();
            }
            FileCopyUtils.copy(file.getBytes(), uFile);
            OPCPackage opcPackage = POIXMLDocument.openPackage("tempFile.docx");
            POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
            txt= extractor.getText();
            uFile.delete();
        }else{
            br = new BaseResp("300","上传文件格式错误,请上传.txt或者.docx");
            return br;
        }
        br.setDatas(txt);
        return br;
    }


哈哈 ,功能实现了!

posted @ 2017-04-22 17:27  chanjuan  阅读(1323)  评论(0编辑  收藏  举报