Python使用win32com获取Word文档总页码/页数

Python处理Word文档,该文档除了标题之外是一个很长的表格,会随着填充内容长短变化自动换行。

试过docx库,没找到页码,整个文档的sections=1,无法得出页数。试了win32com里w.ActiveDocument.BuiltInDocumentProperties(constants.wdPropertyPages),报错提示不存在wdPropertyPages。

翻了很多网页,甚至翻到2007年的论坛,然而有的代码或许当年有效,现在已经执行不了。新的文章很多只是标题相关,或并非Python代码,或需要借助其他包。

最后终于找到一个办法,具体原理不确定,应该是先分页,后对页数进行了统计,实证运行还能用。

以下为代码,pages即总页数。经网友提醒第13行可以删除,各位可自行尝试。

import win32com
from win32com.client import Dispatch #constants也是从这里加载不过用不上

#调用word程序,不在前台显示
w = win32com.client.Dispatch("Word.Application")
w.Visible = 0
w.DisplayAlerts = 0

#打开一个word文档
doc = w.Documents.Open('C:\\Users\\XXX\\Desktop\\test.docx')

#获取总页数
w.ActiveDocument.Repaginate()
pages = w.ActiveDocument.ComputeStatistics(2)
print(pages)

#保存并关闭
doc.SaveAs('test.docx')
doc.Close()

实在找了很久,有用的话,烦请点个赞,谢谢(@^ _ ^@)~

你可能感兴趣的:(干货TIPs,python)