昨天帮朋友处理一个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.6if 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使用中存在一些问题,如果发现列表索引错误,可能是部分行高无法获取,格式刷将对应行刷一下就好。如果说单个表格数据量特别巨大,可能会出现保存后出现文件无法正常打开的情况,此时可以将表格分为两部分来分页。

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

  1. excel修改默认字体

    1.文件 -- 更多 -- 选项 2.常规 -- 新建工作簿时,设置自己喜欢的字体,然后点击确定 3.在如下文件件中:C:\Program Files\Microsoft Office\root\Of ...

  2. python修改xpath节点_Xpath python在特定文本后查找节点

    这里是HTML代码: Specific text 1 link1 inside specific text 1 link2 inside specific text 1 link3 inside sp ...

  3. elementui分页组件按钮样式修改_Vue使用Elementui修改默认最快方法!

    相信大家都需要过,在Vue中使用Elementui的时候,遇到最多也最蛋疼的问题就是修改默认样式,接下来直奔主题: // template :text-inside="true" ...

  4. 像 word 手动插入分页符一样实现报表中强制分页(强制分页)

    ### 概述 – 使用 Word 编辑文档,当文本或图形等内容填满一页时,Word 会插入一个自动分页符并开始新的一页.如果要在某个特定位置强制分页,可手动插入分页符(分隔符内),这样可以确保章节标题 ...

  5. 怎么在计算机上安装wps,电脑安装WPS Office中的excel作为默认打开程序几种方法

    电脑上安装Office2010 和WPS软件,但是默认打开方式为wps,如何改成excel为默认打开方式?今天小编为大家介绍三种方法. 方法一:通过wps配置文件来设置 1.点击电脑左下角的windo ...

  6. [置顶] 给Fedora修改默认的软件下载源

    (转载请注明:http://www.wypblog.com/archives/124,请不要用于商业目的.) Fedora安装完毕之后最头疼的问题就是软件更新,因为Fedora默认的更新源服务器是在国 ...

  7. linux centos7修改默认启动的内核(升级及切换内核)

    修改默认启动的内核步骤 uname -r # 查看当前内核版本cat /boot/grub2/grub.cfg |grep "menuentry " # 查看所有可用内核grub2 ...

  8. Python中的openpyxl如何对excel修改文件

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) Python安装o ...

  9. linux修改默认python版本_将Linux下python默认版本切换成替代版本

    当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.你可以按照以下方法使用 ls 命令来查看你的系 ...

  10. bootstraptable 怎么在特定行添加数据_手把手教你做一个“渣”数据师,用Python代替老情人Excel...

    大数据文摘出品 来源:medium 编译:张大笔茹 十年前,你说你是做数据的,大家的反应就是 -- 用 Excel 做做表. 现在,要成为一个合格的数据分析师,你说你不会 Python,大概率会被江湖 ...

最新文章

  1. php 百度逆地理编码,百度逆地址解析
  2. swd脱机烧录器及上位机源码_通用上位机框架HwLib.Automation(C#)
  3. 一文搞懂MySQL-8.0 redo优化
  4. python多因子量化选股模型_量化新兵第十步:多因子选股模型
  5. Python在SQL Server管理中的重要性
  6. 019-Spring Boot 日志
  7. 【生活相关】三(米新江老师语录)
  8. 域猫(域名分享平台)
  9. 3DGIS地理信息系统设计方案
  10. select *和select 字段名
  11. MATLAB的.fig文件打不开——有效解决
  12. javax.validation.Validation使用方法
  13. 另辟蹊径,挑战网络战争
  14. 为什么世界上只有13个根域名服务器
  15. android+判断wifi+5g,Android判断wifi是5G还是2.4G
  16. activiti的initiator用法
  17. 车牌识别之二:字符分割
  18. 安装指定版本Kubernetes
  19. mysql导出备份、导入恢复以及迁移(适用虚拟主机)
  20. 计算机博士 英语词汇,2017考博英语词汇

热门文章

  1. win10计算器rsh_win10 自带计算器快捷键有哪些_windows10计算器快捷键汇总
  2. Redis源码分析01——基本数据结构
  3. PLSQL入门与精通(第56章:用PLSQL读写文件)
  4. 四叉树空间索引原理及其实现
  5. 支持向量机原理与高斯核函数
  6. JavaScript 设计模式核核心原理与应⽤实践(一)原则于核心思想
  7. 【清明专刊】悼念逝去老友司徒正美,致敬曾改变世界的Flash
  8. 国际区块链专利:中国蚂蚁、平安、腾讯、复杂美位列前十
  9. 音乐节拍自动标记插件 BeatEdit
  10. 微信小程序展示弹窗的方式