背景需求:
之前做了优化过的点名册
【办公类-54-07】20250901 2025学年第一学期班级点名册模版(双休国定假涂成灰色、修改标题和页眉,批量导出PDF)-CSDN博客文章浏览阅读984次,点赞27次,收藏29次。【办公类-54-07】20250901 202学年第一学期班级点名册模版(双休国定假涂成灰色、修改标题和页眉,批量导出PDF)https://blog.csdn.net/reasonsummer/article/details/149070124?spm=1011.2415.3001.5331
但是最后收集的名单Excel与之前的名单Excel有不同,之前是安三个年龄段收集的三个表。名字从第4行开始,直接填写性别总人数
本次是所有年龄段都写在一起,名字从第二行开始,有园区、性别
两个Excel的信息提取位置不同,所以要重新修改代码
代码
'''
上学期点名册批量(灰色)
1、修改原始模版,更改年月、标题、页眉
2、读取所有的EXCEL,批量制作EXCEL多月
3、每页标题包含园区)
3、转成PDF,便于打印
deepseek、阿夏
20250808
'''
import openpyxl
from openpyxl.styles import PatternFill
from datetime import datetime, timedelta
import win32com.client
import xlwings as xw # 新增导入xlwings
import time, os# 第一部分:生成点名表Excel文件
day = '2025年9月'
title1 = '2025学年第一学期'
# title2 = '上海市闵行区XXXX幼儿园(XXX园区)'
title2 = '上海市闵行区XXX幼儿园'
# names = 'XX'
names = 'XX'def excel_to_pdf(input_file):# 创建PDF输出路径pdf_file = os.path.splitext(input_file)[0] + '.pdf'# 使用win32com转换Excel到PDFexcel = win32com.client.Dispatch("Excel.Application")excel.Visible = Falsetry:# 打开工作簿wb = excel.Workbooks.Open(input_file)# 设置打印属性for ws in wb.Worksheets:ws.PageSetup.Orientation = 1 # 1=横向, 2=纵向ws.PageSetup.Zoom = Falsews.PageSetup.FitToPagesTall = 1ws.PageSetup.FitToPagesWide = 1ws.PageSetup.CenterHorizontally = Truews.PageSetup.CenterVertically = Truews.PageSetup.LeftMargin = excel.CentimetersToPoints(1)ws.PageSetup.RightMargin = excel.CentimetersToPoints(1)ws.PageSetup.TopMargin = excel.CentimetersToPoints(1)ws.PageSetup.BottomMargin = excel.CentimetersToPoints(1)ws.PageSetup.HeaderMargin = excel.CentimetersToPoints(0.5)ws.PageSetup.FooterMargin = excel.CentimetersToPoints(0.5)# 导出为PDFwb.ExportAsFixedFormat(0, pdf_file, 1, 0) # 0=PDF格式, 1=整个工作簿print(f"成功转换为PDF: {pdf_file}")except Exception as e:print(f"转换失败: {e}")finally:# 关闭工作簿和应用wb.Close(False)excel.Quit()# 使用xlwings设置页眉页脚
def set_header_footer(excel_file, title2):# 启动Excel应用app = xw.App(visible=False)wb = app.books.open(excel_file)try:# 遍历所有工作表for sheet in wb.sheets:# 设置居中页眉sheet.api.PageSetup.CenterHeader = title2# 设置页脚(可选)# sheet.api.PageSetup.CenterFooter = f'第 &P 页,共 &N 页' # 页码格式# 保存更改wb.save()except Exception as e:print(f"设置页眉页脚失败: {e}")finally:# 关闭工作簿和应用wb.close()app.quit()path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250902开学点名册批量制作\00上学期名单'# 打开名单
w