千家信息网

怎么用Java读取Word包含表格

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,本篇文章给大家分享的是有关怎么用Java读取Word包含表格,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。本文转载自微信公众号「JAVA
千家信息网最后更新 2025年11月13日怎么用Java读取Word包含表格

本篇文章给大家分享的是有关怎么用Java读取Word包含表格,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

本文转载自微信公众号「JAVA日知录」,作者单一色调。转载本文请联系JAVA日知录公众号。

不能每天都发鸡汤呀,今天分享一篇开发实战。

业务需求

我们有这样一个需求,需要抽取出WORD文档中的内容,然后组装成特定的json格式发送给第三方引擎接口,输入协议如下:

{     "tables": [         {             "cells": [                 {                     "col": 1,                     "row_span": 1,                     "row": 1,                     "col_span": 1,                     "content": "车辆名称"                 }             ],             "id": 0,             "row_num": 2         }     ],     "paragraps": [         {             "para_id": 1,             "content": "Hello,JAVA日知录"         }     ] }

这个输入格式一看就是需要我们分段落和表格读取word中的内容,既然需求已定,那就直接开始动手写代码吧。

基于POI实现

把 "java如何读取word" 拿到百度去搜索,答案基本都是利用POI来实现。当然利用POI确实可以实现按段落和表格提取出内容并组装成上述格式,但是在实践过程中有下面2个问题:

需要分别处理两种格式docx、docPOI使用不同的API来读取docx和doc,所以读取逻辑我们需要编写两次。

POI读取doc的段落时会把表格的内容也读取出来 这个问题比较坑,poi有单独的方法读取文档中所有表格,但是在读取doc格式段落文档的时候会把表格内容也读取出来,所以我们需要用如下方法排除掉表格:

//读取doc HWPFDocument doc = new HWPFDocument(stream); Range range = doc.getRange();  //读取段落 int num = range.numParagraphs(); Paragraph para; for (int i=0; i

考虑以上两种原因,我们最后并没有采取POI来实现word内容提取功能,而是采用第二种方法,即利用 Spire.Doc for Java 来实现。

Spire.Doc for Java

Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建、读取、编辑、转换和打印等功能集成到自己的 Java 应用程序中。

作为一款完全独立的组件,Spire.Doc for Java 的运行环境无需安装 Microsoft Office。官网地址是 https://www.e-iceblue.cn/,我们项目中使用的开源免费版。

首先我们修改maven仓库地址

              com.e-iceblue         http://repo.e-iceblue.com/nexus/content/groups/public/      

引入对应的jar包

     e-iceblue     spire.doc.free     3.9.0 

读取word,这里展示的是测试类

public class SpireApplication {      public static void main(String[] args) {         String path = "D:\\testDoc22.doc";         spireParaghDoc(path);         spireForTableOfDoc(path);      }      //读取段落     public static void spireParaghDoc(String path) {         Document doc = new Document(path);         for (int i = 0; i < doc.getSections().getCount(); i++) {             Section section = doc.getSections().get(i);             for (int j = 0; j < section.getParagraphs().getCount(); j++) {                 Paragraph paragraph = section.getParagraphs().get(j);                 System.out.println(paragraph.getText());             }         }     }      //读取表格     public static void spireForTableOfDoc(String path) {         Document doc = new Document(path);         for (int i = 0; i < doc.getSections().getCount(); i++) {             Section section = doc.getSections().get(i);             for (int j = 0; j < section.getBody().getChildObjects().getCount(); j++) {                 DocumentObject obj = section.getBody().getChildObjects().get(j);                 if (obj.getDocumentObjectType() == DocumentObjectType.Table) {                     Table table = (Table) obj;                     for (int k = 0; k < table.getRows().getCount(); k++) {                         TableRow rows = table.getRows().get(k);                         for (int p = 0; p < rows.getCells().getCount(); p++) {                             for (int h = 0; h < rows.getCells().get(p).getParagraphs().getCount(); h++) {                                 Paragraph f = rows.getCells().get(p).getParagraphs().get(h);                                 System.out.println(f.getText());                             }                         }                     }                 }             }         }     }  }

通过上面代码我们就可以按段落和表格读取WORD中的内容,而后根据系统业务要求的格式进行封装即可。

以上就是怎么用Java读取Word包含表格,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

表格 内容 段落 格式 文档 方法 需求 业务 代码 公众 功能 地址 就是 是在 更多 知识 篇文章 组件 问题 j++ 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 金仓数据库和神通哪个好 山西数据库空投箱厂家现货 东西湖武大网络安全学院 论文查重的范围包括哪些数据库 工作流数据库表结构设计 新泰app软件开发哪家好 天台直销软件开发图片 盐城海航软件开发来电咨询 松江区市场软件开发报价表 feenix服务器 数据库本机地址怎么填 辽宁运营软件开发条件 苹果软件开发哪个好 恒实科技 工业互联网 什么行业最需要数据库服务 杨浦区参考数据库服务有哪些 1025是什么数据库接口 下单软件开发流程 铁木真网络技术有限公司怎么样 浪潮三年软件开发 2021湖湘杯网络安全大赛 无线网络技术包括wifi 国内哪些邮箱服务器供应商 gis怎么修改数据库 文明重启服务器怎么开才好 上饶企业管理软件开发报价 安徽省视频会议服务器虚拟主机 软件开发工程师调研客户 下列关于网络安全法描述不 文档右下角找不到数据库
0