当前位置:首页 > Java

java如何读取word文档

2026-03-04 07:26:17Java

读取Word文档的方法

Java可以通过多种库读取Word文档(.doc或.docx格式),以下是常用的方法:

使用Apache POI库(支持.docx和.doc)

Apache POI是处理Microsoft Office文档的流行库,支持Word的两种格式。

添加Maven依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

读取.docx文件示例代码:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import java.io.FileInputStream;
import java.util.List;

public class ReadDocx {
    public static void main(String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("document.docx");
        XWPFDocument document = new XWPFDocument(fis);
        List<XWPFParagraph> paragraphs = document.getParagraphs();

        for (XWPFParagraph para : paragraphs) {
            System.out.println(para.getText());
        }

        document.close();
        fis.close();
    }
}

读取.doc文件示例代码:

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import java.io.FileInputStream;

public class ReadDoc {
    public static void main(String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("document.doc");
        HWPFDocument document = new HWPFDocument(fis);
        WordExtractor extractor = new WordExtractor(document);

        System.out.println(extractor.getText());

        document.close();
        fis.close();
    }
}

使用docx4j库(仅支持.docx)

docx4j是另一个专门处理.docx文件的库。

添加Maven依赖:

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>11.4.5</version>
</dependency>

示例代码:

import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
import java.io.File;

public class ReadDocx4j {
    public static void main(String[] args) throws Exception {
        WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(
            new File("document.docx"));
        MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
        System.out.println(documentPart.getContent().toString());
    }
}

使用Tika库(通用文档解析)

Apache Tika可以解析多种文档格式,包括Word。

添加Maven依赖:

<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>2.7.0</version>
</dependency>
<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers</artifactId>
    <version>2.7.0</version>
</dependency>

示例代码:

java如何读取word文档

import org.apache.tika.Tika;
import java.io.File;

public class ReadWithTika {
    public static void main(String[] args) throws Exception {
        Tika tika = new Tika();
        String content = tika.parseToString(new File("document.docx"));
        System.out.println(content);
    }
}

处理注意事项

  • 对于大型Word文档,考虑使用流式处理避免内存问题
  • 不同库对复杂格式(表格、图片等)的支持程度不同
  • 处理旧版.doc文件时可能需要额外的字体配置
  • 关闭文件输入流和文档对象以防止资源泄漏

性能优化建议

  • 对于只需要文本内容的情况,使用轻量级的Tika可能更高效
  • 需要精细控制文档元素时,POI或docx4j更合适
  • 批量处理时可以考虑缓存解析器实例

标签: 文档java
分享给朋友:

相关文章

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

vue实现word文档

vue实现word文档

Vue 实现 Word 文档生成与操作 前端生成 Word 文档 使用 docx 库可以动态生成 .docx 文件,适用于纯前端实现: import { Document, Paragraph, T…

java如何避免死锁

java如何避免死锁

避免死锁的方法 固定顺序获取锁 确保所有线程按照相同的顺序获取多个锁。例如,若需要获取锁A和锁B,所有线程必须先获取A再获取B,避免交叉依赖导致的死锁。这种方式破坏了“循环等待”条件。 使用锁超时机…

php 实现文档预览

php 实现文档预览

PHP 实现文档预览的方法 在 PHP 中实现文档预览功能通常涉及将文档转换为可预览的格式(如 PDF、HTML 或图片)。以下是几种常见的方法: 使用第三方库转换文档为 PDF 通过调用外部库或工…

如何升级java

如何升级java

检查当前Java版本 在升级之前,需确认当前安装的Java版本。在终端或命令提示符中运行以下命令: java -version 输出会显示当前Java版本(如1.8.0_301或17.0.2)。…

如何学java基础

如何学java基础

学习Java基础的方法 理解Java的基本概念 Java是一种面向对象的编程语言,掌握基础概念如类、对象、继承、多态和封装是必要的。熟悉Java的语法结构,包括变量、数据类型、运算符和控制语句。 安…