用 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 文档"交流"起来!

相关推荐
华仔啊20 分钟前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang27 分钟前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang2 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解2 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing6 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean6 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven977 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55117 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河17 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化