JAVA table 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();
//读取段落
intnum = range.numParagraphs();
Paragraph para;
for(inti=0; i
para = range.getParagraph(i);
//排除表格内容
if (!para.isInTable()) {
System.out.println(para.text());
}
}
考虑以上两种原因,我们最后并没有采取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,这里展示的是测试类
publicclass SpireApplication {
publicstaticvoid main(String[] args) {
String path = "D:\\testDoc22.doc";
spireParaghDoc(path);
spireForTableOfDoc(path);
}
//读取段落
publicstaticvoid spireParaghDoc(String path) {
Document doc = new Document(path);
for(inti = 0; i
Sectionsection= doc.getSections().get(i);
for(intj = 0; j
Paragraph paragraph = section.getParagraphs().get(j);
System.out.println(paragraph.getText());
}
}
}
//读取表格
publicstaticvoid spireForTableOfDoc(String path) {
Document doc = new Document(path);
for(inti = 0; i
Sectionsection= doc.getSections().get(i);
for(intj = 0; j
DocumentObject obj = section.getBody().getChildObjects().get(j);
if (obj.getDocumentObjectType() == DocumentObjectType.Table) {
Tabletable= (Table) obj;
for(intk = 0; k
TableRow rows=table.getRows().get(k);
for(intp = 0; p
for(inth = 0; h
Paragraph f = rows.getCells().get(p).getParagraphs().get(h);
System.out.println(f.getText());
}
}
}
}
}
}
}
}
通过上面代码我们就可以按段落和表格读取WORD中的内容,而后根据系统业务要求的格式进行封装即可。
【编辑推荐】
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0
JAVA table word,实战 | Java读取Word,包含表格!相关推荐
- php识别word语言,PHP读取word文档
在PHP中读取和写入WORD文档的代码 php // 建立一个指向新COM组件的索引 $word = new COM("word.application") or die(&quo ...
- 视频教程-Java并发编程实战-Java
Java并发编程实战 2018年以超过十倍的年业绩增长速度,从中高端IT技术在线教育行业中脱颖而出,成为在线教育领域一匹令人瞩目的黑马.咕泡学院以教学培养.职业规划为核心,旨在帮助学员提升技术技能,加 ...
- 视频教程-JAVA WEB开发实战-Java
JAVA WEB开发实战 主要研究方向为J2EE..net .数据库 .前端.Android,曾经服务过大型上市国企IT部门,软件企业联合创始人,对软件研发管理.市场营销有自己独特思想体系! 张晨光 ...
- python导入word转换的html,python如何转换word格式、读取word内容、转成html
# python如何转换word格式.读取word内容.转成html? import docx from win32com import client as wc # 首先将doc转换成docx wo ...
- java如何解析word大纲_java读取word并解析
java POI3.8处理word模板,文字 图片 表格 将word模板里面的特殊标签换成 文字,图片, 以下是处理的代码 特殊标签最好的复制粘贴到word模板里面 ,因为手动敲入可能有点小的差别都导 ...
- php读取word格式,php读取word格式 phpword 读取word内容
PHP怎么读取WORD文档 传就传吧,后台传什么文件都可以,原样保留在文件夹下面就行了,天台的直接指向它,只要前台安装了相应的程序就能打开,例如指向一个WORD的代码可以是:你可能觉得这样很不好,前台 ...
- python怎么重命名word文件,Python读取word文本操作详解
本文研究的主要问题时Python读取word文本操作,分享了相关概念和实现代码,具体如下. 一,docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就 ...
- c语言如何自动生成word,C语言读取word文档的方法
C语言读取word文档的方法 第一种方法: 复制代码 代码如下: Response.ClearContent(); Response.ClearHeaders(); Response.ContentT ...
- python 合并word文件_python读取word合并单元格
在excel中,合并.拆分单元格是经常会用到的.而在word文档中,偶尔我们也需要插入表格,然后编辑表格,那么如何对word中的表格单元格进行合并.拆分呢? 一.如何在word中创建表格 1.选择&q ...
最新文章
- 判断手势_手势密码有几种?
- Android App的架构设计:从VM、MVC、MVP到MVVM
- 除手机平板PC外 华为终端明年全线搭载鸿蒙系统
- 问题三十六:ray tracing中的Inverse Mapping(1)——球面Inverse Mapping
- 德江多措施推进大数据应用“智慧德江”建设
- linux批量配置文件,linux下根据用户输入批量修改配置文件ip
- c语言用数组实现大数加减,c语言版大数计算器(实现大数的加减乘除运算,已更新源代码)...
- 计算机考研 外部排序,2021考研408数据结构基础知识点:外部排序
- Ring buffer streaming in general - how to imple...
- KEIL MDK平台 S3C2440 C语言软件仿真
- 内存测试拷机软件,烤机软件 OCCT 更新 9.0.0 版本,新增 CPU/内存跑分测试
- html 隐藏广告代码,js漂浮广告原理 js或者CSS带关闭的漂浮广告代码
- java 独木桥_Java实现洛谷 P1007独木桥
- ChatGPT实现代码生成
- 飞机大战h5微信小游戏代码
- 线性回归统计指标 SSE、MSE、RMSE、MAE、R-square
- mysql 集合 思想_面向集合的思维编写SQL(第九篇 --- “我说的是:苹果柿子李子栗子梨的那个橘子啊”)...
- Integer关于equals与==的比较(自动拆装箱技术和常量池技术)
- 真静态与伪静态的区别,伪静态的实现原理及简单使用
- 程序员你确定这十个题你都会吗?
热门文章
- CF16A Flag
- nodejs+kafka+storm+hbase 开发
- 使用 JavaScript 实现简单候选项推荐功能(模糊搜索)【收藏】【转】
- 浅析C#的事件处理和自定义事件
- ASP。NET的设计思想
- linux的系统移植——uboot常用命令
- 【剑指offer】面试题16:数值的整数次方(Java)
- Leetcode--264. 丑数Ⅱ
- java dct变换_Discrete Cosine Transform [DCT] (离散余弦变换)
- 一个神奇的测试_这4个在线黑科技工具拥有神奇的魔法,值得收藏!