java poi解析word的方法
作者:chanjuan 发布时间:2023-08-28 07:31:28
标签: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);
O * ackage 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;
}
功能实现了。
0
投稿
猜你喜欢
- 通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理,而
- 本文实例为大家分享了java简单实现斗地主发牌的具体代码,供大家参考,具体内容如下问题:参考斗地主的游戏规则,完成一个发牌的功能(54张牌,
- 最近项目中需要实现定时执行任务,比如定时计算会员的积分、调用第三方接口等,由于项目采用spring框架,所以这里结合spring框架来介绍。
- 使用mybatis-plus自动生成了5个模块(xml/bean/mapper/service/controller)的代码,这里练习一下m
- mapper-locations的作用说明1、mapper-locationsmapper-locations是一个定义mapper接口位置
- 一个线程如何知道另一线程已经结束?Thread类提供了回答此问题的方法。有两种方法可以判定一个线程是否结束。第一,可以在线程中调用isAli
- 实际开发中订单往往都包含着订单状态,用户每进行一次操作都要切换对应的状态,而每次切换判断当前的状态是必须的,就不可避免的引入一系列判断语句,
- 一. Window 分类应用 Window(ApplicationWindow: 对应一个 Acitivity)
- 0、前言本文主要对几种常见Java序列化方式进行实现。包括Java原生以流的方法进行的序列化、Json序列化、FastJson序列化、Pro
- //哈弗曼编码的实现类public class HffmanCoding { private int c
- 1 引入 pom 包<dependency> <groupId>io.github.res
- 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便、快捷。但是当时并没有认真的去学习下,毕竟感觉
- 定义Builder模式是一步步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细的控制对象的构建过程。该模式是
- 1.概述数据库开发一直是JAVA开发的核心之一,作为现在JAVA EE的基石框架,Spring Boot自身携带了一个JDBCTemplat
- using System; using System.Collections.Generic; using System.Text; usi
- 本文实例为大家分享了java实现抽奖功能的具体代码,供大家参考,具体内容如下抽一个:输入抽奖人数,生成随机数字进行抽奖。比如:楼主抽幸运儿送
- 需求:有些时候,我们需要连接多个数据库,但是,在方法调用前并不知道到底是调用哪个。即同时保持多个数据库的连接,在方法中根据传入的参数来确定。
- 重新认识 Java 的 System.in以前也写过不少命令行的程序,处理文件时总需要通过参数指定路径,直到今天看资料时发现了一种我自己从来
- 本文实例为大家分享了java实现购物车功能的具体代码,供大家参考,具体内容如下1 需要实现1、实现淘淘商城的购物车功能2 购物车功能2.1
- 问题分析疑惑满满小枫听到这个面试题的时候,心想这是什么水面试官,怎么问这么简单的题目,心想一个for循环加上equal判断再删除不就完事了吗