当前位置: 首页 > news >正文

java解析word文档

文章目录

  • 读取段落
  • 读取图片
  • 读取表格内容
  • 页码

读取段落

  读取段落内容非常简单。以下是一个demo:

public static void main(String[] args) {try(FileInputStream stream = new FileInputStream("parse/pages.docx")) {XWPFDocument document = new XWPFDocument(stream);List<XWPFParagraph> paragraphs = document.getParagraphs();for (XWPFParagraph paragraph: paragraphs) {System.out.println(paragraph.getText());}} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}
}

  

读取图片

  读取word里的图片也不难了,只需要获取XWPFPictureData对象就可以了,然后就可以获取到图片内容的byte数组。


public static void main(String[] args) {try(FileInputStream stream = new FileInputStream("parse/pages.docx")) {XWPFDocument document = new XWPFDocument(stream);List<XWPFPictureData> allPictures = document.getAllPictures();for (XWPFPictureData pictureData: allPictures) {byte[] data = pictureData.getData();File file = new File(pictureData.getFileName());Files.write(file.toPath(), data);}} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}
}

读取表格内容

  word中的表格,是XWPFTable-XWPFTableRow-XWPFTableCell的三级结构。有个这个三级结构,就非常好写代码获取了。

public static void main(String[] args) {try(FileInputStream stream = new FileInputStream("parse/table.docx")) {XWPFDocument document = new XWPFDocument(stream);List<XWPFTable> tables = document.getTables();for (XWPFTable table: tables) {List<XWPFTableRow> rows = table.getRows();for (XWPFTableRow row: rows) {List<XWPFTableCell> tableCells = row.getTableCells();for (XWPFTableCell cell: tableCells) {System.out.print(cell.getText());System.out.print("\t");}System.out.println();}}} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}
}

页码

  实际工作中,解析word的场景少,生成word的场景多。但是如果有个需求是获取word特定一页的内容呢?比如说获取第9页内容,怎么办?可以说非常难实现,因为apache poi只能读取word底层的xml模型,实际的页码需要渲染才知道。

http://www.dtcms.com/a/283021.html

相关文章:

  • windows内核研究(进程与线程-等待链表和调度链表和线程切换)
  • Excel 导入导出工具类文档
  • ubuntu中拷贝docker容器中的文件到宿主机
  • 万字长文解析 OneCode3.0 AI创新设计
  • 微服务的编程测评系统2
  • 2025年量化交易平台对比:付费与开源方案深度分析
  • nerdctl - 兼容 Docker 语法 的 containerd 命令行界面
  • 17.图像金字塔采样(放大,缩小处理)拉普拉斯金字塔
  • 闰年的历史由来与C语言实现详解
  • 7.16 拓扑排序 | 欧拉回路 |链表排序 前缀和
  • Vue在线预览Excel和Docx格式文件
  • Redis学习其一
  • Python学习之路(十三)-常用函数的使用,及优化
  • Redis读写策略深度解析:高并发场景下的缓存兵法
  • python基础语法9,用os库实现系统操作并用sys库实现文件操作(简单易上手的python语法教学)
  • 猫眼娱乐IOS开发一面手撕算法
  • 嵌入式学习笔记--MCU阶段--DAY06DHT11练习
  • AR智能巡检:电力行业数字化转型的“加速器”
  • 基于Llama的RAG 3种模型配置方法
  • 51c自动驾驶~合集7
  • 基于C#开发solidworks图库中文件(SLDPRT,SLDASM,SLDDRW等)转换为HTML和PDF,提供批量和实时转换
  • AI产品经理面试宝典第28天:自动驾驶与智慧交通融合面试题与答法
  • 自动驾驶激光3D点云处理系统性阐述及Open3D库函数应用
  • MR 处于 WIP 状态的WIP是什么
  • 小模型的价值重估:从“缩水版DeepSeek”到AI系统的基础执行单元20250716
  • Linux 挂载新磁盘导致原文件被隐藏解决方案
  • 【代码】Matlab鸟瞰图函数
  • sqli-labs靶场通关笔记:第23关 注释符过滤
  • 叉车机器人如何实现托盘精准定位?这项核心技术的原理和应用是什么?
  • 静默的田野守护者:Deepoc具身智能如何让除草机器人读懂大地密语