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

使用Python+comtypes实现Excel单元格自动列宽后导出PDF的问题求助

Excel转PDF自动调整单元格+提速解决方案

以下是调整后的完整可用代码:

import os
import comtypes.client
import gc

SOURCE_DIR = './'
TARGET_DIR = './'

app = comtypes.client.CreateObject('Excel.Application')
app.Visible = False
app.DisplayAlerts = False
# 关闭屏幕刷新,大幅降低后台渲染耗时
app.ScreenUpdating = False

infile = os.path.join(os.path.abspath(SOURCE_DIR), 'test.xlsx')
outfile = os.path.join(os.path.abspath(TARGET_DIR), 'test.pdf')

doc = app.Workbooks.Open(infile)
worksheet = doc.Sheets[1]
worksheet.PageSetup.Orientation = 2

# 自动适配已使用区域的行高和列宽
worksheet.UsedRange.EntireRow.AutoFit()
worksheet.UsedRange.EntireColumn.AutoFit()

doc.ExportAsFixedFormat(0, outfile, 1, 0)
# 明确指定不保存修改,不会改动原始Excel文件
doc.Close(SaveChanges=False)

# 手动释放COM对象,避免Excel进程后台残留
del doc
app.Quit()
del app
gc.collect()

调整说明

  • 自动调整单元格实现:通过UsedRange精准定位工作表内有内容的区域,分别调用行、列的自动适配方法,不会处理无内容的空白单元格,不会额外增加耗时。
  • 运行速度优化:
    • 原代码运行慢和未保存文档无关,未保存修改不会影响运行效率,反而主动保存会增加额外磁盘写入耗时,上述代码明确不保存修改,不会改动原始文件。
    • 新增屏幕刷新关闭配置,是Excel自动化操作的标准提速手段,可减少不必要的后台渲染开销。
    • 新增COM对象释放和垃圾回收逻辑,避免Excel进程残留在后台占用系统资源,导致后续运行速度变慢。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:36:04