用 Java 轻松读取 Word 文档内容

嘿,朋友们!在 Java 开发里,有时候咱得读取 Word 文档里的内容,这在处理合同、报告等文件时特别有用。咱可以根据 Word 文档的格式,用不同的库来实现读取功能。下面就详细说说 .doc.docx 这两种常见格式文档的读取方法。

1. 读取 .doc 格式的 Word 文档

引入依赖

如果用 Maven 管理项目,在 pom.xml 里添加 Apache POI 的依赖:

复制代码
XML 复制代码
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>5.2.3</version>
</dependency>

代码示例

复制代码
java 复制代码
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;

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

public class ReadDocFile {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.doc")) {
            // 创建 HWPFDocument 对象来表示 .doc 文档
            HWPFDocument document = new HWPFDocument(fis);
            // 创建 WordExtractor 对象用于提取文档内容
            WordExtractor extractor = new WordExtractor(document);
            // 获取文档的文本内容
            String content = extractor.getText();
            System.out.println(content);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("读取 .doc 文件失败:" + e.getMessage());
        }
    }
}

代码解释

  • FileInputStream fis = new FileInputStream("example.doc"):创建一个文件输入流,用来读取 example.doc 文件。

  • HWPFDocument document = new HWPFDocument(fis):用 HWPFDocument 类创建一个文档对象,它能处理 .doc 格式的文档。

  • WordExtractor extractor = new WordExtractor(document):创建 WordExtractor 对象,它可以从文档对象里提取文本内容。

  • String content = extractor.getText():调用 getText() 方法获取文档的全部文本内容,然后打印出来。

2. 读取 .docx 格式的 Word 文档

引入依赖

同样在 pom.xml 里添加 Apache POI 的依赖:

复制代码
XML 复制代码
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

代码示例

复制代码
java 复制代码
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

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

public class ReadDocxFile {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.docx")) {
            // 创建 XWPFDocument 对象来表示 .docx 文档
            XWPFDocument document = new XWPFDocument(fis);
            StringBuilder content = new StringBuilder();
            // 遍历文档中的每个段落
            for (XWPFParagraph paragraph : document.getParagraphs()) {
                // 遍历段落中的每个文本运行对象
                for (XWPFRun run : paragraph.getRuns()) {
                    content.append(run.getText(0));
                }
                content.append("\n");
            }
            System.out.println(content.toString());
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("读取 .docx 文件失败:" + e.getMessage());
        }
    }
}

代码解释

  • FileInputStream fis = new FileInputStream("example.docx"):创建文件输入流读取 example.docx 文件。

  • XWPFDocument document = new XWPFDocument(fis):用 XWPFDocument 类创建文档对象,它专门处理 .docx 格式的文档。

  • 通过两层循环,外层遍历文档里的每个段落,内层遍历段落里的每个文本运行对象,把文本内容添加到 StringBuilder 里,最后打印出来。

嘿,朋友们!有了上面的方法,咱就能用 Java 轻松读取不同格式的 Word 文档内容啦。赶紧动手试试,让你的程序也能和 Word 文档"交流"起来!

相关推荐
程序员清风8 分钟前
跳表的原理和时间复杂度,为什么还需要字典结构配合?
java·后端·面试
渣哥22 分钟前
Kafka消息丢失的3种场景,生产环境千万要注意
java
渣哥22 分钟前
ElasticSearch深度分页的致命缺陷,千万数据查询秒变蜗牛
java
Olrookie23 分钟前
XXL-JOB GLUE模式动态数据源实践:Spring AOP + MyBatis 解耦多库查询
java·数据库·spring boot
柯南二号40 分钟前
【Java后端】MyBatis-Plus 原理解析
java·开发语言·mybatis
又是努力搬砖的一年1 小时前
SpringBoot中,接口加解密
java·spring boot·后端
:-)1 小时前
idea配置maven国内镜像
java·ide·maven·intellij-idea
我是哈哈hh1 小时前
【Node.js】ECMAScript标准 以及 npm安装
开发语言·前端·javascript·node.js
啊阿狸不会拉杆1 小时前
《算法导论》第 27 章 - 多线程算法
java·jvm·c++·算法·图论
用户802973565411 小时前
【水平:编写简单的SpringCloud】用一篇文章精通SpringCloud-1
java