如何使用Python (pywin32) 更改Word中表格的大小
用Python处理Word表格
我正在用Python处理Word里的表格,我生成的表格都是
自动适应窗口大小。
有没有办法把它改成自动适应内容呢?
我试过类似这样的代码:
table = location.Tables.Add(location,len(df)+1,len(df.columns)
table.AutoFit(AutoFitBehavior.AutoFitToContents)
但是总是出现错误。
1 个回答
你想要修改你的表格创建方式,使用这个:
//''#Add two ones after your columns
table = location.Tables.Add(location,len(df)+1,len(df.columns),1,1)
关于为什么需要这些变量的信息可以在这里查看:
http://msdn.microsoft.com/en-us/library/office/ff845710(v=office.15).aspx
简单来说,默认的设置是关闭单元格自动调整大小,并使用表格自动适应窗口。第一个“1”是用来开启单元格自动调整的。从我上面提供的链接中,DefaultTableBehavior可以是 wdWord8TableBehavior
(自动调整关闭 - 默认)或者 wdWord9TableBehavior
(自动调整开启)。这个数字是通过打开Word的VBA编辑器,在即时窗口中输入以下内容得到的:
?Word.wdWord9TableBehavior
接下来,从链接中,我们看到另一个选项叫做 AutoFitBehavior
。它的定义是:
设置Word调整表格大小的自动调整规则。可以是
WdAutoFitBehavior
常量之一。
所以现在我们又有一个术语需要查找。在VBA编辑器的即时窗口再次输入:
?Word.wdAutoFitBehavior.
在最后一个点后,可能的选项应该会出现。这些选项包括:
- wdAutoFitContent
- wdAutoFitFixed
- wdAutoFitWindow
AutoFitContent
看起来是我们想要的选项,所以让我们把之前的那行代码完成:
?Word.wdAutoFitBehavior.wdAutoFitContent
结果将是一个“1”。
你可能会问,为什么我们要费这么大劲去找这些值的数字表示。从我使用pywin32和Excel的经验来看,大多数时候你无法从字符串中获取内置值。但是输入数字表示法同样有效。
另外,你的代码可能失败的另一个原因是,表格对象可能没有“Autofit”这个功能。
我使用的是Word 2007,表格有这个功能 AutoFitBehavior
。所以要把:
table.AutoFit(AutoFitBehaviour.AutoFitToContent)
改为:
table.AutoFitBehavior(1)
//''Which we know the 1 means wd.wdAutoFitBehavior.wdAutoFitContent
希望我说的没错,这能帮到你。