Excel修改默认分页符(仅仅在特定行后可插入分页符)

本文介绍了一种利用Python脚本解决Excel打印时自动分页的问题。针对含有大量数据的表格,通过计算每行的高度并根据页面实际可用高度确定分页位置,确保标题行与内容行不被拆分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天帮朋友处理一个Excel打印时分页问题,因为他这个表格内容很多,一共有4万条数据,人工分页会比较困难。相信大家也经常会碰到这种需求:样例表格如下,在打印时候要保证标题行和内容行不断开。
在这里插入图片描述
经过对比,采用宏并不是很便利,最后决定用Python脚本来处理,具体代码如下:

# 导入所需模块,主要是openpyxl,该模块仅支持xlsx格式需注意
import openpyxl
from openpyxl.worksheet.pagebreak import Break
# 加载需要处理的文档,大家可根据自己情况替换掉下面地址addr
addr='C:\\Users\\Desktop\\XXx.xlsx'
wb = openpyxl.load_workbook(addr)
# 加载文档中需要处理的表格对象,这里以名字为“c”的表格为例
ws1 = wb.get_sheet_by_name("c")
# 定义两个列表,初始加入0,后面用来存储 累加的行高和分页行号
row_high= []
row_high.append(0)
breaky =[]
breaky.append(0)
# ws1.max_row为表格中最大行号,下面遍历所有行
for i in range(ws1.max_row):
# row_high存储累计行高
    row_high.append(row_high[-1]+ws1.row_dimensions[i+1].height)
# 判断第i行累计行高-上一次分页时累计行高
# 457.6是当前页面去除上下页边距后高度的磅值
# 我这里页面是A4横向(21x27),上下页边距均为2.5,剩下页面内容高度为16厘米,Excel中1厘米约为28.6磅,16x28.6=457.6
    if row_high[i+1]-row_high[breaky[-1]] >457.6 :
    # 再判断,将最接近的偶数行加入breaky列表
        if i%2==0:
            breaky.append(i)
        else :
            breaky.append(i-1)
# 从ws1.page+breaks中提取横向和纵向分页两个变量
next_page_horizon, next_page_vertical = ws1.page_breaks
# 遍历breaky列表,将分页行加入横向分页变量
for br in breaky:
    next_page_horizon.append(Break(br))
# 将更改保存到指定文件
wb.save('C:\\Users\\1Desktop\\C.xlsx')
print("转换完毕!!!")

通过以上脚本可实现在最接近每页的偶数行后插入分页符,openpyxl使用中存在一些问题,如果发现列表索引错误,可能是部分行高无法获取,格式刷将对应行刷一下就好。如果说单个表格数据量特别巨大,可能会出现保存后出现文件无法正常打开的情况,此时可以将表格分为两部分来分页。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值