You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XLWings将Excel文件缩印至单页并导出为PDF?

实现Excel自动缩印导出单页PDF的方案

一、XLWings 解决方案

可以直接通过XLWings调用Excel原生打印设置,实现内容自动适配单页的需求,核心是配置打印区域的缩放参数。

代码示例

import xlwings as xw

# 打开目标Excel文件
with xw.Book("你的报表文件.xlsx") as book:
    # 定位到目标工作表(示例为第一个工作表)
    sheet = book.sheets[0]
    
    # 强制内容适配1页宽度和1页高度,Excel会自动计算缩放比例
    sheet.api.PageSetup.FitToPagesWide = 1
    sheet.api.PageSetup.FitToPagesTall = 1
    
    # 导出为单页PDF
    sheet.to_pdf("单页报表输出.pdf")

关键说明

  • FitToPagesWide = 1:锁定内容宽度适配单页
  • FitToPagesTall = 1:锁定内容高度适配单页
  • 若仅需宽度适配、行数允许分页,可将FitToPagesTall设为0或False

二、其他替代方案

1. pywin32 直接操作Excel COM对象

如果XLWings环境受限,可通过pywin32直接调用Excel API,逻辑一致:

import win32com.client as win32

# 启动Excel后台进程
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False

workbook = excel.Workbooks.Open("你的报表文件.xlsx")
worksheet = workbook.Worksheets(1)

# 设置打印适配参数
worksheet.PageSetup.FitToPagesWide = 1
worksheet.PageSetup.FitToPagesTall = 1

# 导出PDF
worksheet.ExportAsFixedFormat(0, "单页报表输出.pdf")

# 清理资源
workbook.Close(SaveChanges=False)
excel.Quit()

2. 跨平台方案(openpyxl + LibreOffice)

如果需要在Windows/macOS/Linux跨平台运行,可先用openpyxl配置打印参数,再通过LibreOffice命令行导出:

  • 第一步:用openpyxl设置打印适配
from openpyxl import load_workbook

wb = load_workbook("你的报表文件.xlsx")
ws = wb.active

# 配置单页适配
ws.page_setup.fitToWidth = 1
ws.page_setup.fitToHeight = 1

wb.save("已配置打印参数的报表.xlsx")
  • 第二步:执行LibreOffice命令行导出(需提前安装LibreOffice)
libreoffice --headless --convert-to pdf --outdir ./ 已配置打印参数的报表.xlsx

注意事项

  • 若报表有固定表头,可通过sheet.api.PageSetup.PrintTitleRows = "$1:$1"设置打印标题行,避免缩印后表头丢失
  • 复杂报表可通过sheet.api.PageSetup.PrintArea = "$A$1:$Z$100"指定打印区域,也可通过动态获取数据区域的方式适配可变行数

内容的提问来源于stack exchange,提问作者MYK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:23:03