当前位置:首页 > 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文件示例代码:

java如何读取word文档

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>

示例代码:

java如何读取word文档

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>

示例代码:

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如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

java如何创建包

java如何创建包

创建Java包的步骤 在Java中,包(package)用于组织和管理类文件,避免命名冲突。以下是创建Java包的详细方法: 定义包名 在Java源文件的开头使用package关键字声明包名。包名…

java如何运行程序

java如何运行程序

运行Java程序的步骤 安装Java开发工具包(JDK) 确保系统已安装JDK,可通过命令行输入java -version和javac -version验证。若未安装,需从Oracle官网下载并配置环…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…

vue实现word文档预览

vue实现word文档预览

使用 docx-preview 库实现预览 docx-preview 是一个专门用于在浏览器中预览 Word 文档的 JavaScript 库。它支持 .docx 格式的文件,可以直接在 Vue 项目…