如何使用Python (pywin32) 更改Word中表格的大小

2 投票
1 回答
2130 浏览
提问于 2025-04-17 22:12

用Python处理Word表格

我正在用Python处理Word里的表格,我生成的表格都是

自动适应窗口大小。

有没有办法把它改成自动适应内容呢?

我试过类似这样的代码:

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

但是总是出现错误。

1 个回答

3

你想要修改你的表格创建方式,使用这个:

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

希望我说的没错,这能帮到你。

撰写回答