java如何利用poi解析doc和docx中的数据

当需要从 Word 文档中提取数据的时候,我们可以使用 Apache POI 来读取 ".doc" 和 ".docx" 文件。下面是如何利用 POI 解析 Word 文档中数据的攻略:

1. 添加 POI 依赖

在项目中添加以下依赖:

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

2. 读取 .doc 文件

首先,我们需要创建一个 HWPFDocument 对象,它代表了 Word 文档:

File file = new File("example.doc");
FileInputStream fis = new FileInputStream(file);
HWPFDocument doc = new HWPFDocument(fis);

然后,我们可以通过以下方式来获取文档中的文本:

Range range = doc.getRange();
String text = range.text();

3. 读取 .docx 文件

对于 .docx 文件,我们需要创建一个 XWPFDocument 对象:

File file = new File("example.docx");
FileInputStream fis = new FileInputStream(file);
XWPFDocument doc = new XWPFDocument(fis);

我们可以使用以下代码来获取文档中的段落和表格数据:

// 获取所有段落
List<XWPFParagraph> paragraphs = doc.getParagraphs();
for (XWPFParagraph para : paragraphs) {
    String text = para.getText();
    System.out.println(text);
}

// 获取所有的表格
List<XWPFTable> tables = doc.getTables();
for (XWPFTable table : tables) {
    // 遍历表格所有的行和列
    for (int i = 0; i < table.getNumberOfRows(); i++) {
        XWPFTableRow row = table.getRow(i);
        for (int j = 0; j < row.getTableCells().size(); j++) {
            System.out.println(row.getCell(j).getText());
        }
    }
}

示例1. 读取 .doc 中的表格数据

假设我们要读取如下 Word 文档中的表格数据:

姓名 年龄 性别
张三 20
李四 22

我们可以使用以下代码来解析 .doc 文件中的表格数据:

File file = new File("example.doc");
FileInputStream fis = new FileInputStream(file);
HWPFDocument doc = new HWPFDocument(fis);

Range range = doc.getRange();
TableIterator tableIt = new TableIterator(range);

while (tableIt.hasNext()) {
    Table table = tableIt.next();
    for (int i = 0; i < table.numRows(); i++) {
        TableRow row = table.getRow(i);
        for (int j = 0; j < row.numCells(); j++) {
            TableCell cell = row.getCell(j);
            String text = cell.getParagraph(0).text().trim();
            System.out.print(text + "\t");
        }
        System.out.println();
    }
}

示例2. 读取 .docx 中的段落数据

假设我们要读取如下 Word 文档中的段落数据:

标题

段落1
段落2

我们可以使用以下代码来解析 .docx 文件中的段落数据:

File file = new File("example.docx");
FileInputStream fis = new FileInputStream(file);
XWPFDocument doc = new XWPFDocument(fis);

List<XWPFParagraph> paragraphs = doc.getParagraphs();
for (XWPFParagraph para : paragraphs) {
    String text = para.getText();
    System.out.println(text);
}

以上是利用 POI 解析 Word 文档中数据的攻略及两条示例,希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java如何利用poi解析doc和docx中的数据 - Python技术站

(1)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java异常类型及处理

    Java异常类型及处理攻略 异常定义 在程序执行时,如果出现某种错误或异常,则会产生异常。Java中所有的异常信息都是用异常类的形式传递的。在Java中,所有异常都是派生于Throwable类(它是 Java 语言中所有错误或异常的超类)的一个子类。它既包括异常(Exception)也包括错误(Error),它们有各自的特点: Exception Excep…

    Java 2023年5月26日
    00
  • java后台如何利用Pattern提取所需字符详解

    下面就是关于“Java后台如何利用Pattern提取所需字符”的完整攻略: 1. 基本概念 在Java中,正则表达式的使用非常重要,而Pattern类就是Java中正则表达式的核心类,用于解析和匹配正则表达式。下面是Pattern类中最基本的方法: public static Pattern compile(String regex) public Matc…

    Java 2023年5月27日
    00
  • 详解Spring Boot 属性配置和使用

    下面给你详细讲解“详解SpringBoot属性配置和使用”的完整攻略。 一、引言 Spring Boot 是一个高效、快速的开发框架,它提供了很多功能,其中之一就是属性配置——即让你的项目可以从外部读取配置信息。通过这样的方式很方便的管理数据库连接、端口号、应用名称等常规信息。 二、属性文件的配置 Spring Boot 项目使用 application.p…

    Java 2023年5月15日
    00
  • Spring Boot 和 Spring 到底有啥区别你知道吗

    Spring是一个Java企业级应用框架,该框架在应用开发中蕴含了大量的设计模式和最佳实践,并提供了特性多样、功能强大的模块,帮助开发者更好地实现业务功能。而Spring Boot是在Spring基础上进一步简化了Spring的配置和使用,提供了一些约定大于配置的方式,让开发者专注于业务逻辑的实现,而非框架细节。 下面分别从以下几个方面详细讲解Spring和…

    Java 2023年5月15日
    00
  • spring boot 2.x静态资源会被拦截器拦截的原因分析及解决

    在Spring Boot 2.x版本中,静态资源默认会被拦截器拦截,这是因为Spring Boot引入了WebMvcConfigurerAdapter类,该类覆盖了addResourceHandlers方法,将/**路径下的所有请求都拦截了,并尝试寻找相应的静态资源。 要解决这个问题,需要在自己的项目中进行一些配置。 首先,在项目的配置文件applicati…

    Java 2023年6月3日
    00
  • Java中注解的工作原理

    下面是Java中注解的工作原理的完整攻略。 什么是Java注解 Java注解是一种元数据机制,其本质是为了给Java程序提供更好的描述、配置和使用方式的一种注解技术。注解可以被限定用于某些类型、方法、字段或方法参数等Java程序中的特定部分,通过注解可以传递一定的元数据信息,例如对应的某个方法的功能、某个属性的值或某个参数的约束等等。 注解在Java程序中的…

    Java 2023年5月20日
    00
  • spring batch线上异常定位记录

    以下是关于Spring Batch线上异常定位记录的完整攻略: 1. 异常定位前的准备工作 在使用Spring Batch时,我们需要做好记录异常信息的工作,可以借助Spring Batch提供的日志输出功能进行记录。特别地,我们在实现任务的时候,可以添加定时异常上报的任务。这样,出现问题时我们可以迅速地了解问题所在,进行快速的定位。 2. 异常记录方式 2…

    Java 2023年5月27日
    00
  • java实现文件编码转换的方法

    首先我们需要明确一下,文件编码转换的方法主要包括文件读取、编码转换以及文件写入三个过程,接下来我将一步一步地讲解如何在Java中实现文件编码转换。 第一步:确定源文件编码 在进行文件编码转换之前,我们需要先了解清楚源文件的编码格式,因为不同的编码格式需要采用不同的解码方式。具体的获取编码格式的方法可以使用Java自带的CharsetDetector类来实现,…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部