XWPFDocument创建和读取Office Word文档基础篇(一)

注:有不正确的地方还望大神能够指出,抱拳了 老铁!

建议大家使用office word来创建文档。(wps和word结构有些不一样)

IBodyElement ——————-迭代器(段落和表格)

XWPFComment ——————-评论(个人理解应该是批注)

XWPFSDT

XWPFFooter ——————-页脚

XWPFFootnotes ——————-脚注

XWPFHeader ——————-页眉

XWPFHyperlink ——————-超链接

XWPFNumbering ——————-编号(我也不知是啥…)

XWPFParagraph ——————-段落

XWPFPictureData ——————-图片

XWPFStyles ——————-样式(设置多级标题的时候用)

XWPFTable ——————-表格

1、正文段落

一个文档包含多个段落,一个段落包含多个Runs,一个Runs包含多个Run,Run是文档的最小单元

获取所有段落:List

获取一个段落中的所有Runs:List

获取一个Runs中的一个Run:XWPFRun run = xwpfRuns.get(index);

XWPFRun–代表具有相同属性的一段文本

2、正文表格

一个文档包含多个表格,一个表格包含多行,一行包含多列(格),每一格的内容相当于一个完整的文档

获取所有表格:List

获取一个表格中的所有行:List

获取一行中的所有列:List

获取一格里的内容:List

之后和正文段落一样

个人理解:我不能确定表格所处的位置(第一个段落后面 ,还是第二个段落后面…)

3、页眉:

一个文档可以有多个页眉,页眉里面可以包含段落和表格

获取文档的页眉:List

获取页眉里的所有段落:List

获取页眉里的所有表格:List

之后就一样了

4、页脚:

页脚和页眉基本类似,可以获取表示页数的角标

言归正传——-干货:

1、通过XWPFDocument读:段落+表格

a、获取文档的所有段落

获取段落内容

b、获取文档中所有的表格

2、XWPFDocument生成word

直接new一个空的XWPFDocument,之后再往这个XWPFDocument里面填充内容,然后再把它写入到对应的输出流中。

新建一个文档

新建一个表格

段落内容替换

直接调用XWPFRun的setText()方法设置文本时,在底层会重新创建一个XWPFRun,把文本附加在当前文本后面,所以我们不能直接设值,需要先删除当前run,然后再自己手动插入一个新的run。

//抽取 word docx文件中的图片

多级标题结构

Original: https://www.cnblogs.com/unruly/p/7479518.html
Author: 福尔摩狼
Title: XWPFDocument创建和读取Office Word文档基础篇(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579646/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux Ubuntu 下载&安装 MySQL

    1. 下载安装 下载&安装:一句搞定 sudo apt update sudo apt install mysql-server 查看版本信息 mysql –versio…

    Java 2023年6月5日
    0102
  • MongoDB学习笔记-2、MongoDB简介与安装

    1、MongoDB简介 1.1、什么是MongoDB 一个基于分布式的文件存储数据库,旨在简化开发和扩展。属于NoSQL数据库,由C++语言编写,为web应用提供可扩展的高性能数据…

    Java 2023年6月5日
    080
  • 第2课第6节_Java面向对象编程_包和权限_P【学习笔记】

    摘要:韦东山android视频学习笔记 1、使用package定义编译的时候存放的位置 1 package a.b.c.d; 2 3 public class Package { …

    Java 2023年5月29日
    057
  • 分享一例同一系统里不同服务之间通信的设计方案

    优付系统结构如下。一个数据库之上,有商户接口(RestAPI)、运营后台(OMS)、商户门户这3个独立SSM应用,三者有各自不同的功能处理逻辑。 现在呢,要做一个补偿工具。当付款单…

    Java 2023年6月15日
    063
  • linux开放8080等其他端口命令

    防火墙中配置开放 8080端口 注:以下命令只针对 CentOs 7 以上版本,CentOS升级到7之后,无法使用iptables控制Linux的端口,原因是Centos 7使用f…

    Java 2023年6月6日
    094
  • JAVA基础学习第三天!

    精华笔记: 1.运算符: -算术:+、-、*、/、%、++、– -关系:>、 -逻辑:&&、||、! -赋值:=、+=、-=、*=、/=、%= -…

    Java 2023年6月13日
    058
  • 拿到任务,先做分解

    分解的目的:简化问题的复杂度 分解任务的好处 怎么分解: 抓住重点,去掉不必要的东西,留下必须要做的,找到任务的主干 按单一职责原则对任务拆解,罗列功能点(比如要实现一个XX模块,…

    Java 2023年6月15日
    057
  • 【Tool】Idea快捷键

    Idea Windows Ctrl + F12: 查找当前类中的方法Ctrl + N: 查找类Ctrl + Alt + H: 查看方法调用关系Ctrl + H: 查看类的继承关系A…

    Java 2023年6月7日
    042
  • 【深入Java虚拟机】二 类加载与双亲委派

    https://blog.csdn.net/zhangliangzi/article/details/51338291 -参考 双亲委派过程:当一个类加载器收到类加载任务时,立即将…

    Java 2023年5月29日
    090
  • 6000字|22张图 带你彻底弄懂Zookeeper分布式锁

    前面我们剖析了Redisson的源码,主要分析了Redisson实现Redis分布式锁的15问,理清了Redisson是如何实现的分布式锁和一些其它的特性。这篇文章就来接着剖析Zo…

    Java 2023年6月16日
    072
  • Mybatis系列全解(三):Mybatis简单CRUD使用介绍

    Mybatis系列全解(三):Mybatis简单CRUD使用介绍 Mybatis系列全解(三):Mybatis简单CRUD使用介绍 – + 前言 Mybaits系列全解…

    Java 2023年6月7日
    070
  • Spring核心知识概述

    目录:1. IOC理论2. IOC创建对象的方式3. Spring配置4. 依赖注入5. Bean的自动装配6. 使用注解开发7. 使用纯java配置Spring8. Spring…

    Java 2023年6月5日
    070
  • 写了个简洁的Typora+Markdown简历模板

    项目地址:https://github.com/CodingDocs/typora-markdown-resume (欢迎小伙伴们使用!个人能力有限,也欢迎小伙伴们一起完善这个简历…

    Java 2023年6月9日
    064
  • 导入导出笔记-easyExcel初探(表格导入和模板化导出)

    前言 本文使用的EasyExcel Alibaba和EasyPoi Apache技术栈分析 EasyExcel Dependency EasyPoi Dependency 1、需求…

    Java 2023年6月5日
    068
  • 针对FILES和PATH的操作

    在修改漏洞的时候发现,根据建议都使用NIO包的FILES和PATH来进行文件操作,来保证安全性. 使用Files前,需要先使用Path来获取文件路径,而且可以用Path转化为其他多…

    Java 2023年6月15日
    061
  • Spring Tool 历史版本下载

    参考资料 说在前面 历史版本下载 规律 参考资料 Spring Tool Suit3下载地址 说在前面 官方目前只提供最新版本的 Spring Tool 4下载,并没有提供历史版本…

    Java 2023年6月9日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球