论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
程序人生
›
Python自动合并Word文件同时添加分页符的方法 ...
Python自动合并Word文件同时添加分页符的方法
莱莱
金牌会员
|
2023-2-22 11:34:21
|
显示全部楼层
|
阅读模式
楼主
主题
683
|
帖子
683
|
积分
2049
本文介绍基于
Python
,实现对多个
Word
文档加以
自动合并
,并在
每次
合并时按要求增添一个
分页符
的方法。
现有多个
Word
文档文件,需将其按名称顺序合并为一个新的
Word
文件,且需保证每一次合并时,都另起一页(即新的
Word
文件一页中,不能出现两个及以上的原本单个
Word
文件的内容)。
一般的,实现多个
Word
文件的合并,在
Word
中可以通过“
插入
”→“
文本
”→“
对象
”的方式进行,较为方便。
在弹出的窗口中选择需要合并的
Word
文件即可。
但是,这种方法
工作量较大
,且
无法满足合并时另起一页的要求
。例如,如果原本有两个
Word
文件,每个文件中都仅有一页,一页中仅在第一行有内容(这里假设是一行数字),则合并后的新
Word
文件同样为一页,该页中包含两行数字,即无法另起一页合并。
因此,本文就结合Python中python-docx(docx)模块与docxcompose模块,实现本文开头提及的需求。
首先安装python-docx模块。由于我用的是
Anaconda
,因此就直接在
Anaconda
Prompt
(
Soft
)中加以安装。
打开
Anaconda Prompt (Soft)
。
在弹出的界面中输入:
conda install -c conda-forge python-docx
复制代码
输入y,开始安装。
随后即可安装完成。
接下来安装docxcompose,还是一样的操作。输入:
pip install docxcompose
复制代码
安装完成后,即可开始代码的书写。整体代码如下:
import os
from docx import Document
from docxcompose.composer import Composer
original_docx_path='F:/其他学生工作/2020就业联络员/2021.06派遣材料与调档函/地信1701_就业派遣材料/'
new_docx_path='F:/其他学生工作/2020就业联络员/2021.06派遣材料与调档函/地信1701.docx'
all_word=os.listdir(original_docx_path)
all_file_path=[]
for file_name in all_word:
all_file_path.append(original_docx_path+file_name)
master=Document(all_file_path[0])
middle_new_docx=Composer(master)
num=0
for word in all_file_path:
word_document=Document(word)
word_document.add_page_break()
if num!=0:
middle_new_docx.append(word_document)
num=num+1
middle_new_docx.save(new_docx_path)
复制代码
首先,对代码加以初步介绍。original_docx_path为存放需要合并的
Word
文件路径,new_docx_path为需要合并入其中的
Word
文件,这里大家直接在目标路径下新建一个
Word
文件并重命名为需要的文件名即可。
随后,通过os.listdir获取所有需要合并的
Word
文件文件名。在这里需要注意,如果需要按照文件名称作为合并顺序,大家直接在资源管理器中调整文件排序方法为名称即可。随后通过.append()逐一将文件名称与其路径合并。
接下来,设立一个
Word
文件模板master。其实这个模板就是限定了合并完成后的新
Word
文件的字体等格式,如果我们不设置模板,就会用docx模块中的默认模板,导致合并后的文件字体与合并前的文件字体不一致(内容是一致的,主要是字体等格式会出问题)。在这里,为了保证合并完成后的新
Word
文件的字体等格式与合并前文件一致,直接用all_file_path[0](也就是即将要被合并的第一个文件)作为模板即可。其次,将模板用Composer()激活(这里Composer函数个人认为就是激活的作用),从而将其作为模板格式,对多个待合并的文件加以约束。
最后,由于需要保证每一次合并都另起一页,便用.add_page_break()函数,在每一次合并前将这一待合并的文件末尾增添分页符。同时,由于我们用了第一个待合并文件作为模板,因此后期只需要从第二个文件开始进行合并即可(可以理解为,文件一旦选择为模板,其自动完成了自身的合并)。最后保存文件即可。
综上,便完成了“按名称顺序合并为一个新的
Word
文件,且需保证每一次合并时,都另起一页”的需求。但是需要注意,这一方法对于较为复杂的
Word
文件(例如含有文本框等形式内容的文件)不能实现合并,会报错;对于含有普通文字、图片等的
Word
文件而言,还是很方便的~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
莱莱
金牌会员
这个人很懒什么都没写!
楼主热帖
MySQL 隐式类型转换导致索引失效问题 ...
SQL的约束
MySQL实战45讲 9
攻防世界web 难度1新手练习
一天吃透Redis面试八股文
SpringMVC拦截器使用
微服务网关Gateway实践总结
代码块+控制流图+程序切片的学习 ...
详细剖析|袋鼠云数栈前端框架Antd 3.x ...
红标devcpp6.3编译器下载及配置教程 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表