python 学习笔记20 批量修改页眉页脚

这篇具有很好参考价值的文章主要介绍了python 学习笔记20 批量修改页眉页脚。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:修改指定目录下所有文件的页眉页脚,或者往里面添加内容。

1. 这里做了word的实现和excel的实现,如下:

需要先安装 pip3 install pywin32,另外页眉页脚格式设置可以参考:

word:

浅谈Word.Application,关于js操作word文档的使用_new word.application-CSDN博客

excel:

Python操作Excel教程(图文教程,超详细)Python xlwings模块详解,_xlwings教程-CSDN博客

import os
import xlwings as xw
import win32com.client as win32
import pythoncom

#将需要替换页眉页脚的文档放到path下
path = r'C:\Users\d\Desktop\pdf改名脚本\22\2022年\test'
#原始页眉页脚内容
old_name = u'999'
#新页眉页脚内容
new_name = u'888'
#替换失败记录日志
err_log = path + u'\\head修改出错列表.txt'
def log(text):
    with open( err_log,"a+" ) as f:
        f.write(text)
        f.write('\n')

def change_headerfooter(path):
    ''' 更改文件的页眉页脚 '''
    pythoncom.CoInitialize()
    word = win32.Dispatch('Word.Application')
    #print(dir(word))
    word.Visible = 0
    word.DisplayAlerts = 0

    exapp = xw.App(visible=False, add_book=False)

    # excel = win32.Dispatch('Excel.Application')
    # excel.Visible = 0
    # excel.DisplayAlerts = 0
    for parent, dirnames, filenames in os.walk(path):
        for fn in filenames:
            filedir = os.path.join(parent, fn)
            #获取需替换目录下的docx结尾的文档名称
            if fn.endswith('.docx') or fn.endswith('.doc'):
                print(filedir)
                try:
                    doc = word.Documents.Open( filedir )
                    a = word.ActiveDocument.Sections
                    n = 0
                    for i in range( len(a) ):
                    	#获取当前页眉
                        head = word.ActiveDocument.Sections[i].Headers[0]
                        old_head = str(head)
                        #获取当前页脚
                        foot = word.ActiveDocument.Sections[i].Footers[0]
                        old_foot = str(foot)
                        #print( old_head )
                        #if old_name in old_head:
                        if 1:
                        	#old_name存在页眉中时,进行进行替换
                            #用于替换页眉
                            #new_head = old_head.replace( old_name, new_name )
                            #用于补充页眉
                            #new_head = old_head + new_name
                            #print( new_head )
                            word.ActiveDocument.Sections[i].Headers[0].Range.Find.ClearFormatting()
                            word.ActiveDocument.Sections[i].Headers[0].Range.Find.Replacement.ClearFormatting()
                            #页眉重置
                            word.ActiveDocument.Sections[i].Headers[0].Range.Delete()
                            #设置字体大小
                            word.ActiveDocument.Sections[i].Headers[0].Range.Font.Size=20
                            #设置对齐方式,0-左;1-中;2-右
                            word.ActiveDocument.Sections[i].Headers[0].Range.ParagraphFormat.Alignment = 0

                            word.ActiveDocument.Sections[i].Headers[0].Range.InsertAfter(new_name)
                            #替换旧页眉
                            #word.ActiveDocument.Sections[i].Headers[0].Range.Find.Execute( old_head, False, False, False, False, False, False, 1, False, new_name, 2 )

                        #if old_name in old_foot:
                        if 1:
                        	##old_name存在页脚中时,进行进行替换
                            #new_foot = old_foot.replace( old_name, new_name )
                            #new_foot = old_foot + new_name
                            word.ActiveDocument.Sections[i].Footers[0].Range.Find.ClearFormatting()
                            word.ActiveDocument.Sections[i].Footers[0].Range.Find.Replacement.ClearFormatting()
                            #页脚重置
                            word.ActiveDocument.Sections[i].Footers[0].Range.Delete()
                            word.ActiveDocument.Sections[i].Footers[0].Range.InsertAfter(new_name)
                            #替换旧页脚
                            #word.ActiveDocument.Sections[i].Footers[0].Range.Find.Execute( old_foot, False, False, False, False, False, False, 1, False, new_name, 2 )
                        n = n+1
                    doc.Close()
                except Exception as e:
                    print(e)
                    log(str(filedir))

            if fn.endswith('.xlsx') or fn.endswith('.xls'):
                print(filedir)
                try:
                    ex = exapp.books.open(filedir)
                    #print(dir(ex.sheets))
                    sheet = ex.sheets
                    print(sheet[0].name)
                    if 'test' == sheet[0].name:
                            print(sheet.name)
                    else:
                            #如果第一个sheet不是test则加一个test的sheet
                            sheet.add('test',before=sheet[0].name)

                    ex.save()
                    ex.close()

                except Exception as e:
                    log(str(filedir))
    word.Quit()
    exapp.quit()

change_headerfooter(path)

补充一下:excel没有用pywin32去读写因为莫名其妙就是卡进程,无法对excel读写,可能和缓存的excel有关,如要编辑3.xlsx,则会卡一个~3.xlsx的进程无法结束。就换成了xlwings去读写。文章来源地址https://www.toymoban.com/news/detail-759021.html

到了这里,关于python 学习笔记20 批量修改页眉页脚的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 在PDF中插入页眉、页脚

    在处理PDF文档时,有时需要为文档中的每一页添加页眉和页脚,以包含一些有用的信息,如文档标题、章节名称、日期、页码等。对于需要自动化处理的场景,或者需要在大量文档中添加一致的页眉和页脚,可以通过编程的方式来实现。本文将介绍如何使用Java为PDF文件添加页

    2024年03月25日
    浏览(34)
  • 使用FreeMarker生成word文件自定义每页页眉或页脚

    最新工作中遇到生成word中表格时,要求文档中每页头部和底部都是固定格式的表格,但是内容不一样,头部信息在word中画样式的时候就可以设置为“在各页顶端以标题形式重复出现”,而底部就没有办法这样设置了,之后就想着在眉脚中设置相应的样式就可以啦,但是发现

    2024年02月16日
    浏览(81)
  • 【vue2】中 谷歌 Chrome 实现自定义页眉页脚打印

    解决的最终方案如下图  需求:页眉页脚如下,设计图所示,使用浏览器Ctrl+P打印即可,大小B5试纸 说明:数据内容不确定分页的情况下,建议使用 方法二 相关属性参考地址:https://www.w3cplus.com/css/designing-for-print-with-css.html 方法一:绝对相对定位(将自定义的页眉页脚内容通

    2024年02月12日
    浏览(63)
  • 开源Word文字替换小工具更新 增加文档页眉和页脚替换功能

    ITGeeker技术奇客发布的开源Word文字替换小工具更新到v1.0.1.0版本啦,现已支持Office Word文档页眉和页脚的替换。 同时ITGeeker技术奇客修复了v1.0.0.0版本因替换数字引起的in ‘ requires string as left operand, not int错误。 开源Word文字替换小工具官方介绍页面:https://www.itgeeker.net/itgeeke

    2024年02月11日
    浏览(40)
  • itextpdf7 使用之 html转pdf,生成目录可跳转、添加页眉页脚

    最近有个需求,生成信用报告。 需求: 1、生成pdf有页眉页脚 2、生成目录 3、目录加锚点可跳转。 难点: 1、生成的目录不能实时读取页码 2、目录是后生成的,属于两份pdf拼接的,不能添加锚点跳转 思路: 1、freemaker进行html页面布局及动态变量替换 2、生成一份pdf文档,用

    2024年02月20日
    浏览(35)
  • Altium20版本快速批量修改Comment使之与Value相同

    在生成BOM表的时候,一般按照comment进行分类,而默认的是一类器件就是一个comment,例如原理图中用res1表示电阻。即使在BOM表中添加了Value一栏,也会给后续的焊接工作带来麻烦(无法按照BOM表去焊接,只能再去看原理图)。因此,设计的时候Comment的值一般是Value值,在AD20版

    2024年02月11日
    浏览(43)
  • 【Mquant】9:python批量铭刻erc-20铭文

    ETHS铭文是以太坊铭文协议Ethscriptions的代币名称。Ethscriptions是一个基于以太坊的铭文协议,允许用户在以太坊主网上刻入不同类型的文件,并将其记录到区块中。ETHS作为Ethscriptions的第一个\\\"概念币\\\",引起了人们的关注和热议。 以太坊铭文协议Ethscriptions的特点包括: 使用交易

    2024年02月04日
    浏览(49)
  • 使用Python批量修改文件名称

    下载了一些图片,想要更改其文件的名称。 试了许多方法,都不太理想。 于是想到了使用Python来实现。 需要用到的模块及函数: rename() 函数用于改变文件或文件夹的名称。它接受两个参数:原文件名和新文件名。 os.listdir(‘路径’)函数用于返回给定路径下的文件名称列表

    2024年02月15日
    浏览(45)
  • python批量处理修改pdf内容

      将PDF转换为Word: 使用pdf2docx库中的Converter类来进行PDF转换。 convert_pdf_to_docx 函数接受PDF文件路径和输出的Word文档路径作为参数。 通过调用Converter对象的 convert 方法将PDF转换为Docx格式。 最后调用 close 方法关闭Converter对象并保存转换后的文档。 将Word转换为Excel: 使用docx库

    2024年01月25日
    浏览(59)
  • 【Python实用技巧】如何批量修改歌曲信息

    1 背景 最近朋友说有个问题比较苦恼,手里有一批歌曲文件要整理归档,但是很多歌曲文件的属性信息不全,手动点开文件属性一个个进行修改太折磨人了。有没什么办法可以批量进行修改? 朋友有难,自然是要赴汤蹈火的,当时就夸下了海口,放心包在我身上,一定帮你找

    2024年02月09日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包