Python的一次实际应用:利用Python操作Word文档的页码

Python的一次实际应用:利用Python操作Word文档的页码

需求:一次性处理24个文档的页码。

文档详情:

1、每个word文档包含800页左右,每一页包含一个标题和一张图片。

2、由于图片有横排也有竖排,因此,每页文档都进行了分节处理。

3、但每一节的页码格式不统一,并且没有连续编号。

要求:

1、所有页面的页码必须连续编号。

2、所有页面的页码格式必须统一(字体、字号相同)。

如果手工处理工作量很大,因为无法全部选中页脚。使用Python语言程序来处理上述文档,程序代码如下:

from docx import Document
from docx.oxml.shared import qn
from docx.oxml import parse_xmldef process_word_document(doc_path, output_path):# 打开Word文档doc = Document(doc_path)# 获取文档中的所有节sections = doc.sectionsprint(f"文档共有 {len(sections)} 个节")# 处理第一节(特殊处理,不链接到前一节)first_section = sections[0]first_footer = first_section.footer# 清除第一节页脚内容for paragraph in list(first_footer.paragraphs):p = paragraph._elementp.getparent().remove(p)for table in list(first_footer.tables):t = table._elementt.getparent().remove(t)print("已处理第1节")# 处理其他节for i, section in enumerate(sections[1:], 1):footer = section.footer# 清除页脚内容for paragraph in list(footer.paragraphs):p = paragraph._elementp.getparent().remove(p)for table in list(footer.tables):t = table._elementt.getparent().remove(t)# 设置页脚链接到前一节footer.is_linked_to_previous = True# 设置页码为续前节sectPr = section._sectPrpgNumType = sectPr.find(qn('w:pgNumType'))if pgNumType is None:pgNumType = parse_xml(r'<w:pgNumType xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"/>')sectPr.append(pgNumType)# 移除start属性以确保续前节start_attr = qn('w:start')if pgNumType.get(start_attr) is not None:pgNumType.attrib.pop(start_attr, None)# 每处理100节打印一次进度if (i + 1) % 100 == 0:print(f"已处理 {i + 1} 个节")# 保存文档doc.save(output_path)print(f"处理完成! 共处理了 {len(sections)} 个节")print("所有节的页脚已清除,设置为链接到前一节,且页码设置为续前节")# 使用示例
if __name__ == "__main__":input_file = r"d:\wgx\ok\a619.docx"  # 输入文件路径output_file = r"d:\wgx\ok\a6190.docx"  # 输出文件路径process_word_document(input_file, output_file)

由于程序代码调用了第三方库(python-docx),因此需要先安装python-docx库才能运行上述代码。

打开windows命令行窗口,执行如下命令:

pip install python-docx

执行结果如下图所示:

在这里插入图片描述

打开Python集成环境,执行上面的程序代码。结果如下:

在这里插入图片描述

该程序的功能是:

1、清除所有节中页脚的内容(包括页码)。

2、设置每一节【链接到前一节】属性。

3、设置每一节的页码为【续前节】。

执行完毕后,在文档的任意一节中手工插入页码,设置页码的格式即可。则整个文档的页码格式保持一致,并且每一节连续编号。

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

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

相关文章

Android15 GKI版本分析Kernel Crash问题

环境介绍编译主机&#xff1a;amd64 Ubuntu 22.04Android源码&#xff1a;Android15 GKIKernel版本&#xff1a;Linux 6.16Android构建系统&#xff1a;bazel构建工具链&#xff1a;gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-定位Linux…

rocky 9部署Zabbix监控

一、rocky安装 需要注意在设置root用户密码时&#xff0c;勾选ssh远程连接 安装完成后直接用root登录 1. 网络配置 输入nmtui 进入网络配置界面 选择 Edit a connection&#xff0c;再选择接口 ens3 IPV4更改为Maual 手动模式 根据实际环境配置IP地址 重启网络 systemctl …

从9.4%到13.5%:ICDM2025录取率触底反弹,竞争压力稍缓

近日&#xff0c;ICDM 2025公布了论文录用结果。本次大会共收到785篇有效论文投稿&#xff0c;最终&#xff0c;共有106篇常规论文和70篇短论文被接收&#xff0c;总体接收率为22.4%&#xff0c;其中全文论文的接收率为13.5%。与前年9.4%、去年11.09%的录取率相比&#xff0c;I…

linux上安装methylkit -- 安全下车版 (正经版: Linux环境下安装methylKit的实践与避坑指南)

题外话&#xff1a; 我踩过的坑&#xff0c;都将成为我写贴的素材&#xff01;(ㄒoㄒ) 整整安装了两天&#xff0c;这里面的滋味懂的都懂。 希望开发作者持续维护。 希望有人或者作者持续打包成sigularity镜像使用&#xff0c;并且直接传到github上&#xff0c;传到docker上下…

【leetcode】114. 二叉树展开为链表

文章目录题目题解1. 递归2. 迭代3. 右指针重排&#xff0c;始终将右子树添加到左子树的最右题目 114. 二叉树展开为链表 题解 1. 递归 先序遍历然后将数组操作 for i in range(1, len(res)):prev, curr res[i - 1], res[i]prev.left Noneprev.right curr# Definition fo…

Vibe Coding、AI IDE/插件

概述 Vibe Coding&#xff0c;氛围编程&#xff0c;AI辅助编程&#xff0c;三剑客&#xff1a; Google Gemini&#xff1a;OpenAI GPT&#xff1a;Anthropic Claude&#xff1a; IDE Cursor 基于VS Code开发。 特性&#xff1a; AI驱动的代码生成&#xff1a;输入想要的…

Unity高级UI拖动控制器教程

在游戏开发过程中&#xff0c;UI组件的拖动功能是一个常见的需求。特别是在需要实现拖动、边界检测、透明度控制以及动画反馈等功能时&#xff0c;编写一个高级UI拖动控制器将非常有用。在本文中&#xff0c;我们将创建一个支持多种Canvas模式和更精确边界检测的高级UI拖动控制…

零基础上手:Cursor + MCP 爬取 YouTube 视频数据

前言 大模型与 AI 应用越来越普及的今天&#xff0c;实时、稳定地获取网络数据变得尤为重要。无论是做内容分析、趋势研究还是自动化任务&#xff0c;爬取和处理数据始终是绕不开的一环。 传统爬虫往往面临封禁、验证码、动态渲染等难题&#xff0c;而 Bright Data MCP&#x…

frp 一个高性能的反向代理服务

文章目录项目概述核心特性系统架构快速开始1. 下载安装2. 服务端快速配置3. 客户端快速配置4. 验证连接配置文件说明代理类型TCP/UDP 代理HTTP/HTTPS 代理安全代理 (STCP/SUDP)P2P 代理 (XTCP)插件系统静态文件服务HTTP/SOCKS5 代理协议转换使用场景远程办公Web 服务发布游戏服…

Android -第二十一次技术总结

一、activity与Fragment的通信有哪些&#xff1f;使用接口进行通信的逻辑与代码示例使用接口通信的核心是解耦&#xff0c;通过定义一个接口作为通信契约&#xff0c;让 Fragment 不依赖于具体的 Activity 类型。1. 定义通信接口&#xff08;在 Fragment 内&#xff09;首先&am…

【算法】78.子集--通俗讲解

通俗易懂讲解“子集”算法题目 一、题目是啥?一句话说清 给你一个不含重复元素的整数数组,返回所有可能的子集(包括空集和它本身)。 示例: 输入:nums = [1,2,3] 输出:[[], [1], [2], [1,2], [3], [1,3], [2,3], [1,2,3]] 二、解题核心 使用回溯法(递归)或位运算来…

Cherrystudio的搭建和使用

1、下载和安装 Cherry Studio 官方网站 - 全能的 AI 助手 2、配置LLM 3、聊天助手 3.1 添加和编辑助手 3.2 选择LLM 3.3 对话聊天 4、配置MCP 4.1 安装MCP执行插件 4.2 安装 node和npm Node.js — Download Node.js npm -v 10.9.3 node -v v22…

基于Matlab结合肤色检测与卷积神经网络的人脸识别方法研究

近年来&#xff0c;随着人工智能与计算机视觉技术的发展&#xff0c;人脸识别在人机交互、安防监控、身份认证等领域得到了广泛应用。本文提出了一种基于 MATLAB 平台&#xff0c;结合 肤色检测与卷积神经网络&#xff08;CNN&#xff09; 的人脸识别方法。该方法首先利用肤色模…

在八月点燃AI智慧之火:CSDN创作之星挑战赛开启灵感盛宴

在八月点燃AI智慧之火&#xff1a;CSDN创作之星挑战赛开启灵感盛宴八月骄阳似火&#xff0c;智能时代的技术热情同样炽热。在这个充满创新活力的季节&#xff0c;「AIcoding八月创作之星挑战赛」正式拉开帷幕&#xff0c;为CSDN的创作者们打造一个展示才华、碰撞灵感的专业舞台…

解密 Vue 3 shallowRef:浅层响应式 vs 深度响应式的性能对决

&#x1f4d6; 概述 shallowRef() 是 Vue 3 中的一个组合式 API 函数&#xff0c;用于创建浅层响应式引用。与 ref() 不同&#xff0c;shallowRef() 只在其 .value 被直接替换时触发响应式更新&#xff0c;不会深度监听对象内部属性的变化。 &#x1f3af; 基本概念 什么是 sh…

Linux进程间通信(IPC)深入解析

Linux进程间通信&#xff08;IPC&#xff09;深入解析 1 概述 Linux 进程间通信 (Inter-Process Communication, IPC) 是不同进程之间交换数据与同步操作的机制。现代 Linux 内核提供了多种 IPC 方式&#xff0c;从传统的管道和 System V IPC 到现代的套接字和 D-Bus&#xff0…

TensorFlow-GPU版本安装

前言&#xff1a; &#xff08;1&#xff09;因项目需求&#xff0c;需要安装TensorFlow-GPU版本&#xff0c;故本文在此记录安装过程。 &#xff08;2&#xff09;有注释&#xff0c;优先看注释 &#xff08;3&#xff09;本文所使用的GPU为NVIDIA GeForce RTX 5080 Laptop GP…

Elasticsearch 索引字段删除,除了 Reindex 重建索引还有没有别的解决方案?

unsetunset1、问题来源unsetunset在生产环境维护 Elasticsearch 集群的过程中&#xff0c;经常会遇到这样的场景&#xff1a;业务需求变更导致某些字段不再使用&#xff0c;或者早期设计时添加了一些冗余字段&#xff0c;现在需要清理掉。最近球友在公司的一个项目中就遇到了这…

Ubuntu虚拟机磁盘空间扩展指南

这是一份详细且易于理解的 Ubuntu 虚拟机磁盘空间扩展指南。本指南涵盖了两种主流虚拟机软件&#xff08;VirtualBox 和 VMware&#xff09;的操作步骤&#xff0c;并分为 “扩展虚拟磁盘” 和 “在 Ubuntu 内部分配新空间” 两大部分。重要提示&#xff1a;在进行任何磁盘操作…

教程1:用vscode->ptvsd-创建和调试一个UI(python)-转载官方翻译(有修正)

vscode用python开发maya联动调试设置 3dsMax Python开发环境搭建 3文联动之debugpy调试max‘python. 3文联动之socket插槽注入max‘python 本教程是max主动接收创建代码的方式&#xff08;预先运行界面&#xff0c;通过按钮主动读取py脚本&#xff0c;执行断点&#xff09;&…