Java 实现poi方式读取word文件内容

本文介绍了一个简单的Java程序,该程序能够从指定路径的 .doc/.docx 文件中读取文本内容。通过使用Apache POI库中的WordExtractor类,实现了对Microsoft Word文档的解析。

1、Maven Jar包

<!-- .docx -->

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml</artifactId>

<version>5.2.3</version>

</dependency>

<!-- .doc -->

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-scratchpad</artifactId>

<version>5.2.3</version>

</dependency>

2、Java代码

java 复制代码
package org.example.utils;

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class WordUtils {

    public String read(String path) {
        try  {
            if (path.toLowerCase().endsWith(".docx"))
                return readDocx(path);
            else if (path.toLowerCase().endsWith(".doc"))
                return readDoc(path);
            else
                throw new IllegalArgumentException("不支持的文件格式");
        } catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    public String readDocx(String path) throws IOException {
        try (InputStream in = new FileInputStream(path);
             XWPFDocument doc = new XWPFDocument(in)) {
            return new XWPFWordExtractor(doc).getText();
        }
    }
    public String readDoc(String path) throws IOException {
        try (InputStream in = new FileInputStream(path);
             HWPFDocument doc = new HWPFDocument(in)) {
            return new WordExtractor(doc).getText();
        }
    }

    public static void main(String[] args) {
        WordUtils wordUtils = new WordUtils();
        try {
            String docx = wordUtils.read("/Users/work/Documents/数据分析报告.doc");
            System.out.println(docx);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}
相关推荐
qfljg3 小时前
OpenRewrite 实战指南
java
Sylvia33.3 小时前
LOL实时数据接入深度解析:从WebSocket到完整数据模型
java·网络·python·websocket·网络协议
2601_962071578 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
zww89491119 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·eclipse
淡海水9 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
CS_Zero10 小时前
C语言sizeof是函数吗?
c语言·开发语言
-今昭-11 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
zww894911112 小时前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
黑马程序员毕设13 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳13 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法