如何使用python(pywin32)更改word中表的大小

时间:2014-03-13 19:48:19

标签: python ms-word pywin32 autoformatting

ms带python的单词表

我在word表上使用 python ,我正在生成表格,但所有这些都是

自动调整窗口..

是否可以将其更改为自动适合内容?

我试过这样的事情:

table = location.Tables.Add(location,len(df)+1,len(df.columns)
table.AutoFit(AutoFitBehavior.AutoFitToContents)

但它会不断引发错误

1 个答案:

答案 0 :(得分:2)

您想要更改表创建以使用它:

//''#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

但基本上,默认行为是禁用Cell Autoofitting并使用Table Autofit to Window。第一个“1”启用Cell Autoofitting。从我上面发布的链接中,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,而Table具有函数AutoFitBehavior。  所以改变:

 table.AutoFit(AutoFitBehaviour.AutoFitToContent)

要:

table.AutoFitBehavior(1) 
//''Which we know the 1 means wd.wdAutoFitBehavior.wdAutoFitContent

希望我做对了,这可以帮助你。