
需求说明
督导检查,各条线都要收集资料。

今天去加班,遇到家教主任,她让我用保教主任的彩色打印机打印这套活跃度表格。(2023学年上学期下学期-2024学年上学期,就是202309-202504)

每个excle都是内容在A4一页竖版上

打印预览(在A4一页上)

存在问题:

但是一共有18个表格,如果我要手动一个个打开打印,容易少打(需要检查才能知道少打那一页)、错页(需要手动排序)。还要花时间关闭。
在现在这个争分夺秒补资料的时期,一个个表格打印实在是太烦了。
解决思路
前期我用星火讯飞问过excle是否可以保存PDF,代码没有运行成功。所以这次我用豆包问问excle是否可以保存PDF
问题1:excle转PDF







问题1的解决代码
'''
20250504闵豆EXCLE转pdf
豆包、阿夏
20250504
'''
import os
import win32com.client as win32
def convert_xlsx_to_pdf(xlsx_file_path, pdf_file_path):
try:
# 创建 Excel 应用程序对象
excel = win32.gencache.EnsureDispatch('Excel.Application')
# 使 Excel 应用程序可见(可选,有助于调试)
excel.Visible = True
# 打开 Excel 文件
workbook = excel.Workbooks.Open(xlsx_file_path)
# 保存所有工作表为一个 PDF
workbook.ExportAsFixedFormat(0, pdf_file_path)
# 关闭工作簿和 Excel 应用程序
workbook.Close(SaveChanges=False)
excel.Quit()
print(f"成功将 {xlsx_file_path} 转换为 {pdf_file_path}")
except Exception as e:
print(f"转换 {xlsx_file_path} 时出错: {e}")
def main():
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\EXCEL表格打印'
# 定义源文件夹路径
source_folder = path + r'\00合并'
# 定义目标文件夹路径
target_folder = path + r'\01pdf'
# 检查源文件夹是否存在
if not os.path.exists(source_folder):
print(f"源文件夹 {source_folder} 不存在。")
return
# 如果目标文件夹不存在,则创建它
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 遍历源文件夹中的所有文件
for root, dirs, files in os.walk(source_folder):
for file in files:
if file.endswith(('.xlsx', '.xls')):
xlsx_file_path = os.path.join(root, file)
pdf_file_name = os.path.splitext(file)[0] + '.pdf'
pdf_file_path = os.path.join(target_folder, pdf_file_name)
convert_xlsx_to_pdf(xlsx_file_path, pdf_file_path)
if __name__ == "__main__":
main()


五分钟就出现了excel转pdf的效果(要用win32才保留原来的格式)
问题2:缺少页眉
很快就发现这套excel没有页眉,如果要做资料,这套excle也要有“学校”的页眉
第1次尝试,豆包

'''
20250504闵豆EXCLE转pdf,加页眉
豆包、阿夏
20250504
'''
import os
import win32com.client as win32
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.units