POI读取doc,docx文档内容

1.pom依赖:

 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version>
</dependency>
<!--处理2007版本-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version>
</dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad -->
<!--处理老版本-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version>
</dependency>

2.由于人工创建的文档各式各样,有可能doc文件另存为docx,docx另存为doc,虽然文件后缀变了,但是其原有的格式并未改变,所以需要做兼容处理。见代码:

@Slf4j
public class FileUtils {/*** 解析docx** @param multipartFile* @return*/public static String getDocxWord(MultipartFile multipartFile) {String docWord = null;
//        POIXMLTextExtractor extractor = (POIXMLTextExtractor) ExtractorFactory.createExtractor(bis);
//        OPCPackage aPackage = extractor.getPackage();try {//            XWPFWordExtractor docx = new XWPFWordExtractor(POIXMLDocument.openPackage(path));XWPFDocument read = read(multipartFile);if (read==null){return null;}XWPFWordExtractor docx = new XWPFWordExtractor(read);//提取.docx正文文本docWord = docx.getText().trim();log.info("解析doc文档成功:{}", docWord);docx.close();}  catch (NullPointerException e) {return null;}catch (IOException e){e.printStackTrace();}return docWord;}/*** 解析doc** @param multipartFile* @return*/public static String getDocWord( MultipartFile multipartFile) {String docxWord = "";WordExtractor wordExtractor = null;InputStream is =null;try {//解析doc文件is = multipartFile.getInputStream();try {wordExtractor = new WordExtractor(is);docxWord = wordExtractor.getText().trim();log.info("解析docx文档成功:{}", docxWord);} catch (IllegalArgumentException e) {docxWord=getDocxWord(multipartFile);}finally {if (wordExtractor !=null){wordExtractor.close();}if (is!=null){is.close();}}} catch (IOException e) {log.error("解析docx文档失败", e);}return docxWord;}/*** 读取文件内容** @param multipartFile* @return*/public static XWPFDocument read(MultipartFile multipartFile) {// 判断文件是否为空InputStream is = null;if (!multipartFile.isEmpty()) {try {is = multipartFile.getInputStream();XWPFDocument document = null;try {document = new XWPFDocument(is);} catch (NotOfficeXmlFileException e) {document=null;}return document;} catch (Exception e) {e.printStackTrace();}}return null;}public static void main(String[] args) throws Exception {File file = new File("C:\\Users\\dcw\\Desktop\\2.doc");MultipartFile multipartFile = fileToMultipartFile(file);System.out.println(getDocWord(multipartFile));}
}

POI读取doc,docx文档内容相关推荐

  1. poi操作word docx文档内容替换详解

    WORD文档文字替换 利用关键字下角标位置的方式处理word文档区域文字分割无法匹配的问题 /*** DOCX文档字符串查找** @param document 文档* @param str 查找字符 ...

  2. 使用python-docx读取doc,docx文档

    API:    http://python-docx.readthedocs.io/en/latest/#api-documentation 将doc转为docx: from win32com imp ...

  3. 在线预览doc,docx文档

    在线预览doc,docx文档 前言:上传成功以后的每个文档都能获取到所传文件的路径; 我这里是一个maven项目,需要在pom文件引入 <!-- 文件预览 --><dependenc ...

  4. 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)

    关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并) 首先,关于poi解析表格先阅读一篇他人的博客 使用poi读取word2007(.docx)中的复杂表格 ...

  5. PHP读取docx文档内容

    引言 客户需求, 需要从docx文档读取内容并且做简单格式化, 难点就在于如何读取docx格式并且转换为php可以识别的字符串形式, 惯例先贴代码. 代码 /*** Class Docx2Text** ...

  6. Java web/springboot上传word/doc/docx文档(含图片)与HTML富文本导入/导出互相转换解析!附项目源码

    测试效果 先看下效果 文档内容如下: 上传 上传docx文档 查看解析内容 <html><head><style>p{margin-top:0pt;margin-b ...

  7. php读取word文件并解析图片,PHP读取office word文档内容及图片

    PHP读取word文档里的文字及图片,并保存 一.composer安装phpWord composer require phpoffice/phpword 二.phpWord 读取 docx 文档(注 ...

  8. poi xwpf 转换成 html,Apache POI创建的docx文档无法转化成html

    当我通过word软件创建文档的时候 FileInputStream fileInputStream = new FileInputStream(sourceFileName); //当你确定该文件可信 ...

  9. java docx转pdf_java word/doc/docx文档转PDF 加水印

    本文实例讲述了java实现word文档转pdf并添加水印的方法.分享给大家供大家参考,具体如下: 前段时间,项目需要将上传的Word文档在浏览器浏览,思来想去,把word文档转成pdf就好了,于是乎研 ...

  10. (doc, docx)文档合并的三种方法

    Word文档合并几种方式 通过com.spire.doc包 具体参考地址:https://www.e-iceblue.cn/spiredocforjavaoperating/merge-word-do ...

最新文章

  1. php abstract
  2. [YTU]_1032( 统计出其中英文字母、数字、空格和其他字符的个数)
  3. Spring Cloud生态的构建
  4. atomic原子类实现机制_深入了解Java atomic原子类的使用方法和原理
  5. 几种开源软件授权协议
  6. stm32 ARM中的RO、RW和ZI DATA
  7. 考研政治——选择题判断原则
  8. 电竞人才平均月薪感受下!上海薪资领跑全国
  9. Hadoop 序列化
  10. php 删除最后一个空数组,php删除空数组
  11. CentOS下Apache服务器的安装与配置
  12. CocoaPods 2017最新、最快安装和使用说明
  13. Fluent 三种初始化使用方法
  14. PDF convert(多个pdf合并的脚本)
  15. 注意力机制的详细理解
  16. echarts 添加百分号%
  17. 剑指offer_递归与循环---跳台阶
  18. idenet 学习记录:bili
  19. 谷歌商店上架流程_Googleplay 上架流程(2022版)
  20. 韩星李起光SNS被黑   社交网络安全刻不容缓

热门文章

  1. 用 HBuilder X 编辑 Markdown 文档,如何自定义表格列宽
  2. vue网页调用高德获取经纬度
  3. 主流编程语言的特点分析
  4. 技嘉x58不支持服务器内存,一般机箱放不下 技嘉X58送海盗船内存
  5. python——平方根
  6. ArcGIS中ObjectID,FID和OID字段区别
  7. fid fopen MATLAB
  8. wh计算公式_电池的wh和mah怎么换算?
  9. 玩转华为ENSP模拟器系列 | 配置OSPF ABR路由聚合示例
  10. 面试必杀技:异步FIFO