前言
前不久在做一个python数据自动化处理的项目, 要求从excel表格提取有用数据并整理到word表格中去。用docx库处理word时, 我突然发现他居然不支持代码补全 !!!
解决过程
我在网上找了一些方法, 但大都是修改Pycharm设置重新添加索引,相对来说较为繁琐。后来我自己分析了一下docx模块的源码,发现居然是变量类型不同的锅 !
一般来说, 由于我们导入Document对象都是这种方式:
from docx import Document
document = Document()
跳转源代码后,发现Document定义在 "docx.api" 这个模块中, 但它本身不是类, 自然也就没有定义其他方法:
很明显, Document类的方法必然是定义在了其他文件中。于是在docx的目录下,我找到了document.py:

我们会发现在这个文件中定义了一个Document类, 并且类中定义了所有我们要用的方法, 看来这就是我们要找的类了 !
解决方法
将我们要用的document变量重新声明类型, 同时使用docx.document.Document对象来指代我们导入的Document对象就行了:
import docx.document
from docx import Document
# 对document的类型进行声明
document: docx.document.Document = Document()

搞定, 这下我们就成功启动代码自动补全功能了 !
有关docx模块创建的表格无法修改宽度的问题, 在这篇博客里有解决方法了: