如何使用xlwings.to_pdf将Excel表格以横向模式导出为PDF
xlwings导出PDF设置横向页面的实现方案
该需求完全可以实现。
xlwings自带的to_pdf方法本身没有暴露页面方向配置参数,且默认不会主动读取工作表内提前保存的打印预设,这就是你提前在表格里配置了横向却不生效的原因。只要在导出前通过xlwings开放的底层Excel接口显式设置页面方向,就能导出横向排版的PDF。
具体操作方法
核心是通过工作表对象的api属性调用Excel原生的PageSetup接口,在导出前指定方向参数:
- 横向对应的参数值为
2(对应Excel常量xlLandscape) - 纵向对应的参数值为
1(对应Excel常量xlPortrait)
基础实现代码
import xlwings as xw # 打开目标工作簿,定位要导出的工作表 wb = xw.Book(r"你的Excel文件绝对路径.xlsx") ws = wb.sheets["需要导出的工作表名称"] # 导出前显式设置页面为横向 ws.api.PageSetup.Orientation = 2 # 执行PDF导出 ws.to_pdf(r"导出PDF的保存路径.pdf") # 操作完成后关闭工作簿 wb.close()
可选优化配置
如果设置横向后出现内容被缩放、列被拆分到多页的问题,可以追加以下页面适配配置,保证排版符合预期:
# 关闭默认百分比缩放,改用按页面尺寸适配 ws.api.PageSetup.Zoom = False # 所有列强制适配到1页宽度 ws.api.PageSetup.FitToPagesWide = 1 # 高度不做强制限制,内容超过一页时自动分页 ws.api.PageSetup.FitToPagesTall = 0
避免修改原文件配置的写法
如果不想改动原Excel文件里保存的打印设置,可以提前记录原有方向参数,导出完成后还原即可:
# 记录原页面方向配置 original_orient = ws.api.PageSetup.Orientation # 设置横向并导出 ws.api.PageSetup.Orientation = 2 ws.to_pdf(r"导出PDF的保存路径.pdf") # 还原原配置后关闭文件 ws.api.PageSetup.Orientation = original_orient wb.close(save=True)
内容的提问来源于stack exchange,提问作者geoffreyphipps
相关产品推荐
相关产品推荐

