POI读取doc,docx文档内容
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文档内容相关推荐
- poi操作word docx文档内容替换详解
WORD文档文字替换 利用关键字下角标位置的方式处理word文档区域文字分割无法匹配的问题 /*** DOCX文档字符串查找** @param document 文档* @param str 查找字符 ...
- 使用python-docx读取doc,docx文档
API: http://python-docx.readthedocs.io/en/latest/#api-documentation 将doc转为docx: from win32com imp ...
- 在线预览doc,docx文档
在线预览doc,docx文档 前言:上传成功以后的每个文档都能获取到所传文件的路径; 我这里是一个maven项目,需要在pom文件引入 <!-- 文件预览 --><dependenc ...
- 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)
关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并) 首先,关于poi解析表格先阅读一篇他人的博客 使用poi读取word2007(.docx)中的复杂表格 ...
- PHP读取docx文档内容
引言 客户需求, 需要从docx文档读取内容并且做简单格式化, 难点就在于如何读取docx格式并且转换为php可以识别的字符串形式, 惯例先贴代码. 代码 /*** Class Docx2Text** ...
- Java web/springboot上传word/doc/docx文档(含图片)与HTML富文本导入/导出互相转换解析!附项目源码
测试效果 先看下效果 文档内容如下: 上传 上传docx文档 查看解析内容 <html><head><style>p{margin-top:0pt;margin-b ...
- php读取word文件并解析图片,PHP读取office word文档内容及图片
PHP读取word文档里的文字及图片,并保存 一.composer安装phpWord composer require phpoffice/phpword 二.phpWord 读取 docx 文档(注 ...
- poi xwpf 转换成 html,Apache POI创建的docx文档无法转化成html
当我通过word软件创建文档的时候 FileInputStream fileInputStream = new FileInputStream(sourceFileName); //当你确定该文件可信 ...
- java docx转pdf_java word/doc/docx文档转PDF 加水印
本文实例讲述了java实现word文档转pdf并添加水印的方法.分享给大家供大家参考,具体如下: 前段时间,项目需要将上传的Word文档在浏览器浏览,思来想去,把word文档转成pdf就好了,于是乎研 ...
- (doc, docx)文档合并的三种方法
Word文档合并几种方式 通过com.spire.doc包 具体参考地址:https://www.e-iceblue.cn/spiredocforjavaoperating/merge-word-do ...
最新文章
- php abstract
- [YTU]_1032( 统计出其中英文字母、数字、空格和其他字符的个数)
- Spring Cloud生态的构建
- atomic原子类实现机制_深入了解Java atomic原子类的使用方法和原理
- 几种开源软件授权协议
- stm32 ARM中的RO、RW和ZI DATA
- 考研政治——选择题判断原则
- 电竞人才平均月薪感受下!上海薪资领跑全国
- Hadoop 序列化
- php 删除最后一个空数组,php删除空数组
- CentOS下Apache服务器的安装与配置
- CocoaPods 2017最新、最快安装和使用说明
- Fluent 三种初始化使用方法
- PDF convert(多个pdf合并的脚本)
- 注意力机制的详细理解
- echarts 添加百分号%
- 剑指offer_递归与循环---跳台阶
- idenet 学习记录:bili
- 谷歌商店上架流程_Googleplay 上架流程(2022版)
- 韩星李起光SNS被黑 社交网络安全刻不容缓