自动调整整个表格行高
发布:小编
学习了一段时间的python了,第一次用来解决现实问题。代码使用需要修改部分代码才能实现功能。后期再完善吧!
#功能:自动调整表格行高到铺满每一页纸张,让中间的页面不出现大面积空白地带!# 最近这年把,接到的调整表格打印格式的任务有点多,每次的表格动不动就几十上百页,每次都调一大晚上,眼睛都快瞎了。# 我实在是不能忍,WPS又没有自带这个功能,用VBA应该比较简单。但是最近在学Python,好吧,就它了,开干!# 缺点就是需要部署环境:Python3.X,安装xlwings模块。# 2022-4-7至2022-4-9,花了我三天时间,终于实现了基本功能,实例应用的时候需要修改部分代码,# 这个后面再完善喽,搞成适应于所有实例的代码,给它干到VBA里面去。#=========================================思路===============================================================# '''第一步,设置纸张方向、规格等,设置页边距# 第二步,代码上场;设置纸张类型、页边距# 第三步,自适应行高;表头栏及之前行自适应行高后+X# 第四步,获取表头栏行高之和# 第五步,从第一行开始计算行高,直到行高之和大于纸张高度减去上下页边距之和(返回值Y)# 第六步,调整第一页行高,第一页行高,表头栏及之前行高不调整,剩下的行高调整到自适应行高+(Y-表头栏及之前行高之和)/剩下的行数# 第七步,调整第二页及之后的行高,表头栏不调整,调整方法参照第六步'''#PS:循环开始前限制循环在第一行至最后一栏数据行,先获取最后一行行号import xlwings as xw #导入Xlwigns模块#======================================自定义函数区==========================================================Unit_cOnv= 0.03527 #单位换算,1磅=0.03527厘米#1.纸张规格,输入纸张大小及方向确定纸张高度(单位:磅)def paper_specifications(paper_size = "A4", paper_direction = "shu"): paper = {"A0":(841, 1189), "A1":(594, 841), "A2":(420, 594), "A3":(297, 420), "A4":(210, 297)} paper1 = paper[paper_size] if paper_direction == "shu": paper_height = paper1[1]/(10*Unit_conv) else: paper_height = paper1[0]/(10*Unit_conv) return(paper_height)#2.表头及之前行高调整并返回相应值,输入表头行号def title_h(rg_title_row): t_height_sum = 0 i = 1 while i <= rg_title_row: st.cells(i,1).rows.autofit() st.cells(i,1).row_height = st.cells(i,1).row_height + 15 t_height_sum = t_height_sum + st.cells(i,1).row_height #表头及之前行高之和 i += 1 rg_title_rh = st.cells(rg_title_row,1).row_height #表头行高 return([t_height_sum, rg_title_rh]) #3.累加行高之和直至超出页面,输入表头高度、上下页边距、开始行号、最后行号、缩放比例、纸张高度,返回当前页最后一行行号以及每行需要增加的行高值def ad_page(rg_title_rh, page_up, page_down, rg_row, rg_lastrow, zoom, paper_height): ts = 0 i = rg_row while i <= rg_lastrow: st.cells(i,1).rows.autofit() ts = ts + st.cells(i,1).row_height if ((rg_title_rh+ts)*zoom + page_up + page_down) >= paper_height: break i += 1 r = i - 1 ts1 = 0 n = rg_row while n <= r: ts1 = ts1+st.cells(n,1).row_height n += 1 rx = paper_height - ((rg_title_rh+ts1)*zoom + page_up + page_down) rv = rx/(r - rg_row + 1) return([r, rv])#=====================================参数输入区====================================================================rg_title_row = int(input("请输入表头行号:"))page_up = float(input("请输入上页边距(厘米):"))/Unit_conv #单位:磅page_down = float(input("请输入下页边距(厘米):"))/Unit_conv #单位:磅zoom = float(input("请输入缩放比例:")) #在0——1之间取值#打开表格并获取最后一行数据行号app = xw.App(visible=True, add_book=False)wb = app.books.open(r'G:\desktop\rowheight_test.xlsx') #工作表路径,,实例中需要手动修改代码st = wb.sheets("城南街道") #工作表选择,实例中需要手动修改代码rg_lastrow = st.used_range.last_cell.row #获取表格最后一栏数据st.api.PageSetup.Zoom = zoom*100 #设置打印页面缩放比例print_title = '$' + str(rg_title_row) + ':$' + str(rg_title_row)st.api.PageSetup.PrintTitleRows = print_title #设置打印标题栏(表头)#====================================开工吧!小代码!!!====================================================================a = paper_specifications(paper_size="A4", paper_direction="heng") #获取纸质规格并存在变量a内b = title_h(rg_title_row) #调整表头栏及之前栏目的行高并存储行高值在列表b内#调整第一页c = ad_page(b[0], page_up, page_down, rg_title_row + 1, rg_lastrow, zoom, a)i = rg_title_row + 1while i <= c[0]: st.cells(i, 1).row_height = st.cells(i, 1).row_height + c[1]/zoom #从rv是缩小比列之后的增加量,需要放大到缩小前增加量,除以缩放比列 i += 1#调整其它页面,每页包含表头r = c[0] + 1while r <= rg_lastrow: c1 = ad_page(b[1], page_up, page_down, r , rg_lastrow, zoom, a) n = r while n <= c1[0]: st.cells(n, 1).row_height = st.cells(n, 1).row_height + c1[1]/zoom #rv是缩小比列之后的增加量,需要放大到缩小前增加量,除以缩放比列 n += 1 r = nwb.save()app.quit()
版权声明:本文来自用户投稿,不代表【百发生活】立场,本平台所发表的文章、图片属于原权利人所有,因客观原因,或会存在不当使用的情况,非恶意侵犯原权利人相关权益,敬请相关权利人谅解并与我们联系(邮箱:)我们将及时处理,共同维护良好的网络创作环境。
大家都在看
-
vivo手机的一些隐藏实用功能
数码极客vivo手机算是后来居上的典范,现在在手机的地位也算是处在比较高的位置,所以用户量也很大,下面就一起来看看这些你可能不知道的vivo隐藏功能。1、网络权限很多软件习惯在后台偷跑进程,不但浪费电量还浪费流量,真的很气人。选择设置一下网络权限,不给它们后台运行的机会就能解决。操作步骤
-
干货cad制图大神总结的经验大全
数码极客前言大家好,我是林总,今天我们一起来看下CAD制图有那些知识点,下面我们一起来了解一下!正文一、基础部分在图形表达时,如果没有特殊说明,均以毫米为单位。光滑度确定:工具→选项→显示-圆弧和圆的平滑度 为20000(注:最大值)。右键功能取消:工具→选项→用户系统配置→绘图区域中显
-
word最实用的几个技巧一看就会
数码极客高效的办公技巧是我们每个人都希望掌握的,但有很多实用技巧却被忽略了,今天给大家推荐5个实用但鲜为人知的技巧。1、将经常使用的文档固定在“最近使用的文档”位置有的文档是我们需要经常打开的,如果打开其他一些文档,新的文档会覆盖旧的文档,这样查找之前的文档就会比较麻烦,这时就可以通过固
-
wps自带公文模板最新,wps公文模板
数码极客IT之家 10 月 14 日消息,今日,金山办公宣布正式发布 WPS 公文版。金山办公表示,WPS 公文版面向党政机关用户,在 WPS 专业版的基础上,提供公文模式、公文模板、公文转换等辅助功能。据介绍,WPS 公文版拥有四大核心亮点,包括国标规范更智能、跑版“零容忍”、“全能”
-
igame geforce rtx 4060 ti
数码极客笔者作为一个 ITX 爱好者,每个月都要装一台 ITX 主机玩玩。在 RTX 40 系列显卡还没发布的时候,市面上能选到的最好的单风扇显卡 iGame GeForce RTX 3060 Ti Mini 了。而在 RTX 40 系列显卡发布之际,笔者就觉得今年单风扇显卡大有可为。因
-
手机的plus pro max都是什么意思
数码极客关注智能手机的朋友应该都知道,目前各个手机品牌在推出某款机型的时候,往往发布的都不止一款,比如iPhone13、iPhone13 Pro、iPhone13 Pro Max;国内品牌亦是如此,比如小米12、小米12 Pro、小米12S等等。看到这不仅有很多人产生疑问,这些后缀究竟代
-
vip自动续费在哪里取消,各个平台怎样关闭vip续费功能
数码极客致像我一样心大的男孩女孩的一封信如果你喜欢用一些软件看剧,听歌或者干其他的,一定要注意「是否自动续费」我5天内被扣了30块钱,就因为「没取消」自动续费!!!这是爱奇艺会员的自动续费[虎]这是芒果会员的自动续费我也不知道自己怎么开通的自动续费,可能是话费套餐里送的VIP导致的(这我
-
流程图软件有哪些,流程图最好用的软件
数码极客流程图软件有哪些?流程图软件是一种帮助用户创建流程图和图表的工具。它们通常用于描述工作流程、组织结构、数据流或其他类型的流程。这些软件可以帮助用户更好地理解和展示复杂的信息和流程,从而提高工作的效率和质量。以下是一些常见的流程图软件:Microsoft Visio 是一款流程图软
-
笔记本电脑字体大小怎么设置
数码极客以下是在Windows 10操作系统中设置笔记本电脑字体大小的步骤:1. 打开“设置”菜单。您可以在Windows任务栏上找到设置图标,也可以使用Windows键 + I快捷键打开设置菜单。2. 在设置菜单中,单击“系统”。3. 在“系统”菜单中,单击“显示”。4. 在“显示”选
-
word如何快速排版页眉,word横版竖版页眉如何不干扰
数码极客Hello大家好,我是帮帮。今天跟大家分享一下word长文档不同页眉设置技巧,排版布局快手操作,打印应用不加班。有个好消息!为了方便大家更快的掌握技巧,寻找捷径。请大家点击文章末尾的“了解更多”,在里面找到并关注我,里面有海量各类模板素材免费下载,我等着你噢^^<——非常重
-
pdf怎么删除页面?几个步骤轻松搞定
数码极客PDF怎么删除页面呢?人们经常使用PDF文件。当我们浏览一个PDF文件的时候,发现有一页的内容不符合要求或者没有必要。想删除应该怎么做?大家都知道PDF文件不能直接上编辑,那么我们可以用什么手段删除文件的页面呢?今天就和大家分享一个删除PDF文件页面的方法。有兴趣的小伙伴们快来学
-
photoshop最好的版本是哪个
数码极客为大家区分一下,Photoshop带CC和不带CC的区别:Photoshop私信小编PS,即可获得软件安装包。图像处理、编辑、通道、图层、路径综合运用;图像色彩的校正;各种特效滤镜的使用;特效字的制作;图像输出与优化等,灵活运用图层风格,流体变形及褪底和蒙板,制作出千变万化的图像