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)

大家都在看

  • Java 几种常见数据库连接方式

    String Driver=”com.mysql.jdbc.Driver”; //驱动程序 String URL=”jdbc:mysql://l…

    Java 2023年6月7日
    097
  • 不到 20 人的 IT 公司该去吗?

    来源:https://www.zhihu.com/question/421150601 群里经常有一些朋友问:一些初创的IT公司,一共几个人的配置,老板+1-2个前端+3-4个后端…

    Java 2023年6月15日
    0110
  • java集合框架07——Map架构与源代码分析

    前几节我们对Collection以及Collection中的List部分进行了分析,Collection中还有个Set,因为Set是基于Map实现的,所以这里我们先分析Map,后面…

    Java 2023年5月29日
    083
  • 使用Gradle构建Java项目

    使用Gradle构建Java项目 这个手册将通过一个简单的Java项目向大家介绍如何使用Gradle构建Java项目。 我们将要做什么? 我们将在这篇文档中创建一个简单的Java项…

    Java 2023年5月29日
    0137
  • VS Code常用插件

    VS Code常用插件 一、插件的下载 打开VScode之后点击右侧带有小方块的图标在上方的输入框中输入想要下载的插件的名称即可 二、插件的种类 Chinese (Simplifi…

    Java 2023年6月13日
    0100
  • spring框架技术方面

    一:描述spring事务的只读,超时,回滚的原则。1.spring事务的只读:“只读事务”并不是一个强制选项,它只是一个暗示,提示数据库驱动程序和数据库系统…

    Java 2023年6月5日
    080
  • 【每天学一点-01】 在SpringBoot项目中使用Swagger2

    今天在做毕设的时候,发现在前后端分离的情况下,去调用接口数据时很不方便,然后回想过去,和同学一起做项目的时候,他负责后端,我负责前端,当时调用他的弄好的接口可以说是非常方便,主要是…

    Java 2023年6月5日
    094
  • ruoyi框架-将本地mybatis修改为mybatisplus

    1.修改根目录下pom.xml文件,注释mybatis依赖,引入mybatis-plus依赖。 <dependency> <groupId>com.baom…

    Java 2023年5月30日
    076
  • Nginx中的rewrite指令(break,last,redirect,permanent)

    在server块下,会优先执行rewrite部分,然后才会去匹配location块 server中的rewrite break和last没什么区别,都会去匹配location,所以…

    Java 2023年5月30日
    085
  • GBase 8t数据更新

    插入数据 插入元组 insert into &#x8868;&#x540D;(&#x5217;&#x540D;…) values (&#…

    Java 2023年6月9日
    073
  • 命令行传参是否只能针对main方法

    先上结论 命令行传参只能针对main方法而言,而且格式严格 这里在原有主类 test基础上创建了另一个类,名字为 testCMD,但里面创建的方法并不是main方法,在cmd内编译…

    Java 2023年6月7日
    082
  • [学习笔记] Java接口

    接口是Java中的一种抽象类型,是抽象方法的集合; 接口使用 interface关键字声明; 接口不是类,它们属于不同的概念,类描述对象的属性和方法,接口则包含要实现的方法; 一个…

    Java 2023年6月5日
    081
  • 【JUC】ReentrantReadWriteLock

    ReentrantReadWriteLock 概述 先带着问题去看这个类: 著作权归https://pdai.tech所有。 链接:https://www.pdai.tech/md…

    Java 2023年6月5日
    0103
  • JUC锁:核心类AQS源码详解

    1 疑点todo和解疑 2 AbstractQueuedSynchronizer学习总结 2.1 AQS要点总结 2.2 细节分析 2.2.1 插入节点时先更新prev再更新前驱n…

    Java 2023年6月7日
    0123
  • spring boot设置日志打印为控制台输出和文件输出

    日志打印 sources里建 logback-spring.xml ${CONSOLE_LOG_PATTERN} ${CONSOLE_LOG_CHARSET} ${FILE_LOG…

    Java 2023年6月14日
    0100
  • 如何在电脑上配置Vue开发环境

    一,开发环境 : Node JS(npm) Visual Studio Code(前端IDE) 安装NodeJS 下载地址: nodejs中文网 Visual Studio Cod…

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