刚好接了个任务要批量修改一批docx页眉,经过一天面向so编程,以下是代码。因为本人只是业余,代码是能用就好,如有错误请指出。

PS1.对齐什么的懒得调了。

PS2.不适用于doc格式

#批量修改docx文件页眉

import os,zipfile,tempfile

import shutil as su

from bs4 import BeautifulSoup as bs

import codecs

#一个读取word/header1.xml的函数

#用于读取模板docx文件的页眉xml

def get_word_xml(docxpath):

with zipfile.ZipFile(docxpath) as zf:

xml_content = zf.read('word/header1.xml')

return xml_content

#解压缩docx,替换header1.xml,重新打包压缩的函数

def zipdocx(inputdocx,outputdocx,edited_xml):

#因为之后出现无法删除tmp文件夹的事故,修改了默认文件夹位置

temppath = r'your dir\temp'

tmp_dir = tempfile.mkdtemp(dir = temppath)

#获取解压缩之前的文件树状结构,方便重新压缩

zf = zipfile.ZipFile(inputdocx)

filenames = zf.namelist()

zf.extractall(tmp_dir)

#替换header1

with codecs.open(os.path.join(tmp_dir,'word/header1.xml'),'w',encoding = 'utf8') as f:

f.write(str(edited_xml))

#如果有header2,用header1替换header2

#出现header2的原因是设置了首页页眉不同,所以将两个文件内容统一即可

try:

with codecs.open(os.path.join(tmp_dir,'word/header2.xml'),'w',encoding = 'utf8') as f:

f.write(str(edited_xml))

except:

pass

#打包替换后的全部文件

zip_copy_name = outputdocx

with zipfile.ZipFile(zip_copy_name,"w") as docx:

for filename in filenames:

docx.write(os.path.join(tmp_dir,filename),filename)

#不明原因删除temp失败orz,之后手动删除。如果前面没有修改默认temp目录,可能需要重启电脑。

try:

su.rmtree(tmp_dir)

except:

pass

#输入文件夹

inputpath = r'your dir\docxfiles'

#输出文件夹

outputpath = r'your dir\output'

#作为模板的docx文件,事先改好页眉格式,本脚本只修改文字。

headerSAMPLE = r'your dir\SAMPLE.docx'

#修改内容

something = r''

#获取输入文件夹内文件列表

inputdocxfiles = os.listdir(inputpath)

for inputdocxfile in inputdocxfiles:

if inputdocxfile.endswith('.docx'):

intputdocx = os.path.join(inputpath,inputdocxfile)

outputdocxfile = inputdocxfile.rstrip('.docx') + '-edited.docx'

outputdocx = os.path.join(outputpath,outputdocxfile)

#BeautifulSoup处理xml文件,无需关心xml namespace

tree = get_word_xml(headerSAMPLE)

soup = bs(tree,'xml')

#修改‘w:t’的.string属性即可修改页眉文字

#这里将文字放置在第一个‘w:t’即可,剩下的留空

for i in range(len(headers)):

if i == 0:

soup.find_all('w:t')[i].string = something

else:

soup.find_all('w:t')[i].string = ''

#main

if __name__ == '__main__':

zipdocx(intputdocx,outputdocx,soup)

python 操作word页眉表格_Python 如何对word文档(.docx)的页眉和页脚进行编辑?相关推荐

  1. python下载图片到文件夹_python实现解析markdown文档中的图片,并且保存到本地~

    背景 前阵子简书好像说是凉了,搞得我有点小慌,毕竟我的大部分博客都是放在简书上面的,虽然简书提供了打包导出功能,但是只能导出文字,图片的话还是存在简书服务器上面,再加上我一直想要重新做一个个人博客,于 ...

  2. word中出现表格错乱 ,从别的文档里面复制过来的(或者自己建表格时)表格总是格式错乱

    解决办法:其实超级简单,你ctrl+v的时候看一下,有一个保留原格式,这个东西搞了我好久

  3. Word 2010文档自动生成目录和某页插入页码

    一.Word 2010文档自动生成目录 关于Word文档自动生成目录一直是我身边同学们最为难的地方,尤其是毕业论文,经常因为目录问题,被要求修改,而且每次修改完正文后,目录的内容和页码可能都会发生变化 ...

  4. 怎么查看计算机一共多少文档,不打开Word文档如何查看文章有几页 -电脑资料

    关于这个命题,似乎有点悬了! 当我们面对一大堆文档的时候,如果想查看一下每一篇文档到底有多少页的时候? 平时您是不是这样做的呢?一篇文档一篇文档的打开,之后通过使用插入页码的方法在文档中插入页码,之后 ...

  5. word文档怎么删除多余的空白页?

    在使用Word的过程中,总会遇到各种各样的问题,比如Word文档要怎么删除多余的空白页?如果不删除的话感觉非常别扭还影响Word文档的美观,那具体要怎么删除呢?下面我们就来瞧瞧. 空白页产生的原因一: ...

  6. 在html中怎么去除空白页,word文档里多一张空白页,如何删除?

    用过word办公软件的同行都会经常遇到,编辑word文档时会莫名其妙地多出一页空白页出来,有时想要删除却无法办到,特别是在word文档中间多一页空白页,删除后会把后页的部分内容或表格也给删掉了,很苦恼 ...

  7. Python实现Excel表格图片下载-腾讯文档收集表下载Excel表格后下载图片

    代码目的 QQ腾讯文档收集表下载本地后变成Excel表格,可是腾讯文档内的图片变成了链接,为了不手动保存图片,所以写出以下代码来实现自动保存图片. 代码原理 准备工作: python编译器 pytho ...

  8. python能做的100件事-01-python处理office文档

    文章目录 0. 环境说明 1. python处理word文档 1.1 基础操作 1.2关于基础操作的补充: 1.2.1关于Document对象: 1.2.2 关于段落属性的设置 1.2.3 样式设置 ...

  9. Python自动化办公学习- 获取文件夹下的所有文档的名字并存储到Excel

    Python自动化办公学习- 获取文件夹下的所有文档的名字并存储到Excel 这是我第一次学习使用csdn发布学习笔记,如有版权侵犯,引用不当的地方,请立即提示我,我会删除,谢谢. 笔记中如有解释错误 ...

  10. freemarker 制作word文档docx案例

    主要用于生成特定word文档,需要替换docx中的文字,书签,图片,动态表格等 本文以生成docx为例,doc文件目前有一些问题 例如图片或模板不好处理等,暂不考虑. 思路: 1)熟悉docx文件的结 ...

最新文章

  1. [转]面向GPU的多LOD因子的大规模场景可视化策略
  2. 累加器配上委托也可以很吊
  3. Android开发学习之路-让注解帮你简化代码,彻底抛弃findViewById
  4. main方法一定要放在public类当中吗?
  5. React条件渲染列表渲染
  6. 阿里纳斯Adidas广告词
  7. 串口 多个activity 安卓_一个Activity实时向另一个Activity发送消息
  8. android AsyncTask 详细例子
  9. 如何在delphi里面控制Edit只能输入数字
  10. python数据框列命名_python-按列名称处理pandas数据框值
  11. 套路(二):火星求生的经济节奏引导
  12. 宝岛探险(C语言 )(DFS+BFS)
  13. 如何用python turtle 画出奥运五环图
  14. vue.js实现单选框、复选框和下拉框
  15. 基于彩色直方图自适应检测电影镜头切换
  16. matlab矩阵生成与编辑方法
  17. 数据库,计算机网络、操作系统刷题笔记20
  18. C语言中对结构体赋初值
  19. Scala学习4之快学scala第六章习题之6.6花色枚举
  20. https证书自签名

热门文章

  1. defy+me525+android2.3.6官方镜像包,摩托罗拉 DEFY+ 2.3.7 ROM刷机包MIUI版
  2. 亲测有效win10系统QQ音乐无法安装
  3. Centos7安装字体全过程
  4. android开发日历,Android日历开发详解
  5. 四旋翼无人机PID调节(无数次实验总结经验和理论支持)
  6. (转)iPhone +ipad尺寸规范(界面 图标)
  7. TDP158RSBR 6-Gbps 转接驱动器,兼容HDMI2.0
  8. 关于Chrome的谷歌翻译和IDEA中的Translation翻译插件无法使用的解决方法
  9. 吴恩达《深度学习专项》笔记+代码实战(六):改进梯度下降算法(mini-batch, Momentum, Adam)
  10. 3DMAX导出插件编写(续)