Java 在Word文档中添加、删除页面

在排版或者编辑Word文档时,可能会需要增加新页面或删除某个已有页面,以便更好地呈现内容。下面将介绍如何使用国产Java控件来实现在Word文档中增删页面的功能。

目录

Java 在Word文档末尾新增一页

Java 在Word文档指定位置插入一页

Java 删除Word文档中的指定页面


我们需要使用 Spire.Doc for Java 库来处理Word文档 ,因此首先要在Java程序导入其依赖。可以在pom.xml文件中添加以下依赖:

<repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://repo.e-iceblue.com/nexus/content/groups/public/</url></repository>
</repositories>
<dependency><groupId>e-iceblue</groupId><artifactId>spire.doc</artifactId><version>12.4.14</version>
</dependency>

也可以下载该Java库,解压后手动将Spire.Doc.jar添加到程序中。

Java Word文档末尾新增一页

使用Spire.Doc for Java库在当前Word文档末尾新增一页需要先定位到文档中的最后一节,然后在该节中最后一个段落的末尾插入一个分页符。插入分页符之后所有新增的内容都会从新页面开始。

示例代码:

import com.spire.doc.*;
import com.spire.doc.documents.*;import java.awt.*;public class AddPage {public static void main(String[] args) {//加载Word文档Document document = new Document();document.loadFromFile("实验.docx");//获取文档最后一节的正文Body body = document.getLastSection().getBody();//在正文最后一个段落末尾插入分页符body.getLastParagraph().appendBreak(BreakType.Page_Break);//创建新段落并设置其文本内容Paragraph paragraph = new Paragraph(document);paragraph.appendText("在Word文档末尾新增一页");//创建并应用段落样式ParagraphStyle style = new ParagraphStyle(document);style.setName("paraStyle");style.getCharacterFormat().setFontName("微软雅黑");style.getCharacterFormat().setFontSize(16);style.getCharacterFormat().setBold(true);style.getCharacterFormat().setTextColor(Color.BLUE);document.getStyles().add(style);paragraph.applyStyle("paraStyle");paragraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);//将段落添加到正文的内容集合中body.getChildObjects().add(paragraph);//保存文档document.saveToFile("在Word中添加页面.docx", FileFormat.Docx);//关闭文档并释放资源document.close();document.dispose();}
}

以上代码在Word文档末尾新增加了一页,并在其中插入了一段文本。生成文件如图

Java Word文档指定位置插入一页

Word指定页面后插入新页面需要先确定指定页面内容的结束位置索引,然后将新页面的内容添加到其后。为了将新页面与后面的页面分隔开,需要在新页面中段落末尾插入分页符。

示例代码:

import com.spire.doc.*;
import com.spire.doc.pages.*;
import com.spire.doc.documents.*;import java.awt.*;public class InsertPage {public static void main(String[] args) {//加载Word文档Document document = new Document();document.loadFromFile("实验.docx");//创建FixedLayoutDocument对象FixedLayoutDocument layoutDoc = new FixedLayoutDocument(document);//获取第一页FixedLayoutPage page = layoutDoc.getPages().get(0);//获取文档正文Body body = page.getSection().getBody();//获取当前页最后一列的段落Paragraph paragraphEnd = page.getColumns().get(0).getLines().getLast().getParagraph();//初始化结束索引int endIndex = 0;if (paragraphEnd != null){//获取最后一个段落的索引endIndex = body.getChildObjects().indexOf(paragraphEnd);}//创建新段落并设置其文本内容Paragraph paragraph = new Paragraph(document);paragraph.appendText("在Word文档指定位置插入一页");//创建并应用段落样式ParagraphStyle style = new ParagraphStyle(document);style.setName("paraStyle");style.getCharacterFormat().setFontName("微软雅黑");style.getCharacterFormat().setFontSize(16);style.getCharacterFormat().setBold(true);style.getCharacterFormat().setTextColor(Color.BLUE);document.getStyles().add(style);paragraph.applyStyle("paraStyle");//在指定位置插入段落body.getChildObjects().insert(endIndex + 1, paragraph);;//添加分页符paragraph.appendBreak(BreakType.Page_Break);//保存文档document.saveToFile("在Word文档插入一页.docx",FileFormat.Docx);//关闭文档并释放资源document.close();document.dispose();}

以上代码在原Word文档第一页后插入了新的一页,并在其中添加了一段文本。生成文件如图

Java 删除Word文档中的指定页面

要删除指定Word页面,需要获取指定页面中起始元素和结束元素的位置索引,然后遍历其中每个元素并逐个移除,从而实现删除指定页面的所有内容。

示例代码:

import com.spire.doc.*;
import com.spire.doc.pages.*;
import com.spire.doc.documents.*;public class RemovePage {public static void main(String[] args) {// 加载Word文档Document document = new Document();document.loadFromFile("实验.docx");//创建FixedLayoutDocument对象FixedLayoutDocument layoutDoc = new FixedLayoutDocument(document);//获取第三页FixedLayoutPage page = layoutDoc.getPages().get(2);//获取页面的节Section section = page.getSection();// 获取三页第一列的段落Paragraph paragraphStart = page.getColumns().get(0).getLines().getFirst().getParagraph();//初始化开始索引int startIndex = 0;if (paragraphStart != null){//获取起始段落的索引startIndex = section.getBody().getChildObjects().indexOf(paragraphStart);}//获取第三页最后一列的段落Paragraph paragraphEnd = page.getColumns().get(0).getLines().getLast().getParagraph();//初始化结束索引int endIndex = 0;if (paragraphEnd != null){//获取结束段落的索引endIndex = section.getBody().getChildObjects().indexOf(paragraphEnd);}//删除指定范围内的内容for (int i = 0; i <= (endIndex - startIndex); i++){section.getBody().getChildObjects().removeAt(startIndex);}//保存文档document.saveToFile("删除Word页面.docx", FileFormat.Docx);//关闭文档并释放资源document.close();document.dispose();}
}

以上代码删除了Word文档第三页,生成文档如图:


对于一些结构比较复杂的Word文档,因页面布局不同结果可能有出入,测试时遇到任何问题可前往论坛交流

申请试用授权来移除水印:https://www.e-iceblue.cn/misc/temporary-license.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/19439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度ERNIE系列预训练语言模型浅析(4)-总结篇

总结&#xff1a;ERNIE 3.0与ERNIE 2.0比较 &#xff08;1&#xff09;相同点&#xff1a; 采用连续学习 采用了多个语义层级的预训练任务 &#xff08;2&#xff09;不同点&#xff1a; ERNIE 3.0 Transformer-XL Encoder(自回归自编码), ERNIE 2.0 Transformer Encode…

用Python实现办公自动化

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

洗地机什么品牌质量好?家用洗地机排行榜

一年一度的大促节又到了&#xff0c;各大电商平台和实体店纷纷推出力度不小的折扣活动&#xff0c;吸引着消费者的关注和购买欲望。很多家庭也趁着这个机会&#xff0c;购置一些智能家居产品来提升生活品质。其中&#xff0c;洗地机作为近年来发展迅速的明星产品&#xff0c;受…

Redis篇 哈希表在redis中的命令

哈希命令 一.哈希表的基本认识二. 哈希表在redis中的命令1.hset,hget2.hdel3.hkeys,hvals4.hexists5.hgetall6.hmget7.hlen8.hincrby和hincrbyfloat 一.哈希表的基本认识 在JAVA数据结构中&#xff0c;我们就已经接触到了哈希表&#xff0c; 在当时&#xff0c;我们主要用到的哈…

React18 apexcharts数据可视化之折线图

基础折线图 import ApexChart from react-apexcharts;export function Basic() {// 数据序列const series [{name: "Desktops",data: [10, 41, 35, 51, 49, 62, 69, 91, 148]},]// 图表选项const options {// 图表chart: {height: 650,type: line,zoom: {enabled:…

springboot发送短信验证码,结合redis 实现限制,验证码有效期2分钟,有效期内禁止再次发送,一天内发送超3次限制

springboot结合redis发送短信验证码,实现限制发送操作 前言(可忽略)实现思路正题效果图示例手机号不符合规则校验图成功发送验证码示例图redis中缓存随机数字验证码&#xff0c;2分钟后失效删除redis缓存图验证码有效期内 返回禁止重复发送图验证码24小时内发送达到3次&#xf…

【Leetcode 206】 反转链表——此递归相当妙啊

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; …

【机器学习300问】105、计算机视觉(CV)领域有哪些子任务?

计算机视觉作为人工智能的重要分支&#xff0c;发展至今已经在诸多领域取得显著的成果。在众多的计算机视觉任务中&#xff0c;图像分类、目标检测与定位、语义分割和实例分割是四个基本而关键的子任务&#xff0c;它们在不同的应用场景下扮演着重要角色。这四个子任务虽然各具…

深入理解JVM:内存结构、垃圾收集与性能调优

目录 JDK、JRE、JVM关系? 启动程序如何查看加载了哪些类&#xff0c;以及加载顺序? class字节码文件10个主要组成部分? JVM结构 画一下JVM内存结构图 程序计数器 Java虚拟机栈 本地方法栈 Java堆 方法区 运行时常量池? 什么时候抛出StackOverflowError? 例如&…

海医大三院使用先进血管外科微创技术成功救治危重主动脉夹层患者

近日,上海东方肝胆外科医院血管外科周建教授团队采用主动脉弓分支型一体化移植物联合体外开窗技术,成功救治复杂危重主动脉夹层患者,为上海嘉定首例,彰显了上海东方肝胆外科医院血管外科的优势与特色。 患者谢先生,72岁,两周前突发剧烈胸背部撕裂样疼痛,休息后症状未能得到缓解…

量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 为何选择QMT和VSCode进行量化策略开发&#xff1f; 在量化交易的世界里&#xff0c;选择正确的工具与拥有优秀的策略同等重要。调用用Visual Studio Code&#xff08;简称VSCode&#xff09;或pycharm&#xff0c;方…

JAVA 大鱼吃小鱼小游戏

java实现大鱼吃小鱼&#xff0c;支持身份证防沉迷、账号密码、选择难度 放沉迷 登录 选择难度 游戏界面

【移除链表元素】python

目录 题目&#xff1a; 方法&#xff1a; 知识&#xff1a; 代码&#xff1a; 题目&#xff1a; 方法&#xff1a; 在头节点前增加一个虚拟头节点 知识&#xff1a; 链表中的每一个节点只包含当前值val和指向下一个next 代码&#xff1a; class Solution:def removeEle…

uniapp或微信小程序一些问题解决

1.按钮边框如何去除&#xff1f; 参考博主&#xff1a;微信小程序按钮去不掉边框_微信小程序button去掉边框-CSDN博客文章浏览阅读1k次。最近在学uni-app&#xff0c;顺便自己写个小程序。左上角放了个button&#xff0c;可边框怎么也去不掉…原来微信小程序的按钮要去掉边框要…

汽车IVI中控开发入门及进阶(二十一):DAB和FM 收音机

前言: 在过去的十年里,数字收音机对车载娱乐产生了重大影响。现在,几乎每辆新车都标配了这项技术,这也是我们60%以上的人收听收音机的方式。甚至有传言称,在不久的将来,将永久关闭调频发射机,使许多车载收音机过时。但一些相对年轻的汽车在工厂里仍然没有安装DAB,而且…

六西格玛培训:企业逆袭的秘密武器!——张驰咨询

为了提升企业的运营效率、产品质量和客户满意度&#xff0c;六西格玛培训成为了一个不可或缺的环节。以下是企业成功实施六西格玛培训的关键步骤&#xff1a; 一、清晰设定培训目标 首先&#xff0c;企业应明确六西格玛培训的具体目标&#xff0c;如提升产品质量、降低成本、…

java Web开发中采用Servlet登录验证,中文用户名始终提示“用户名密码错误”以及输出中文乱码问题

采用Servlet登录验证&#xff0c;中文乱码问题解决 在Java Web开发中&#xff0c;往往采用Servlet完成前后端直接的控制和处理&#xff0c;例如&#xff1a;用户登录验证功能。 在采用如下Servle源码t完成用户名登录验证时&#xff0c;只要用户名涉及中文&#xff0c;对于正确…

SpringBoot 之基础(一)

文章目录 SpringBoot 基础基本概念创建 SpringBoot 项目编码编写启动类写 Controller运行 / 测试properties 和 yml关闭 Spring banner日志spring-boot 默认的日志格式 解决 start.spring.io 不能访问不使用 spring boot 的 parent pom SpringBoot 基础 Spring Boot 是由 Pivo…

梳理清楚的echarts地图下钻和标点信息组件

效果图 说明 默认数据没有就是全国地图&#xff0c; $bus.off("onresize")是地图容器变化刷新地图适配的&#xff0c;可以你们自己写 getEchartsFontSize是适配字体大小的&#xff0c;getEchartsFontSize(0.12) 12 mapScatter是base64图片就是图上那个标点的底图 Ge…

2024年5月最新高德poi数据采集科普

曾几何时&#xff0c;个人注册高德开发者即可拥有每日一万次免费配额调用&#xff0c;现如今&#xff0c;个人每日只能调用100次&#xff0c;即使额外购买了配额300元/10万次&#xff0c;也会因为短时间大量采集被封号。要想稳定采集&#xff0c;恐怕只有购买商业授权5万/年&am…